diff --git a/.env.dev b/.env.dev index 390e34774..f48e6b915 100644 --- a/.env.dev +++ b/.env.dev @@ -16,7 +16,7 @@ GROVE_PORTAL_STAGING_ETH_MAINNET=https://eth-mainnet.rpc.grove.town # The "protocol" field here instructs the Grove gateway which network to use JSON_RPC_DATA_ETH_BLOCK_HEIGHT='{"protocol": "shannon-testnet","jsonrpc":"2.0","id":"0","method":"eth_blockNumber", "params": []}' -# On-chain module account addresses. Search for `func TestModuleAddress` in the +# Onchain module account addresses. Search for `func TestModuleAddress` in the # codebase to get an understanding of how we got these values. APPLICATION_MODULE_ADDRESS=pokt1rl3gjgzexmplmds3tq3r3yk84zlwdl6djzgsvm SUPPLIER_MODULE_ADDRESS=pokt1j40dzzmn6cn9kxku7a5tjnud6hv37vesr5ccaa diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index dba8e6fea..f387c62d7 100644 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -1,26 +1,15 @@ - - ## Summary - +< One line summary> -## Issue +Changes: +- < Change 1 > +- < Change 2 > - +## Issue -- #{ISSUE_NUMBER} +- Description: < Description > +- Issue: #{ISSUE_NUMBER} ## Type of change @@ -33,28 +22,11 @@ Select one or more from the following: - [ ] Documentation - [ ] Other (specify) -## Testing - - - -- [ ] **Documentation**: `make docusaurus_start`; only needed if you make doc changes -- [ ] **Unit Tests**: `make go_develop_and_test` -- [ ] **LocalNet E2E Tests**: `make test_e2e` -- [ ] **DevNet E2E Tests**: Add the `devnet-test-e2e` label to the PR. - ## Sanity Checklist -- [ ] I have tested my changes using the available tooling -- [ ] I have commented my code -- [ ] I have performed a self-review of my own code; both comments & source code -- [ ] I create and reference any new tickets, if applicable -- [ ] I have left TODOs throughout the codebase, if applicable +- [ ] I have updated the GitHub Issue `assignees`, `reviewers`, `labels`, `project`, `iteration` and `milestone` +- [ ] For docs, I have run `make docusaurus_start` +- [ ] For code, I have run `make go_develop_and_test` and `make test_e2e` +- [ ] For code, I have added the `devnet-test-e2e` label to run E2E tests in CI +- [ ] For configurations, I have update the documentation +- [ ] I added TODOs where applicable diff --git a/.github/workflows-helpers/run-e2e-test-job-template.yaml b/.github/workflows-helpers/run-e2e-test-job-template.yaml index 9db41ed01..ca03ca867 100644 --- a/.github/workflows-helpers/run-e2e-test-job-template.yaml +++ b/.github/workflows-helpers/run-e2e-test-job-template.yaml @@ -37,7 +37,7 @@ spec: ls -l /root/.poktroll/keyring-test/ && \ poktrolld q gateway list-gateway --node=$POCKET_NODE && \ poktrolld q application list-application --node=$POCKET_NODE && \ - poktrolld q supplier list-supplier --node=$POCKET_NODE && \ + poktrolld q supplier list-suppliers --node=$POCKET_NODE && \ make acc_initialize_pubkeys && \ go test -v ./e2e/tests/... -tags=e2e env: @@ -50,13 +50,13 @@ spec: - name: POKTROLLD_HOME value: /root/.poktroll - name: PATH_URL - value: http://${NAMESPACE}-path:3000/v1 + value: http://${NAMESPACE}-path:3069/v1 # PATH relies on subdomains to get the requested service but our DevNet infra is not # built to expose arbitrary subdomains and supporting it would be a significant effort. # As a workaround, PATH_HOST_OVERRIDE is used as the host:port to connect to PATH while # the subdomain is passed as a Host header in the request. - name: PATH_HOST_OVERRIDE - value: ${NAMESPACE}-path:3000 + value: ${NAMESPACE}-path:3069 volumeMounts: - mountPath: /root/.poktroll/keyring-test/ name: writable-keys-volume diff --git a/.github/workflows/main-build.yml b/.github/workflows/main-build.yml index 8530c3d23..f9b3d03d7 100644 --- a/.github/workflows/main-build.yml +++ b/.github/workflows/main-build.yml @@ -13,7 +13,7 @@ jobs: build-push-container: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: fetch-depth: "0" # Per https://github.com/ignite/cli/issues/1674#issuecomment-1144619147 diff --git a/.github/workflows/release-artifacts.yml b/.github/workflows/release-artifacts.yml index 06ffee0fc..1be854f76 100644 --- a/.github/workflows/release-artifacts.yml +++ b/.github/workflows/release-artifacts.yml @@ -13,19 +13,19 @@ jobs: release-artifacts: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: fetch-depth: "0" # Per https://github.com/ignite/cli/issues/1674#issuecomment-1144619147 - - name: install ignite - run: | - make ignite_install - - name: Set up Go uses: actions/setup-go@v4 with: go-version: "1.23.0" + - name: install ignite + run: | + make ignite_install + - name: Install CI dependencies run: make install_ci_deps @@ -82,7 +82,7 @@ jobs: # TODO_TECHDEBT(@okdas): use for releases (also change the "on" part at the top so it only tgirrered for tags/releases) - name: Add release and publish binaries - uses: softprops/action-gh-release@v1 + uses: softprops/action-gh-release@v2 with: files: | release/* diff --git a/.github/workflows/reviewdog.yml b/.github/workflows/reviewdog.yml index 4295cfb1d..9dbd1750c 100644 --- a/.github/workflows/reviewdog.yml +++ b/.github/workflows/reviewdog.yml @@ -67,7 +67,7 @@ jobs: # Ensure that we are using polylog (via logger.) instead of the golang's stdlib # log package. check_stdlog_in_off_chain_package: - name: Check stdlog in off-chain source code + name: Check stdlog in offchain source code runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 diff --git a/.github/workflows/run-tests.yml b/.github/workflows/run-tests.yml index 70d66edb9..454e59202 100644 --- a/.github/workflows/run-tests.yml +++ b/.github/workflows/run-tests.yml @@ -17,7 +17,7 @@ jobs: go-test: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: fetch-depth: "0" # Per https://github.com/ignite/cli/issues/1674#issuecomment-1144619147 diff --git a/.github/workflows/upload-pages-artifact.yml b/.github/workflows/upload-pages-artifact.yml index 6caa01401..503b42123 100644 --- a/.github/workflows/upload-pages-artifact.yml +++ b/.github/workflows/upload-pages-artifact.yml @@ -16,7 +16,7 @@ jobs: update-docs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: fetch-depth: "0" # Per https://github.com/ignite/cli/issues/1674#issuecomment-1144619147 @@ -32,7 +32,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Set up Node.js uses: actions/setup-node@v4 @@ -63,7 +63,7 @@ jobs: pages: write steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Set up Node.js uses: actions/setup-node@v4 @@ -83,15 +83,15 @@ jobs: yarn build - name: Setup Pages - uses: actions/configure-pages@v4 + uses: actions/configure-pages@v5 with: enablement: true - name: Upload artifact - uses: actions/upload-pages-artifact@v2 + uses: actions/upload-pages-artifact@v3 with: path: docusaurus/build - name: Deploy to GitHub Pages id: deployment - uses: actions/deploy-pages@v2 + uses: actions/deploy-pages@v4 diff --git a/Dockerfile.release b/Dockerfile.release index 35d2a659c..efd5d2f44 100644 --- a/Dockerfile.release +++ b/Dockerfile.release @@ -8,7 +8,6 @@ RUN apt-get update && \ apt-get install -y --no-install-recommends ca-certificates && \ rm -rf /var/lib/apt/lists/* - # Use `1025` G/UID so users can switch between this and `heighliner` image without a need to chown the files. RUN groupadd -g 1025 pocket && useradd -u 1025 -g pocket -m -s /sbin/nologin pocket diff --git a/Makefile b/Makefile index 200d37f06..147a86b2b 100644 --- a/Makefile +++ b/Makefile @@ -14,7 +14,7 @@ GROVE_PORTAL_STAGING_ETH_MAINNET = https://eth-mainnet.rpc.grove.town # JSON RPC data for a test relay request JSON_RPC_DATA_ETH_BLOCK_HEIGHT = '{"jsonrpc":"2.0","id":"0","method":"eth_blockNumber", "params": []}' -# On-chain module account addresses. Search for `func TestModuleAddress` in the +# Onchain module account addresses. Search for `func TestModuleAddress` in the # codebase to get an understanding of how we got these values. APPLICATION_MODULE_ADDRESS = pokt1rl3gjgzexmplmds3tq3r3yk84zlwdl6djzgsvm SUPPLIER_MODULE_ADDRESS = pokt1j40dzzmn6cn9kxku7a5tjnud6hv37vesr5ccaa @@ -283,8 +283,23 @@ ignite_poktrolld_build: check_go_version check_ignite_version ## Build the poktr ignite chain build --skip-proto --debug -v -o $(shell go env GOPATH)/bin .PHONY: ignite_openapi_gen -ignite_openapi_gen: ## Generate the OpenAPI spec for the Ignite API +ignite_openapi_gen: ## Generate the OpenAPI spec natively and process the output ignite generate openapi --yes + $(MAKE) process_openapi + +.PHONY: ignite_openapi_gen_docker +ignite_openapi_gen_docker: ## Generate the OpenAPI spec using Docker and process the output; workaround due to https://github.com/ignite/cli/issues/4495 + docker build -f ./proto/Dockerfile.ignite -t ignite-openapi . + docker run --rm -v "$(PWD):/workspace" ignite-openapi + $(MAKE) process_openapi + +.PHONY: process_openapi +process_openapi: ## Ensure OpenAPI JSON and YAML files are properly formatted + # The original command incorrectly outputs a JSON-formatted file with a .yml extension. + # This fixes the issue by properly converting the JSON to a valid YAML format. + mv docs/static/openapi.yml docs/static/openapi.json + yq -o=json '.' docs/static/openapi.json -I=4 > docs/static/openapi.json.tmp && mv docs/static/openapi.json.tmp docs/static/openapi.json + yq -P -o=yaml '.' docs/static/openapi.json > docs/static/openapi.yml ################## ### CI Helpers ### diff --git a/README.md b/README.md index cfb6f41e3..f1388a279 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,9 @@ + + +
- Pocket Network logo + Pocket Network logo
@@ -22,52 +25,13 @@ # poktroll -**poktroll** is built using the [Cosmos SDK](https://docs.cosmos.network) and -[CometBFT](https://cometbft.com/), created with [Ignite CLI](https://ignite.com/cli) -for the Shannon upgrade of the [Pocket Network](https://pokt.network) blockchain. - -- [Learn about Pocket Network](#learn-about-pocket-network) -- [Developer Documentation](#developer-documentation) -- [Roadmap](#roadmap) -- [Quickstart](#quickstart) -- [Godoc](#godoc) -- [Have questions? Ask An PNYX](#have-questions-ask-an-pnyx) -- [License](#license) - -## Learn about Pocket Network - -User friendly documentation of the Shannon upgrade is still a WIP, but there are -a handful of (potentially outdated) resources you can reference in the meantime -to build a better understanding of Pocket Network: - -- [Pocket Network official documentation](https://docs.pokt.network) -- [[Live] Pocket Network Morse; aka v0](https://github.com/pokt-network/pocket-core) -- [[Outdated] Pocket Network Protocol](https://github.com/pokt-network/pocket-network-protocol) -- [[Deprecated]Pocket Network V1](https://github.com/pokt-network/pocket) - -## Developer Documentation - -The developer documentation is available at [dev.poktroll.com](https://dev.poktroll.com). - -## Roadmap - -You can view the Shannon Roadmap on [Github](https://github.com/orgs/pokt-network/projects/144?query=is%3Aopen+sort%3Aupdated-desc) - -## Quickstart - -The best way to get involved is by following the [quickstart instructions](https://dev.poktroll.com/develop/developer_guide/quickstart). - -## Godoc - -The Godoc for the source code in this can be found at [pkg.go.dev/github.com/pokt-network/poktroll](https://pkg.go.dev/github.com/pokt-network/poktroll). - -## Have questions? Ask An PNYX +**poktroll** is the source code for [Pocket Network's](https://pokt.network/) +[Shannon upgrade](https://docs.pokt.network/pokt-protocol/the-shannon-upgrade). -You can use [PNYX](https://migration.pnyxai.com/), an AI-powered search engine that has been -trained and indexed on the Pocket Network documentation, community calls, forums -and much more! +For technical documentation, visit [dev.poktroll.com](https://dev.poktroll.com). ---- +Documentation is maintained in the [docusaurus repo](./docusaurus) and is +automatically deployed to the link above. ## License diff --git a/Tiltfile b/Tiltfile index 4c1d74b1c..7a9af482d 100644 --- a/Tiltfile +++ b/Tiltfile @@ -320,6 +320,9 @@ for x in range(localnet_config["path_gateways"]["count"]): "--set=metrics.serviceMonitor.enabled=" + str(localnet_config["observability"]["enabled"]), "--set=path.mountConfigMaps[0].name=path-config-" + str(actor_number), "--set=path.mountConfigMaps[0].mountPath=/app/config/", + "--set=fullnameOverride=path" + str(actor_number), + "--set=nameOverride=path" + str(actor_number), + "--set=global.serviceAccount.name=path" + str(actor_number), ] if localnet_config["path_local_repo"]["enabled"]: @@ -360,7 +363,9 @@ for x in range(localnet_config["path_gateways"]["count"]): # ], # TODO_IMPROVE(@okdas): Add port forwards to grafana, pprof, like the other resources port_forwards=[ - str(2999 + actor_number) + ":3000" + # See PATH for the default port used by the gateway. As of PR #1026, it is :3069. + # https://github.com/buildwithgrove/path/blob/main/config/router.go + str(2999 + actor_number) + ":3069" ], ) diff --git a/api/poktroll/application/types.pulsar.go b/api/poktroll/application/types.pulsar.go index f482e77bb..21eb04ac4 100644 --- a/api/poktroll/application/types.pulsar.go +++ b/api/poktroll/application/types.pulsar.go @@ -2182,35 +2182,37 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// Application defines the type used to store an on-chain definition and state for an application +// Application represents the on-chain definition and state of an application type Application struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` // The Bech32 address of the application. - Stake *v1beta1.Coin `protobuf:"bytes,2,opt,name=stake,proto3" json:"stake,omitempty"` // The total amount of uPOKT the application has staked - // CRITICAL_DEV_NOTE: The number of service_configs must be EXACTLY ONE. + // Bech32 address of the application + Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` + // Total amount of staked uPOKT + Stake *v1beta1.Coin `protobuf:"bytes,2,opt,name=stake,proto3" json:"stake,omitempty"` + // CRITICAL: Must contain EXACTLY ONE service config // This prevents applications from over-servicing. - // The field is kept repeated (a list) for both legacy and future logic reaosns. - // References: + // Kept as repeated field for legacy and future compatibility + // Refs: // - https://github.com/pokt-network/poktroll/pull/750#discussion_r1735025033 // - https://www.notion.so/buildwithgrove/Off-chain-Application-Stake-Tracking-6a8bebb107db4f7f9dc62cbe7ba555f7 - ServiceConfigs []*shared.ApplicationServiceConfig `protobuf:"bytes,3,rep,name=service_configs,json=serviceConfigs,proto3" json:"service_configs,omitempty"` // The list of services this appliccation is configured to request service for + ServiceConfigs []*shared.ApplicationServiceConfig `protobuf:"bytes,3,rep,name=service_configs,json=serviceConfigs,proto3" json:"service_configs,omitempty"` // TODO_BETA(@bryanchriswhite): Rename `delegatee_gateway_addresses` to `gateway_addresses_delegated_to`. // Ensure to rename all relevant configs, comments, variables, function names, etc as well. - DelegateeGatewayAddresses []string `protobuf:"bytes,4,rep,name=delegatee_gateway_addresses,json=delegateeGatewayAddresses,proto3" json:"delegatee_gateway_addresses,omitempty"` // The Bech32 encoded addresses for all delegatee Gateways, in a non-nullable slice - // A map from sessionEndHeights to a list of Gateways. - // The key is the height of the last block of the session during which the - // respective undelegation was committed. - // The value is a list of gateways being undelegated from. + // Non-nullable list of Bech32 encoded delegatee Gateway addresses + DelegateeGatewayAddresses []string `protobuf:"bytes,4,rep,name=delegatee_gateway_addresses,json=delegateeGatewayAddresses,proto3" json:"delegatee_gateway_addresses,omitempty"` + // Mapping of session end heights to gateways being undelegated from + // - Key: Height of the last block of the session when undelegation tx was committed + // - Value: List of gateways being undelegated from // TODO_DOCUMENT(@red-0ne): Need to document the flow from this comment // so its clear to everyone why this is necessary; https://github.com/pokt-network/poktroll/issues/476#issuecomment-2052639906. PendingUndelegations map[uint64]*UndelegatingGatewayList `protobuf:"bytes,5,rep,name=pending_undelegations,json=pendingUndelegations,proto3" json:"pending_undelegations,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - // The end height of the session at which an application initiated its unstaking process. - // If the application did not unstake, this value will be 0. - UnstakeSessionEndHeight uint64 `protobuf:"varint,6,opt,name=unstake_session_end_height,json=unstakeSessionEndHeight,proto3" json:"unstake_session_end_height,omitempty"` - PendingTransfer *PendingApplicationTransfer `protobuf:"bytes,7,opt,name=pending_transfer,json=pendingTransfer,proto3" json:"pending_transfer,omitempty"` + // Session end height when application initiated unstaking (0 if not unstaking) + UnstakeSessionEndHeight uint64 `protobuf:"varint,6,opt,name=unstake_session_end_height,json=unstakeSessionEndHeight,proto3" json:"unstake_session_end_height,omitempty"` + // Information about pending application transfers + PendingTransfer *PendingApplicationTransfer `protobuf:"bytes,7,opt,name=pending_transfer,json=pendingTransfer,proto3" json:"pending_transfer,omitempty"` } func (x *Application) Reset() { diff --git a/api/poktroll/migration/genesis.pulsar.go b/api/poktroll/migration/genesis.pulsar.go new file mode 100644 index 000000000..7a7ad4714 --- /dev/null +++ b/api/poktroll/migration/genesis.pulsar.go @@ -0,0 +1,597 @@ +// Code generated by protoc-gen-go-pulsar. DO NOT EDIT. +package migration + +import ( + _ "cosmossdk.io/api/amino" + fmt "fmt" + runtime "github.com/cosmos/cosmos-proto/runtime" + _ "github.com/cosmos/gogoproto/gogoproto" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoiface "google.golang.org/protobuf/runtime/protoiface" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + io "io" + reflect "reflect" + sync "sync" +) + +var ( + md_GenesisState protoreflect.MessageDescriptor + fd_GenesisState_params protoreflect.FieldDescriptor +) + +func init() { + file_poktroll_migration_genesis_proto_init() + md_GenesisState = File_poktroll_migration_genesis_proto.Messages().ByName("GenesisState") + fd_GenesisState_params = md_GenesisState.Fields().ByName("params") +} + +var _ protoreflect.Message = (*fastReflection_GenesisState)(nil) + +type fastReflection_GenesisState GenesisState + +func (x *GenesisState) ProtoReflect() protoreflect.Message { + return (*fastReflection_GenesisState)(x) +} + +func (x *GenesisState) slowProtoReflect() protoreflect.Message { + mi := &file_poktroll_migration_genesis_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_GenesisState_messageType fastReflection_GenesisState_messageType +var _ protoreflect.MessageType = fastReflection_GenesisState_messageType{} + +type fastReflection_GenesisState_messageType struct{} + +func (x fastReflection_GenesisState_messageType) Zero() protoreflect.Message { + return (*fastReflection_GenesisState)(nil) +} +func (x fastReflection_GenesisState_messageType) New() protoreflect.Message { + return new(fastReflection_GenesisState) +} +func (x fastReflection_GenesisState_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_GenesisState +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_GenesisState) Descriptor() protoreflect.MessageDescriptor { + return md_GenesisState +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_GenesisState) Type() protoreflect.MessageType { + return _fastReflection_GenesisState_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_GenesisState) New() protoreflect.Message { + return new(fastReflection_GenesisState) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_GenesisState) Interface() protoreflect.ProtoMessage { + return (*GenesisState)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_GenesisState) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.Params != nil { + value := protoreflect.ValueOfMessage(x.Params.ProtoReflect()) + if !f(fd_GenesisState_params, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_GenesisState) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "poktroll.migration.GenesisState.params": + return x.Params != nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: poktroll.migration.GenesisState")) + } + panic(fmt.Errorf("message poktroll.migration.GenesisState does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_GenesisState) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "poktroll.migration.GenesisState.params": + x.Params = nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: poktroll.migration.GenesisState")) + } + panic(fmt.Errorf("message poktroll.migration.GenesisState does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_GenesisState) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "poktroll.migration.GenesisState.params": + value := x.Params + return protoreflect.ValueOfMessage(value.ProtoReflect()) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: poktroll.migration.GenesisState")) + } + panic(fmt.Errorf("message poktroll.migration.GenesisState does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_GenesisState) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "poktroll.migration.GenesisState.params": + x.Params = value.Message().Interface().(*Params) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: poktroll.migration.GenesisState")) + } + panic(fmt.Errorf("message poktroll.migration.GenesisState does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_GenesisState) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "poktroll.migration.GenesisState.params": + if x.Params == nil { + x.Params = new(Params) + } + return protoreflect.ValueOfMessage(x.Params.ProtoReflect()) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: poktroll.migration.GenesisState")) + } + panic(fmt.Errorf("message poktroll.migration.GenesisState does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_GenesisState) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "poktroll.migration.GenesisState.params": + m := new(Params) + return protoreflect.ValueOfMessage(m.ProtoReflect()) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: poktroll.migration.GenesisState")) + } + panic(fmt.Errorf("message poktroll.migration.GenesisState does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_GenesisState) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in poktroll.migration.GenesisState", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_GenesisState) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_GenesisState) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_GenesisState) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_GenesisState) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*GenesisState) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + if x.Params != nil { + l = options.Size(x.Params) + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*GenesisState) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if x.Params != nil { + encoded, err := options.Marshal(x.Params) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0xa + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*GenesisState) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: GenesisState: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: GenesisState: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Params", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if x.Params == nil { + x.Params = &Params{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Params); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.27.0 +// protoc (unknown) +// source: poktroll/migration/genesis.proto + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// GenesisState defines the migration module's genesis state. +type GenesisState struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // params defines all the parameters of the module. + Params *Params `protobuf:"bytes,1,opt,name=params,proto3" json:"params,omitempty"` +} + +func (x *GenesisState) Reset() { + *x = GenesisState{} + if protoimpl.UnsafeEnabled { + mi := &file_poktroll_migration_genesis_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GenesisState) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GenesisState) ProtoMessage() {} + +// Deprecated: Use GenesisState.ProtoReflect.Descriptor instead. +func (*GenesisState) Descriptor() ([]byte, []int) { + return file_poktroll_migration_genesis_proto_rawDescGZIP(), []int{0} +} + +func (x *GenesisState) GetParams() *Params { + if x != nil { + return x.Params + } + return nil +} + +var File_poktroll_migration_genesis_proto protoreflect.FileDescriptor + +var file_poktroll_migration_genesis_proto_rawDesc = []byte{ + 0x0a, 0x20, 0x70, 0x6f, 0x6b, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x2f, 0x6d, 0x69, 0x67, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x67, 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x12, 0x12, 0x70, 0x6f, 0x6b, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x2e, 0x6d, 0x69, 0x67, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x11, 0x61, 0x6d, 0x69, 0x6e, 0x6f, 0x2f, 0x61, 0x6d, + 0x69, 0x6e, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x14, 0x67, 0x6f, 0x67, 0x6f, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, + 0x1f, 0x70, 0x6f, 0x6b, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x2f, 0x6d, 0x69, 0x67, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x2f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x22, 0x4d, 0x0a, 0x0c, 0x47, 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73, 0x53, 0x74, 0x61, 0x74, 0x65, + 0x12, 0x3d, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1a, 0x2e, 0x70, 0x6f, 0x6b, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x2e, 0x6d, 0x69, 0x67, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x42, 0x09, 0xc8, 0xde, + 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x42, + 0xb8, 0x01, 0xd8, 0xe2, 0x1e, 0x01, 0x0a, 0x16, 0x63, 0x6f, 0x6d, 0x2e, 0x70, 0x6f, 0x6b, 0x74, + 0x72, 0x6f, 0x6c, 0x6c, 0x2e, 0x6d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0c, + 0x47, 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x23, + 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, + 0x2f, 0x70, 0x6f, 0x6b, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x2f, 0x6d, 0x69, 0x67, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0xa2, 0x02, 0x03, 0x50, 0x4d, 0x58, 0xaa, 0x02, 0x12, 0x50, 0x6f, 0x6b, 0x74, + 0x72, 0x6f, 0x6c, 0x6c, 0x2e, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0xca, 0x02, + 0x12, 0x50, 0x6f, 0x6b, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x5c, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0xe2, 0x02, 0x1e, 0x50, 0x6f, 0x6b, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x5c, 0x4d, + 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x13, 0x50, 0x6f, 0x6b, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x3a, + 0x3a, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x33, +} + +var ( + file_poktroll_migration_genesis_proto_rawDescOnce sync.Once + file_poktroll_migration_genesis_proto_rawDescData = file_poktroll_migration_genesis_proto_rawDesc +) + +func file_poktroll_migration_genesis_proto_rawDescGZIP() []byte { + file_poktroll_migration_genesis_proto_rawDescOnce.Do(func() { + file_poktroll_migration_genesis_proto_rawDescData = protoimpl.X.CompressGZIP(file_poktroll_migration_genesis_proto_rawDescData) + }) + return file_poktroll_migration_genesis_proto_rawDescData +} + +var file_poktroll_migration_genesis_proto_msgTypes = make([]protoimpl.MessageInfo, 1) +var file_poktroll_migration_genesis_proto_goTypes = []interface{}{ + (*GenesisState)(nil), // 0: poktroll.migration.GenesisState + (*Params)(nil), // 1: poktroll.migration.Params +} +var file_poktroll_migration_genesis_proto_depIdxs = []int32{ + 1, // 0: poktroll.migration.GenesisState.params:type_name -> poktroll.migration.Params + 1, // [1:1] is the sub-list for method output_type + 1, // [1:1] is the sub-list for method input_type + 1, // [1:1] is the sub-list for extension type_name + 1, // [1:1] is the sub-list for extension extendee + 0, // [0:1] is the sub-list for field type_name +} + +func init() { file_poktroll_migration_genesis_proto_init() } +func file_poktroll_migration_genesis_proto_init() { + if File_poktroll_migration_genesis_proto != nil { + return + } + file_poktroll_migration_params_proto_init() + if !protoimpl.UnsafeEnabled { + file_poktroll_migration_genesis_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GenesisState); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_poktroll_migration_genesis_proto_rawDesc, + NumEnums: 0, + NumMessages: 1, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_poktroll_migration_genesis_proto_goTypes, + DependencyIndexes: file_poktroll_migration_genesis_proto_depIdxs, + MessageInfos: file_poktroll_migration_genesis_proto_msgTypes, + }.Build() + File_poktroll_migration_genesis_proto = out.File + file_poktroll_migration_genesis_proto_rawDesc = nil + file_poktroll_migration_genesis_proto_goTypes = nil + file_poktroll_migration_genesis_proto_depIdxs = nil +} diff --git a/api/poktroll/migration/module/module.pulsar.go b/api/poktroll/migration/module/module.pulsar.go new file mode 100644 index 000000000..092dd13aa --- /dev/null +++ b/api/poktroll/migration/module/module.pulsar.go @@ -0,0 +1,582 @@ +// Code generated by protoc-gen-go-pulsar. DO NOT EDIT. +package module + +import ( + _ "cosmossdk.io/api/cosmos/app/v1alpha1" + fmt "fmt" + runtime "github.com/cosmos/cosmos-proto/runtime" + _ "github.com/cosmos/gogoproto/gogoproto" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoiface "google.golang.org/protobuf/runtime/protoiface" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + io "io" + reflect "reflect" + sync "sync" +) + +var ( + md_Module protoreflect.MessageDescriptor + fd_Module_authority protoreflect.FieldDescriptor +) + +func init() { + file_poktroll_migration_module_module_proto_init() + md_Module = File_poktroll_migration_module_module_proto.Messages().ByName("Module") + fd_Module_authority = md_Module.Fields().ByName("authority") +} + +var _ protoreflect.Message = (*fastReflection_Module)(nil) + +type fastReflection_Module Module + +func (x *Module) ProtoReflect() protoreflect.Message { + return (*fastReflection_Module)(x) +} + +func (x *Module) slowProtoReflect() protoreflect.Message { + mi := &file_poktroll_migration_module_module_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_Module_messageType fastReflection_Module_messageType +var _ protoreflect.MessageType = fastReflection_Module_messageType{} + +type fastReflection_Module_messageType struct{} + +func (x fastReflection_Module_messageType) Zero() protoreflect.Message { + return (*fastReflection_Module)(nil) +} +func (x fastReflection_Module_messageType) New() protoreflect.Message { + return new(fastReflection_Module) +} +func (x fastReflection_Module_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_Module +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_Module) Descriptor() protoreflect.MessageDescriptor { + return md_Module +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_Module) Type() protoreflect.MessageType { + return _fastReflection_Module_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_Module) New() protoreflect.Message { + return new(fastReflection_Module) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_Module) Interface() protoreflect.ProtoMessage { + return (*Module)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_Module) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.Authority != "" { + value := protoreflect.ValueOfString(x.Authority) + if !f(fd_Module_authority, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_Module) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "poktroll.migration.module.Module.authority": + return x.Authority != "" + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: poktroll.migration.module.Module")) + } + panic(fmt.Errorf("message poktroll.migration.module.Module does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_Module) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "poktroll.migration.module.Module.authority": + x.Authority = "" + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: poktroll.migration.module.Module")) + } + panic(fmt.Errorf("message poktroll.migration.module.Module does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_Module) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "poktroll.migration.module.Module.authority": + value := x.Authority + return protoreflect.ValueOfString(value) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: poktroll.migration.module.Module")) + } + panic(fmt.Errorf("message poktroll.migration.module.Module does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_Module) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "poktroll.migration.module.Module.authority": + x.Authority = value.Interface().(string) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: poktroll.migration.module.Module")) + } + panic(fmt.Errorf("message poktroll.migration.module.Module does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_Module) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "poktroll.migration.module.Module.authority": + panic(fmt.Errorf("field authority of message poktroll.migration.module.Module is not mutable")) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: poktroll.migration.module.Module")) + } + panic(fmt.Errorf("message poktroll.migration.module.Module does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_Module) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "poktroll.migration.module.Module.authority": + return protoreflect.ValueOfString("") + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: poktroll.migration.module.Module")) + } + panic(fmt.Errorf("message poktroll.migration.module.Module does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_Module) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in poktroll.migration.module.Module", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_Module) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_Module) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_Module) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_Module) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*Module) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + l = len(x.Authority) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*Module) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if len(x.Authority) > 0 { + i -= len(x.Authority) + copy(dAtA[i:], x.Authority) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Authority))) + i-- + dAtA[i] = 0xa + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*Module) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: Module: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: Module: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Authority", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Authority = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.27.0 +// protoc (unknown) +// source: poktroll/migration/module/module.proto + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// Module is the config object for the module. +type Module struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // authority defines the custom module authority. If not set, defaults to the governance module. + Authority string `protobuf:"bytes,1,opt,name=authority,proto3" json:"authority,omitempty"` +} + +func (x *Module) Reset() { + *x = Module{} + if protoimpl.UnsafeEnabled { + mi := &file_poktroll_migration_module_module_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Module) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Module) ProtoMessage() {} + +// Deprecated: Use Module.ProtoReflect.Descriptor instead. +func (*Module) Descriptor() ([]byte, []int) { + return file_poktroll_migration_module_module_proto_rawDescGZIP(), []int{0} +} + +func (x *Module) GetAuthority() string { + if x != nil { + return x.Authority + } + return "" +} + +var File_poktroll_migration_module_module_proto protoreflect.FileDescriptor + +var file_poktroll_migration_module_module_proto_rawDesc = []byte{ + 0x0a, 0x26, 0x70, 0x6f, 0x6b, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x2f, 0x6d, 0x69, 0x67, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x2f, 0x6d, 0x6f, 0x64, 0x75, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x19, 0x70, 0x6f, 0x6b, 0x74, 0x72, 0x6f, + 0x6c, 0x6c, 0x2e, 0x6d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x6d, 0x6f, 0x64, + 0x75, 0x6c, 0x65, 0x1a, 0x20, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x61, 0x70, 0x70, 0x2f, + 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x14, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x5c, 0x0a, 0x06, 0x4d, + 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, + 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, + 0x69, 0x74, 0x79, 0x3a, 0x34, 0xba, 0xc0, 0x96, 0xda, 0x01, 0x2e, 0x0a, 0x2c, 0x67, 0x69, 0x74, + 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x6f, 0x6b, 0x74, 0x2d, 0x6e, 0x65, 0x74, + 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x70, 0x6f, 0x6b, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x2f, 0x78, 0x2f, + 0x6d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0xe2, 0x01, 0xd8, 0xe2, 0x1e, 0x01, + 0x0a, 0x1d, 0x63, 0x6f, 0x6d, 0x2e, 0x70, 0x6f, 0x6b, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x2e, 0x6d, + 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x42, + 0x0b, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2a, + 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, + 0x2f, 0x70, 0x6f, 0x6b, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x2f, 0x6d, 0x69, 0x67, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x2f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0xa2, 0x02, 0x03, 0x50, 0x4d, 0x4d, + 0xaa, 0x02, 0x19, 0x50, 0x6f, 0x6b, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x2e, 0x4d, 0x69, 0x67, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0xca, 0x02, 0x19, 0x50, + 0x6f, 0x6b, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x5c, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x5c, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0xe2, 0x02, 0x25, 0x50, 0x6f, 0x6b, 0x74, 0x72, + 0x6f, 0x6c, 0x6c, 0x5c, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5c, 0x4d, 0x6f, + 0x64, 0x75, 0x6c, 0x65, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 0xea, 0x02, 0x1b, 0x50, 0x6f, 0x6b, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x3a, 0x3a, 0x4d, 0x69, 0x67, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x3a, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x62, 0x06, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_poktroll_migration_module_module_proto_rawDescOnce sync.Once + file_poktroll_migration_module_module_proto_rawDescData = file_poktroll_migration_module_module_proto_rawDesc +) + +func file_poktroll_migration_module_module_proto_rawDescGZIP() []byte { + file_poktroll_migration_module_module_proto_rawDescOnce.Do(func() { + file_poktroll_migration_module_module_proto_rawDescData = protoimpl.X.CompressGZIP(file_poktroll_migration_module_module_proto_rawDescData) + }) + return file_poktroll_migration_module_module_proto_rawDescData +} + +var file_poktroll_migration_module_module_proto_msgTypes = make([]protoimpl.MessageInfo, 1) +var file_poktroll_migration_module_module_proto_goTypes = []interface{}{ + (*Module)(nil), // 0: poktroll.migration.module.Module +} +var file_poktroll_migration_module_module_proto_depIdxs = []int32{ + 0, // [0:0] is the sub-list for method output_type + 0, // [0:0] is the sub-list for method input_type + 0, // [0:0] is the sub-list for extension type_name + 0, // [0:0] is the sub-list for extension extendee + 0, // [0:0] is the sub-list for field type_name +} + +func init() { file_poktroll_migration_module_module_proto_init() } +func file_poktroll_migration_module_module_proto_init() { + if File_poktroll_migration_module_module_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_poktroll_migration_module_module_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Module); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_poktroll_migration_module_module_proto_rawDesc, + NumEnums: 0, + NumMessages: 1, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_poktroll_migration_module_module_proto_goTypes, + DependencyIndexes: file_poktroll_migration_module_module_proto_depIdxs, + MessageInfos: file_poktroll_migration_module_module_proto_msgTypes, + }.Build() + File_poktroll_migration_module_module_proto = out.File + file_poktroll_migration_module_module_proto_rawDesc = nil + file_poktroll_migration_module_module_proto_goTypes = nil + file_poktroll_migration_module_module_proto_depIdxs = nil +} diff --git a/api/poktroll/migration/params.pulsar.go b/api/poktroll/migration/params.pulsar.go new file mode 100644 index 000000000..59e393ca3 --- /dev/null +++ b/api/poktroll/migration/params.pulsar.go @@ -0,0 +1,500 @@ +// Code generated by protoc-gen-go-pulsar. DO NOT EDIT. +package migration + +import ( + _ "cosmossdk.io/api/amino" + fmt "fmt" + runtime "github.com/cosmos/cosmos-proto/runtime" + _ "github.com/cosmos/gogoproto/gogoproto" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoiface "google.golang.org/protobuf/runtime/protoiface" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + io "io" + reflect "reflect" + sync "sync" +) + +var ( + md_Params protoreflect.MessageDescriptor +) + +func init() { + file_poktroll_migration_params_proto_init() + md_Params = File_poktroll_migration_params_proto.Messages().ByName("Params") +} + +var _ protoreflect.Message = (*fastReflection_Params)(nil) + +type fastReflection_Params Params + +func (x *Params) ProtoReflect() protoreflect.Message { + return (*fastReflection_Params)(x) +} + +func (x *Params) slowProtoReflect() protoreflect.Message { + mi := &file_poktroll_migration_params_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_Params_messageType fastReflection_Params_messageType +var _ protoreflect.MessageType = fastReflection_Params_messageType{} + +type fastReflection_Params_messageType struct{} + +func (x fastReflection_Params_messageType) Zero() protoreflect.Message { + return (*fastReflection_Params)(nil) +} +func (x fastReflection_Params_messageType) New() protoreflect.Message { + return new(fastReflection_Params) +} +func (x fastReflection_Params_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_Params +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_Params) Descriptor() protoreflect.MessageDescriptor { + return md_Params +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_Params) Type() protoreflect.MessageType { + return _fastReflection_Params_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_Params) New() protoreflect.Message { + return new(fastReflection_Params) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_Params) Interface() protoreflect.ProtoMessage { + return (*Params)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_Params) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_Params) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: poktroll.migration.Params")) + } + panic(fmt.Errorf("message poktroll.migration.Params does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_Params) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: poktroll.migration.Params")) + } + panic(fmt.Errorf("message poktroll.migration.Params does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_Params) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: poktroll.migration.Params")) + } + panic(fmt.Errorf("message poktroll.migration.Params does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_Params) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: poktroll.migration.Params")) + } + panic(fmt.Errorf("message poktroll.migration.Params does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_Params) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: poktroll.migration.Params")) + } + panic(fmt.Errorf("message poktroll.migration.Params does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_Params) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: poktroll.migration.Params")) + } + panic(fmt.Errorf("message poktroll.migration.Params does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_Params) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in poktroll.migration.Params", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_Params) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_Params) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_Params) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_Params) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*Params) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*Params) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*Params) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: Params: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: Params: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.27.0 +// protoc (unknown) +// source: poktroll/migration/params.proto + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// Params defines the parameters for the module. +type Params struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *Params) Reset() { + *x = Params{} + if protoimpl.UnsafeEnabled { + mi := &file_poktroll_migration_params_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Params) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Params) ProtoMessage() {} + +// Deprecated: Use Params.ProtoReflect.Descriptor instead. +func (*Params) Descriptor() ([]byte, []int) { + return file_poktroll_migration_params_proto_rawDescGZIP(), []int{0} +} + +var File_poktroll_migration_params_proto protoreflect.FileDescriptor + +var file_poktroll_migration_params_proto_rawDesc = []byte{ + 0x0a, 0x1f, 0x70, 0x6f, 0x6b, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x2f, 0x6d, 0x69, 0x67, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x12, 0x12, 0x70, 0x6f, 0x6b, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x2e, 0x6d, 0x69, 0x67, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x11, 0x61, 0x6d, 0x69, 0x6e, 0x6f, 0x2f, 0x61, 0x6d, 0x69, + 0x6e, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x14, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x2e, + 0x0a, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x3a, 0x24, 0xe8, 0xa0, 0x1f, 0x01, 0x8a, 0xe7, + 0xb0, 0x2a, 0x1b, 0x70, 0x6f, 0x6b, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x2f, 0x78, 0x2f, 0x6d, 0x69, + 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x42, 0xb7, + 0x01, 0xd8, 0xe2, 0x1e, 0x01, 0x0a, 0x16, 0x63, 0x6f, 0x6d, 0x2e, 0x70, 0x6f, 0x6b, 0x74, 0x72, + 0x6f, 0x6c, 0x6c, 0x2e, 0x6d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0b, 0x50, + 0x61, 0x72, 0x61, 0x6d, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x23, 0x63, 0x6f, + 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x70, + 0x6f, 0x6b, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x2f, 0x6d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0xa2, 0x02, 0x03, 0x50, 0x4d, 0x58, 0xaa, 0x02, 0x12, 0x50, 0x6f, 0x6b, 0x74, 0x72, 0x6f, + 0x6c, 0x6c, 0x2e, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0xca, 0x02, 0x12, 0x50, + 0x6f, 0x6b, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x5c, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0xe2, 0x02, 0x1e, 0x50, 0x6f, 0x6b, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x5c, 0x4d, 0x69, 0x67, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0xea, 0x02, 0x13, 0x50, 0x6f, 0x6b, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x3a, 0x3a, 0x4d, + 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_poktroll_migration_params_proto_rawDescOnce sync.Once + file_poktroll_migration_params_proto_rawDescData = file_poktroll_migration_params_proto_rawDesc +) + +func file_poktroll_migration_params_proto_rawDescGZIP() []byte { + file_poktroll_migration_params_proto_rawDescOnce.Do(func() { + file_poktroll_migration_params_proto_rawDescData = protoimpl.X.CompressGZIP(file_poktroll_migration_params_proto_rawDescData) + }) + return file_poktroll_migration_params_proto_rawDescData +} + +var file_poktroll_migration_params_proto_msgTypes = make([]protoimpl.MessageInfo, 1) +var file_poktroll_migration_params_proto_goTypes = []interface{}{ + (*Params)(nil), // 0: poktroll.migration.Params +} +var file_poktroll_migration_params_proto_depIdxs = []int32{ + 0, // [0:0] is the sub-list for method output_type + 0, // [0:0] is the sub-list for method input_type + 0, // [0:0] is the sub-list for extension type_name + 0, // [0:0] is the sub-list for extension extendee + 0, // [0:0] is the sub-list for field type_name +} + +func init() { file_poktroll_migration_params_proto_init() } +func file_poktroll_migration_params_proto_init() { + if File_poktroll_migration_params_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_poktroll_migration_params_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Params); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_poktroll_migration_params_proto_rawDesc, + NumEnums: 0, + NumMessages: 1, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_poktroll_migration_params_proto_goTypes, + DependencyIndexes: file_poktroll_migration_params_proto_depIdxs, + MessageInfos: file_poktroll_migration_params_proto_msgTypes, + }.Build() + File_poktroll_migration_params_proto = out.File + file_poktroll_migration_params_proto_rawDesc = nil + file_poktroll_migration_params_proto_goTypes = nil + file_poktroll_migration_params_proto_depIdxs = nil +} diff --git a/api/poktroll/migration/query.pulsar.go b/api/poktroll/migration/query.pulsar.go new file mode 100644 index 000000000..cb890aa65 --- /dev/null +++ b/api/poktroll/migration/query.pulsar.go @@ -0,0 +1,1012 @@ +// Code generated by protoc-gen-go-pulsar. DO NOT EDIT. +package migration + +import ( + _ "cosmossdk.io/api/amino" + _ "cosmossdk.io/api/cosmos/base/query/v1beta1" + fmt "fmt" + runtime "github.com/cosmos/cosmos-proto/runtime" + _ "github.com/cosmos/gogoproto/gogoproto" + _ "google.golang.org/genproto/googleapis/api/annotations" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoiface "google.golang.org/protobuf/runtime/protoiface" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + io "io" + reflect "reflect" + sync "sync" +) + +var ( + md_QueryParamsRequest protoreflect.MessageDescriptor +) + +func init() { + file_poktroll_migration_query_proto_init() + md_QueryParamsRequest = File_poktroll_migration_query_proto.Messages().ByName("QueryParamsRequest") +} + +var _ protoreflect.Message = (*fastReflection_QueryParamsRequest)(nil) + +type fastReflection_QueryParamsRequest QueryParamsRequest + +func (x *QueryParamsRequest) ProtoReflect() protoreflect.Message { + return (*fastReflection_QueryParamsRequest)(x) +} + +func (x *QueryParamsRequest) slowProtoReflect() protoreflect.Message { + mi := &file_poktroll_migration_query_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_QueryParamsRequest_messageType fastReflection_QueryParamsRequest_messageType +var _ protoreflect.MessageType = fastReflection_QueryParamsRequest_messageType{} + +type fastReflection_QueryParamsRequest_messageType struct{} + +func (x fastReflection_QueryParamsRequest_messageType) Zero() protoreflect.Message { + return (*fastReflection_QueryParamsRequest)(nil) +} +func (x fastReflection_QueryParamsRequest_messageType) New() protoreflect.Message { + return new(fastReflection_QueryParamsRequest) +} +func (x fastReflection_QueryParamsRequest_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_QueryParamsRequest +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_QueryParamsRequest) Descriptor() protoreflect.MessageDescriptor { + return md_QueryParamsRequest +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_QueryParamsRequest) Type() protoreflect.MessageType { + return _fastReflection_QueryParamsRequest_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_QueryParamsRequest) New() protoreflect.Message { + return new(fastReflection_QueryParamsRequest) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_QueryParamsRequest) Interface() protoreflect.ProtoMessage { + return (*QueryParamsRequest)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_QueryParamsRequest) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_QueryParamsRequest) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: poktroll.migration.QueryParamsRequest")) + } + panic(fmt.Errorf("message poktroll.migration.QueryParamsRequest does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryParamsRequest) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: poktroll.migration.QueryParamsRequest")) + } + panic(fmt.Errorf("message poktroll.migration.QueryParamsRequest does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_QueryParamsRequest) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: poktroll.migration.QueryParamsRequest")) + } + panic(fmt.Errorf("message poktroll.migration.QueryParamsRequest does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryParamsRequest) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: poktroll.migration.QueryParamsRequest")) + } + panic(fmt.Errorf("message poktroll.migration.QueryParamsRequest does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryParamsRequest) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: poktroll.migration.QueryParamsRequest")) + } + panic(fmt.Errorf("message poktroll.migration.QueryParamsRequest does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_QueryParamsRequest) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: poktroll.migration.QueryParamsRequest")) + } + panic(fmt.Errorf("message poktroll.migration.QueryParamsRequest does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_QueryParamsRequest) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in poktroll.migration.QueryParamsRequest", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_QueryParamsRequest) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryParamsRequest) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_QueryParamsRequest) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_QueryParamsRequest) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*QueryParamsRequest) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*QueryParamsRequest) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*QueryParamsRequest) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryParamsRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryParamsRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var ( + md_QueryParamsResponse protoreflect.MessageDescriptor + fd_QueryParamsResponse_params protoreflect.FieldDescriptor +) + +func init() { + file_poktroll_migration_query_proto_init() + md_QueryParamsResponse = File_poktroll_migration_query_proto.Messages().ByName("QueryParamsResponse") + fd_QueryParamsResponse_params = md_QueryParamsResponse.Fields().ByName("params") +} + +var _ protoreflect.Message = (*fastReflection_QueryParamsResponse)(nil) + +type fastReflection_QueryParamsResponse QueryParamsResponse + +func (x *QueryParamsResponse) ProtoReflect() protoreflect.Message { + return (*fastReflection_QueryParamsResponse)(x) +} + +func (x *QueryParamsResponse) slowProtoReflect() protoreflect.Message { + mi := &file_poktroll_migration_query_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_QueryParamsResponse_messageType fastReflection_QueryParamsResponse_messageType +var _ protoreflect.MessageType = fastReflection_QueryParamsResponse_messageType{} + +type fastReflection_QueryParamsResponse_messageType struct{} + +func (x fastReflection_QueryParamsResponse_messageType) Zero() protoreflect.Message { + return (*fastReflection_QueryParamsResponse)(nil) +} +func (x fastReflection_QueryParamsResponse_messageType) New() protoreflect.Message { + return new(fastReflection_QueryParamsResponse) +} +func (x fastReflection_QueryParamsResponse_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_QueryParamsResponse +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_QueryParamsResponse) Descriptor() protoreflect.MessageDescriptor { + return md_QueryParamsResponse +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_QueryParamsResponse) Type() protoreflect.MessageType { + return _fastReflection_QueryParamsResponse_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_QueryParamsResponse) New() protoreflect.Message { + return new(fastReflection_QueryParamsResponse) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_QueryParamsResponse) Interface() protoreflect.ProtoMessage { + return (*QueryParamsResponse)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_QueryParamsResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.Params != nil { + value := protoreflect.ValueOfMessage(x.Params.ProtoReflect()) + if !f(fd_QueryParamsResponse_params, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_QueryParamsResponse) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "poktroll.migration.QueryParamsResponse.params": + return x.Params != nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: poktroll.migration.QueryParamsResponse")) + } + panic(fmt.Errorf("message poktroll.migration.QueryParamsResponse does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryParamsResponse) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "poktroll.migration.QueryParamsResponse.params": + x.Params = nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: poktroll.migration.QueryParamsResponse")) + } + panic(fmt.Errorf("message poktroll.migration.QueryParamsResponse does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_QueryParamsResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "poktroll.migration.QueryParamsResponse.params": + value := x.Params + return protoreflect.ValueOfMessage(value.ProtoReflect()) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: poktroll.migration.QueryParamsResponse")) + } + panic(fmt.Errorf("message poktroll.migration.QueryParamsResponse does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryParamsResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "poktroll.migration.QueryParamsResponse.params": + x.Params = value.Message().Interface().(*Params) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: poktroll.migration.QueryParamsResponse")) + } + panic(fmt.Errorf("message poktroll.migration.QueryParamsResponse does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryParamsResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "poktroll.migration.QueryParamsResponse.params": + if x.Params == nil { + x.Params = new(Params) + } + return protoreflect.ValueOfMessage(x.Params.ProtoReflect()) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: poktroll.migration.QueryParamsResponse")) + } + panic(fmt.Errorf("message poktroll.migration.QueryParamsResponse does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_QueryParamsResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "poktroll.migration.QueryParamsResponse.params": + m := new(Params) + return protoreflect.ValueOfMessage(m.ProtoReflect()) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: poktroll.migration.QueryParamsResponse")) + } + panic(fmt.Errorf("message poktroll.migration.QueryParamsResponse does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_QueryParamsResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in poktroll.migration.QueryParamsResponse", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_QueryParamsResponse) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryParamsResponse) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_QueryParamsResponse) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_QueryParamsResponse) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*QueryParamsResponse) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + if x.Params != nil { + l = options.Size(x.Params) + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*QueryParamsResponse) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if x.Params != nil { + encoded, err := options.Marshal(x.Params) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0xa + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*QueryParamsResponse) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryParamsResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryParamsResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Params", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if x.Params == nil { + x.Params = &Params{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Params); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.27.0 +// protoc (unknown) +// source: poktroll/migration/query.proto + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// QueryParamsRequest is request type for the Query/Params RPC method. +type QueryParamsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *QueryParamsRequest) Reset() { + *x = QueryParamsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_poktroll_migration_query_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *QueryParamsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*QueryParamsRequest) ProtoMessage() {} + +// Deprecated: Use QueryParamsRequest.ProtoReflect.Descriptor instead. +func (*QueryParamsRequest) Descriptor() ([]byte, []int) { + return file_poktroll_migration_query_proto_rawDescGZIP(), []int{0} +} + +// QueryParamsResponse is response type for the Query/Params RPC method. +type QueryParamsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // params holds all the parameters of this module. + Params *Params `protobuf:"bytes,1,opt,name=params,proto3" json:"params,omitempty"` +} + +func (x *QueryParamsResponse) Reset() { + *x = QueryParamsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_poktroll_migration_query_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *QueryParamsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*QueryParamsResponse) ProtoMessage() {} + +// Deprecated: Use QueryParamsResponse.ProtoReflect.Descriptor instead. +func (*QueryParamsResponse) Descriptor() ([]byte, []int) { + return file_poktroll_migration_query_proto_rawDescGZIP(), []int{1} +} + +func (x *QueryParamsResponse) GetParams() *Params { + if x != nil { + return x.Params + } + return nil +} + +var File_poktroll_migration_query_proto protoreflect.FileDescriptor + +var file_poktroll_migration_query_proto_rawDesc = []byte{ + 0x0a, 0x1e, 0x70, 0x6f, 0x6b, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x2f, 0x6d, 0x69, 0x67, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x12, 0x12, 0x70, 0x6f, 0x6b, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x2e, 0x6d, 0x69, 0x67, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x11, 0x61, 0x6d, 0x69, 0x6e, 0x6f, 0x2f, 0x61, 0x6d, 0x69, 0x6e, + 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x14, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2a, 0x63, 0x6f, 0x73, + 0x6d, 0x6f, 0x73, 0x2f, 0x62, 0x61, 0x73, 0x65, 0x2f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2f, 0x76, + 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x70, 0x6f, 0x6b, 0x74, 0x72, 0x6f, 0x6c, + 0x6c, 0x2f, 0x6d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x70, 0x61, 0x72, 0x61, + 0x6d, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x14, 0x0a, 0x12, 0x51, 0x75, 0x65, 0x72, + 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x54, + 0x0a, 0x13, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3d, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x6f, 0x6b, 0x74, 0x72, 0x6f, 0x6c, 0x6c, + 0x2e, 0x6d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, + 0x73, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x06, 0x70, 0x61, + 0x72, 0x61, 0x6d, 0x73, 0x32, 0x94, 0x01, 0x0a, 0x05, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x8a, + 0x01, 0x0a, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x26, 0x2e, 0x70, 0x6f, 0x6b, 0x74, + 0x72, 0x6f, 0x6c, 0x6c, 0x2e, 0x6d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x51, + 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x27, 0x2e, 0x70, 0x6f, 0x6b, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x2e, 0x6d, 0x69, 0x67, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, + 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2f, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x29, 0x12, 0x27, 0x2f, 0x70, 0x6f, 0x6b, 0x74, 0x2d, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, + 0x6b, 0x2f, 0x70, 0x6f, 0x6b, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x2f, 0x6d, 0x69, 0x67, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x42, 0xb6, 0x01, 0xd8, 0xe2, + 0x1e, 0x01, 0x0a, 0x16, 0x63, 0x6f, 0x6d, 0x2e, 0x70, 0x6f, 0x6b, 0x74, 0x72, 0x6f, 0x6c, 0x6c, + 0x2e, 0x6d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0a, 0x51, 0x75, 0x65, 0x72, + 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x23, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, + 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x70, 0x6f, 0x6b, 0x74, 0x72, + 0x6f, 0x6c, 0x6c, 0x2f, 0x6d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0xa2, 0x02, 0x03, + 0x50, 0x4d, 0x58, 0xaa, 0x02, 0x12, 0x50, 0x6f, 0x6b, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x2e, 0x4d, + 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0xca, 0x02, 0x12, 0x50, 0x6f, 0x6b, 0x74, 0x72, + 0x6f, 0x6c, 0x6c, 0x5c, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0xe2, 0x02, 0x1e, + 0x50, 0x6f, 0x6b, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x5c, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, + 0x13, 0x50, 0x6f, 0x6b, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x3a, 0x3a, 0x4d, 0x69, 0x67, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_poktroll_migration_query_proto_rawDescOnce sync.Once + file_poktroll_migration_query_proto_rawDescData = file_poktroll_migration_query_proto_rawDesc +) + +func file_poktroll_migration_query_proto_rawDescGZIP() []byte { + file_poktroll_migration_query_proto_rawDescOnce.Do(func() { + file_poktroll_migration_query_proto_rawDescData = protoimpl.X.CompressGZIP(file_poktroll_migration_query_proto_rawDescData) + }) + return file_poktroll_migration_query_proto_rawDescData +} + +var file_poktroll_migration_query_proto_msgTypes = make([]protoimpl.MessageInfo, 2) +var file_poktroll_migration_query_proto_goTypes = []interface{}{ + (*QueryParamsRequest)(nil), // 0: poktroll.migration.QueryParamsRequest + (*QueryParamsResponse)(nil), // 1: poktroll.migration.QueryParamsResponse + (*Params)(nil), // 2: poktroll.migration.Params +} +var file_poktroll_migration_query_proto_depIdxs = []int32{ + 2, // 0: poktroll.migration.QueryParamsResponse.params:type_name -> poktroll.migration.Params + 0, // 1: poktroll.migration.Query.Params:input_type -> poktroll.migration.QueryParamsRequest + 1, // 2: poktroll.migration.Query.Params:output_type -> poktroll.migration.QueryParamsResponse + 2, // [2:3] is the sub-list for method output_type + 1, // [1:2] is the sub-list for method input_type + 1, // [1:1] is the sub-list for extension type_name + 1, // [1:1] is the sub-list for extension extendee + 0, // [0:1] is the sub-list for field type_name +} + +func init() { file_poktroll_migration_query_proto_init() } +func file_poktroll_migration_query_proto_init() { + if File_poktroll_migration_query_proto != nil { + return + } + file_poktroll_migration_params_proto_init() + if !protoimpl.UnsafeEnabled { + file_poktroll_migration_query_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*QueryParamsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_poktroll_migration_query_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*QueryParamsResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_poktroll_migration_query_proto_rawDesc, + NumEnums: 0, + NumMessages: 2, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_poktroll_migration_query_proto_goTypes, + DependencyIndexes: file_poktroll_migration_query_proto_depIdxs, + MessageInfos: file_poktroll_migration_query_proto_msgTypes, + }.Build() + File_poktroll_migration_query_proto = out.File + file_poktroll_migration_query_proto_rawDesc = nil + file_poktroll_migration_query_proto_goTypes = nil + file_poktroll_migration_query_proto_depIdxs = nil +} diff --git a/api/poktroll/migration/query_grpc.pb.go b/api/poktroll/migration/query_grpc.pb.go new file mode 100644 index 000000000..1fc079a50 --- /dev/null +++ b/api/poktroll/migration/query_grpc.pb.go @@ -0,0 +1,116 @@ +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. +// versions: +// - protoc-gen-go-grpc v1.4.0 +// - protoc (unknown) +// source: poktroll/migration/query.proto + +package migration + +import ( + context "context" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +// Requires gRPC-Go v1.62.0 or later. +const _ = grpc.SupportPackageIsVersion8 + +const ( + Query_Params_FullMethodName = "/poktroll.migration.Query/Params" +) + +// QueryClient is the client API for Query service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +// +// Query defines the gRPC querier service. +type QueryClient interface { + // Parameters queries the parameters of the module. + Params(ctx context.Context, in *QueryParamsRequest, opts ...grpc.CallOption) (*QueryParamsResponse, error) +} + +type queryClient struct { + cc grpc.ClientConnInterface +} + +func NewQueryClient(cc grpc.ClientConnInterface) QueryClient { + return &queryClient{cc} +} + +func (c *queryClient) Params(ctx context.Context, in *QueryParamsRequest, opts ...grpc.CallOption) (*QueryParamsResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(QueryParamsResponse) + err := c.cc.Invoke(ctx, Query_Params_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +// QueryServer is the server API for Query service. +// All implementations must embed UnimplementedQueryServer +// for forward compatibility +// +// Query defines the gRPC querier service. +type QueryServer interface { + // Parameters queries the parameters of the module. + Params(context.Context, *QueryParamsRequest) (*QueryParamsResponse, error) + mustEmbedUnimplementedQueryServer() +} + +// UnimplementedQueryServer must be embedded to have forward compatible implementations. +type UnimplementedQueryServer struct { +} + +func (UnimplementedQueryServer) Params(context.Context, *QueryParamsRequest) (*QueryParamsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Params not implemented") +} +func (UnimplementedQueryServer) mustEmbedUnimplementedQueryServer() {} + +// UnsafeQueryServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to QueryServer will +// result in compilation errors. +type UnsafeQueryServer interface { + mustEmbedUnimplementedQueryServer() +} + +func RegisterQueryServer(s grpc.ServiceRegistrar, srv QueryServer) { + s.RegisterService(&Query_ServiceDesc, srv) +} + +func _Query_Params_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryParamsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(QueryServer).Params(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Query_Params_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).Params(ctx, req.(*QueryParamsRequest)) + } + return interceptor(ctx, in, info, handler) +} + +// Query_ServiceDesc is the grpc.ServiceDesc for Query service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var Query_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "poktroll.migration.Query", + HandlerType: (*QueryServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "Params", + Handler: _Query_Params_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "poktroll/migration/query.proto", +} diff --git a/api/poktroll/migration/tx.pulsar.go b/api/poktroll/migration/tx.pulsar.go new file mode 100644 index 000000000..f7af6fa34 --- /dev/null +++ b/api/poktroll/migration/tx.pulsar.go @@ -0,0 +1,1091 @@ +// Code generated by protoc-gen-go-pulsar. DO NOT EDIT. +package migration + +import ( + _ "cosmossdk.io/api/amino" + _ "cosmossdk.io/api/cosmos/msg/v1" + fmt "fmt" + _ "github.com/cosmos/cosmos-proto" + runtime "github.com/cosmos/cosmos-proto/runtime" + _ "github.com/cosmos/gogoproto/gogoproto" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoiface "google.golang.org/protobuf/runtime/protoiface" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + io "io" + reflect "reflect" + sync "sync" +) + +var ( + md_MsgUpdateParams protoreflect.MessageDescriptor + fd_MsgUpdateParams_authority protoreflect.FieldDescriptor + fd_MsgUpdateParams_params protoreflect.FieldDescriptor +) + +func init() { + file_poktroll_migration_tx_proto_init() + md_MsgUpdateParams = File_poktroll_migration_tx_proto.Messages().ByName("MsgUpdateParams") + fd_MsgUpdateParams_authority = md_MsgUpdateParams.Fields().ByName("authority") + fd_MsgUpdateParams_params = md_MsgUpdateParams.Fields().ByName("params") +} + +var _ protoreflect.Message = (*fastReflection_MsgUpdateParams)(nil) + +type fastReflection_MsgUpdateParams MsgUpdateParams + +func (x *MsgUpdateParams) ProtoReflect() protoreflect.Message { + return (*fastReflection_MsgUpdateParams)(x) +} + +func (x *MsgUpdateParams) slowProtoReflect() protoreflect.Message { + mi := &file_poktroll_migration_tx_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_MsgUpdateParams_messageType fastReflection_MsgUpdateParams_messageType +var _ protoreflect.MessageType = fastReflection_MsgUpdateParams_messageType{} + +type fastReflection_MsgUpdateParams_messageType struct{} + +func (x fastReflection_MsgUpdateParams_messageType) Zero() protoreflect.Message { + return (*fastReflection_MsgUpdateParams)(nil) +} +func (x fastReflection_MsgUpdateParams_messageType) New() protoreflect.Message { + return new(fastReflection_MsgUpdateParams) +} +func (x fastReflection_MsgUpdateParams_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_MsgUpdateParams +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_MsgUpdateParams) Descriptor() protoreflect.MessageDescriptor { + return md_MsgUpdateParams +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_MsgUpdateParams) Type() protoreflect.MessageType { + return _fastReflection_MsgUpdateParams_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_MsgUpdateParams) New() protoreflect.Message { + return new(fastReflection_MsgUpdateParams) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_MsgUpdateParams) Interface() protoreflect.ProtoMessage { + return (*MsgUpdateParams)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_MsgUpdateParams) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.Authority != "" { + value := protoreflect.ValueOfString(x.Authority) + if !f(fd_MsgUpdateParams_authority, value) { + return + } + } + if x.Params != nil { + value := protoreflect.ValueOfMessage(x.Params.ProtoReflect()) + if !f(fd_MsgUpdateParams_params, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_MsgUpdateParams) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "poktroll.migration.MsgUpdateParams.authority": + return x.Authority != "" + case "poktroll.migration.MsgUpdateParams.params": + return x.Params != nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: poktroll.migration.MsgUpdateParams")) + } + panic(fmt.Errorf("message poktroll.migration.MsgUpdateParams does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgUpdateParams) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "poktroll.migration.MsgUpdateParams.authority": + x.Authority = "" + case "poktroll.migration.MsgUpdateParams.params": + x.Params = nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: poktroll.migration.MsgUpdateParams")) + } + panic(fmt.Errorf("message poktroll.migration.MsgUpdateParams does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_MsgUpdateParams) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "poktroll.migration.MsgUpdateParams.authority": + value := x.Authority + return protoreflect.ValueOfString(value) + case "poktroll.migration.MsgUpdateParams.params": + value := x.Params + return protoreflect.ValueOfMessage(value.ProtoReflect()) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: poktroll.migration.MsgUpdateParams")) + } + panic(fmt.Errorf("message poktroll.migration.MsgUpdateParams does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgUpdateParams) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "poktroll.migration.MsgUpdateParams.authority": + x.Authority = value.Interface().(string) + case "poktroll.migration.MsgUpdateParams.params": + x.Params = value.Message().Interface().(*Params) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: poktroll.migration.MsgUpdateParams")) + } + panic(fmt.Errorf("message poktroll.migration.MsgUpdateParams does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgUpdateParams) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "poktroll.migration.MsgUpdateParams.params": + if x.Params == nil { + x.Params = new(Params) + } + return protoreflect.ValueOfMessage(x.Params.ProtoReflect()) + case "poktroll.migration.MsgUpdateParams.authority": + panic(fmt.Errorf("field authority of message poktroll.migration.MsgUpdateParams is not mutable")) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: poktroll.migration.MsgUpdateParams")) + } + panic(fmt.Errorf("message poktroll.migration.MsgUpdateParams does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_MsgUpdateParams) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "poktroll.migration.MsgUpdateParams.authority": + return protoreflect.ValueOfString("") + case "poktroll.migration.MsgUpdateParams.params": + m := new(Params) + return protoreflect.ValueOfMessage(m.ProtoReflect()) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: poktroll.migration.MsgUpdateParams")) + } + panic(fmt.Errorf("message poktroll.migration.MsgUpdateParams does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_MsgUpdateParams) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in poktroll.migration.MsgUpdateParams", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_MsgUpdateParams) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgUpdateParams) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_MsgUpdateParams) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_MsgUpdateParams) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*MsgUpdateParams) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + l = len(x.Authority) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.Params != nil { + l = options.Size(x.Params) + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*MsgUpdateParams) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if x.Params != nil { + encoded, err := options.Marshal(x.Params) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0x12 + } + if len(x.Authority) > 0 { + i -= len(x.Authority) + copy(dAtA[i:], x.Authority) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Authority))) + i-- + dAtA[i] = 0xa + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*MsgUpdateParams) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgUpdateParams: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgUpdateParams: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Authority", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Authority = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Params", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if x.Params == nil { + x.Params = &Params{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Params); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var ( + md_MsgUpdateParamsResponse protoreflect.MessageDescriptor +) + +func init() { + file_poktroll_migration_tx_proto_init() + md_MsgUpdateParamsResponse = File_poktroll_migration_tx_proto.Messages().ByName("MsgUpdateParamsResponse") +} + +var _ protoreflect.Message = (*fastReflection_MsgUpdateParamsResponse)(nil) + +type fastReflection_MsgUpdateParamsResponse MsgUpdateParamsResponse + +func (x *MsgUpdateParamsResponse) ProtoReflect() protoreflect.Message { + return (*fastReflection_MsgUpdateParamsResponse)(x) +} + +func (x *MsgUpdateParamsResponse) slowProtoReflect() protoreflect.Message { + mi := &file_poktroll_migration_tx_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_MsgUpdateParamsResponse_messageType fastReflection_MsgUpdateParamsResponse_messageType +var _ protoreflect.MessageType = fastReflection_MsgUpdateParamsResponse_messageType{} + +type fastReflection_MsgUpdateParamsResponse_messageType struct{} + +func (x fastReflection_MsgUpdateParamsResponse_messageType) Zero() protoreflect.Message { + return (*fastReflection_MsgUpdateParamsResponse)(nil) +} +func (x fastReflection_MsgUpdateParamsResponse_messageType) New() protoreflect.Message { + return new(fastReflection_MsgUpdateParamsResponse) +} +func (x fastReflection_MsgUpdateParamsResponse_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_MsgUpdateParamsResponse +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_MsgUpdateParamsResponse) Descriptor() protoreflect.MessageDescriptor { + return md_MsgUpdateParamsResponse +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_MsgUpdateParamsResponse) Type() protoreflect.MessageType { + return _fastReflection_MsgUpdateParamsResponse_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_MsgUpdateParamsResponse) New() protoreflect.Message { + return new(fastReflection_MsgUpdateParamsResponse) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_MsgUpdateParamsResponse) Interface() protoreflect.ProtoMessage { + return (*MsgUpdateParamsResponse)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_MsgUpdateParamsResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_MsgUpdateParamsResponse) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: poktroll.migration.MsgUpdateParamsResponse")) + } + panic(fmt.Errorf("message poktroll.migration.MsgUpdateParamsResponse does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgUpdateParamsResponse) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: poktroll.migration.MsgUpdateParamsResponse")) + } + panic(fmt.Errorf("message poktroll.migration.MsgUpdateParamsResponse does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_MsgUpdateParamsResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: poktroll.migration.MsgUpdateParamsResponse")) + } + panic(fmt.Errorf("message poktroll.migration.MsgUpdateParamsResponse does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgUpdateParamsResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: poktroll.migration.MsgUpdateParamsResponse")) + } + panic(fmt.Errorf("message poktroll.migration.MsgUpdateParamsResponse does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgUpdateParamsResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: poktroll.migration.MsgUpdateParamsResponse")) + } + panic(fmt.Errorf("message poktroll.migration.MsgUpdateParamsResponse does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_MsgUpdateParamsResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: poktroll.migration.MsgUpdateParamsResponse")) + } + panic(fmt.Errorf("message poktroll.migration.MsgUpdateParamsResponse does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_MsgUpdateParamsResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in poktroll.migration.MsgUpdateParamsResponse", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_MsgUpdateParamsResponse) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgUpdateParamsResponse) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_MsgUpdateParamsResponse) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_MsgUpdateParamsResponse) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*MsgUpdateParamsResponse) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*MsgUpdateParamsResponse) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*MsgUpdateParamsResponse) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgUpdateParamsResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgUpdateParamsResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.27.0 +// protoc (unknown) +// source: poktroll/migration/tx.proto + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// MsgUpdateParams is the Msg/UpdateParams request type. +type MsgUpdateParams struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // authority is the address that controls the module (defaults to x/gov unless overwritten). + Authority string `protobuf:"bytes,1,opt,name=authority,proto3" json:"authority,omitempty"` + // params defines the module parameters to update. + // + // NOTE: All parameters must be supplied. + Params *Params `protobuf:"bytes,2,opt,name=params,proto3" json:"params,omitempty"` +} + +func (x *MsgUpdateParams) Reset() { + *x = MsgUpdateParams{} + if protoimpl.UnsafeEnabled { + mi := &file_poktroll_migration_tx_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MsgUpdateParams) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MsgUpdateParams) ProtoMessage() {} + +// Deprecated: Use MsgUpdateParams.ProtoReflect.Descriptor instead. +func (*MsgUpdateParams) Descriptor() ([]byte, []int) { + return file_poktroll_migration_tx_proto_rawDescGZIP(), []int{0} +} + +func (x *MsgUpdateParams) GetAuthority() string { + if x != nil { + return x.Authority + } + return "" +} + +func (x *MsgUpdateParams) GetParams() *Params { + if x != nil { + return x.Params + } + return nil +} + +// MsgUpdateParamsResponse defines the response structure for executing a +// MsgUpdateParams message. +type MsgUpdateParamsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *MsgUpdateParamsResponse) Reset() { + *x = MsgUpdateParamsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_poktroll_migration_tx_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MsgUpdateParamsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MsgUpdateParamsResponse) ProtoMessage() {} + +// Deprecated: Use MsgUpdateParamsResponse.ProtoReflect.Descriptor instead. +func (*MsgUpdateParamsResponse) Descriptor() ([]byte, []int) { + return file_poktroll_migration_tx_proto_rawDescGZIP(), []int{1} +} + +var File_poktroll_migration_tx_proto protoreflect.FileDescriptor + +var file_poktroll_migration_tx_proto_rawDesc = []byte{ + 0x0a, 0x1b, 0x70, 0x6f, 0x6b, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x2f, 0x6d, 0x69, 0x67, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x74, 0x78, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x12, 0x70, + 0x6f, 0x6b, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x2e, 0x6d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x1a, 0x11, 0x61, 0x6d, 0x69, 0x6e, 0x6f, 0x2f, 0x61, 0x6d, 0x69, 0x6e, 0x6f, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x6d, 0x73, 0x67, + 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x73, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x63, + 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x63, 0x6f, 0x73, 0x6d, + 0x6f, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x14, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, + 0x70, 0x6f, 0x6b, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x2f, 0x6d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x2f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, + 0xc1, 0x01, 0x0a, 0x0f, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, + 0x61, 0x6d, 0x73, 0x12, 0x36, 0x0a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, + 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, + 0x52, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x3d, 0x0a, 0x06, 0x70, + 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x6f, + 0x6b, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x2e, 0x6d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, + 0x2a, 0x01, 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x3a, 0x37, 0x82, 0xe7, 0xb0, 0x2a, + 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x8a, 0xe7, 0xb0, 0x2a, 0x24, 0x70, + 0x6f, 0x6b, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x2f, 0x78, 0x2f, 0x6d, 0x69, 0x67, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x2f, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, + 0x61, 0x6d, 0x73, 0x22, 0x19, 0x0a, 0x17, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32, 0x6e, + 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x12, 0x60, 0x0a, 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, + 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x23, 0x2e, 0x70, 0x6f, 0x6b, 0x74, 0x72, 0x6f, 0x6c, 0x6c, + 0x2e, 0x6d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4d, 0x73, 0x67, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x1a, 0x2b, 0x2e, 0x70, 0x6f, 0x6b, + 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x2e, 0x6d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, + 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x1a, 0x05, 0x80, 0xe7, 0xb0, 0x2a, 0x01, 0x42, 0xb3, + 0x01, 0xd8, 0xe2, 0x1e, 0x01, 0x0a, 0x16, 0x63, 0x6f, 0x6d, 0x2e, 0x70, 0x6f, 0x6b, 0x74, 0x72, + 0x6f, 0x6c, 0x6c, 0x2e, 0x6d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x07, 0x54, + 0x78, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x23, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, + 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x70, 0x6f, 0x6b, 0x74, 0x72, + 0x6f, 0x6c, 0x6c, 0x2f, 0x6d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0xa2, 0x02, 0x03, + 0x50, 0x4d, 0x58, 0xaa, 0x02, 0x12, 0x50, 0x6f, 0x6b, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x2e, 0x4d, + 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0xca, 0x02, 0x12, 0x50, 0x6f, 0x6b, 0x74, 0x72, + 0x6f, 0x6c, 0x6c, 0x5c, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0xe2, 0x02, 0x1e, + 0x50, 0x6f, 0x6b, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x5c, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, + 0x13, 0x50, 0x6f, 0x6b, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x3a, 0x3a, 0x4d, 0x69, 0x67, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_poktroll_migration_tx_proto_rawDescOnce sync.Once + file_poktroll_migration_tx_proto_rawDescData = file_poktroll_migration_tx_proto_rawDesc +) + +func file_poktroll_migration_tx_proto_rawDescGZIP() []byte { + file_poktroll_migration_tx_proto_rawDescOnce.Do(func() { + file_poktroll_migration_tx_proto_rawDescData = protoimpl.X.CompressGZIP(file_poktroll_migration_tx_proto_rawDescData) + }) + return file_poktroll_migration_tx_proto_rawDescData +} + +var file_poktroll_migration_tx_proto_msgTypes = make([]protoimpl.MessageInfo, 2) +var file_poktroll_migration_tx_proto_goTypes = []interface{}{ + (*MsgUpdateParams)(nil), // 0: poktroll.migration.MsgUpdateParams + (*MsgUpdateParamsResponse)(nil), // 1: poktroll.migration.MsgUpdateParamsResponse + (*Params)(nil), // 2: poktroll.migration.Params +} +var file_poktroll_migration_tx_proto_depIdxs = []int32{ + 2, // 0: poktroll.migration.MsgUpdateParams.params:type_name -> poktroll.migration.Params + 0, // 1: poktroll.migration.Msg.UpdateParams:input_type -> poktroll.migration.MsgUpdateParams + 1, // 2: poktroll.migration.Msg.UpdateParams:output_type -> poktroll.migration.MsgUpdateParamsResponse + 2, // [2:3] is the sub-list for method output_type + 1, // [1:2] is the sub-list for method input_type + 1, // [1:1] is the sub-list for extension type_name + 1, // [1:1] is the sub-list for extension extendee + 0, // [0:1] is the sub-list for field type_name +} + +func init() { file_poktroll_migration_tx_proto_init() } +func file_poktroll_migration_tx_proto_init() { + if File_poktroll_migration_tx_proto != nil { + return + } + file_poktroll_migration_params_proto_init() + if !protoimpl.UnsafeEnabled { + file_poktroll_migration_tx_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MsgUpdateParams); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_poktroll_migration_tx_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MsgUpdateParamsResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_poktroll_migration_tx_proto_rawDesc, + NumEnums: 0, + NumMessages: 2, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_poktroll_migration_tx_proto_goTypes, + DependencyIndexes: file_poktroll_migration_tx_proto_depIdxs, + MessageInfos: file_poktroll_migration_tx_proto_msgTypes, + }.Build() + File_poktroll_migration_tx_proto = out.File + file_poktroll_migration_tx_proto_rawDesc = nil + file_poktroll_migration_tx_proto_goTypes = nil + file_poktroll_migration_tx_proto_depIdxs = nil +} diff --git a/api/poktroll/migration/tx_grpc.pb.go b/api/poktroll/migration/tx_grpc.pb.go new file mode 100644 index 000000000..79681fb48 --- /dev/null +++ b/api/poktroll/migration/tx_grpc.pb.go @@ -0,0 +1,118 @@ +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. +// versions: +// - protoc-gen-go-grpc v1.4.0 +// - protoc (unknown) +// source: poktroll/migration/tx.proto + +package migration + +import ( + context "context" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +// Requires gRPC-Go v1.62.0 or later. +const _ = grpc.SupportPackageIsVersion8 + +const ( + Msg_UpdateParams_FullMethodName = "/poktroll.migration.Msg/UpdateParams" +) + +// MsgClient is the client API for Msg service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +// +// Msg defines the Msg service. +type MsgClient interface { + // UpdateParams defines a (governance) operation for updating the module + // parameters. The authority defaults to the x/gov module account. + UpdateParams(ctx context.Context, in *MsgUpdateParams, opts ...grpc.CallOption) (*MsgUpdateParamsResponse, error) +} + +type msgClient struct { + cc grpc.ClientConnInterface +} + +func NewMsgClient(cc grpc.ClientConnInterface) MsgClient { + return &msgClient{cc} +} + +func (c *msgClient) UpdateParams(ctx context.Context, in *MsgUpdateParams, opts ...grpc.CallOption) (*MsgUpdateParamsResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(MsgUpdateParamsResponse) + err := c.cc.Invoke(ctx, Msg_UpdateParams_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +// MsgServer is the server API for Msg service. +// All implementations must embed UnimplementedMsgServer +// for forward compatibility +// +// Msg defines the Msg service. +type MsgServer interface { + // UpdateParams defines a (governance) operation for updating the module + // parameters. The authority defaults to the x/gov module account. + UpdateParams(context.Context, *MsgUpdateParams) (*MsgUpdateParamsResponse, error) + mustEmbedUnimplementedMsgServer() +} + +// UnimplementedMsgServer must be embedded to have forward compatible implementations. +type UnimplementedMsgServer struct { +} + +func (UnimplementedMsgServer) UpdateParams(context.Context, *MsgUpdateParams) (*MsgUpdateParamsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method UpdateParams not implemented") +} +func (UnimplementedMsgServer) mustEmbedUnimplementedMsgServer() {} + +// UnsafeMsgServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to MsgServer will +// result in compilation errors. +type UnsafeMsgServer interface { + mustEmbedUnimplementedMsgServer() +} + +func RegisterMsgServer(s grpc.ServiceRegistrar, srv MsgServer) { + s.RegisterService(&Msg_ServiceDesc, srv) +} + +func _Msg_UpdateParams_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgUpdateParams) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).UpdateParams(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Msg_UpdateParams_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).UpdateParams(ctx, req.(*MsgUpdateParams)) + } + return interceptor(ctx, in, info, handler) +} + +// Msg_ServiceDesc is the grpc.ServiceDesc for Msg service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var Msg_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "poktroll.migration.Msg", + HandlerType: (*MsgServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "UpdateParams", + Handler: _Msg_UpdateParams_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "poktroll/migration/tx.proto", +} diff --git a/api/poktroll/proof/event.pulsar.go b/api/poktroll/proof/event.pulsar.go index 2954b58b7..9ec8937e5 100644 --- a/api/poktroll/proof/event.pulsar.go +++ b/api/poktroll/proof/event.pulsar.go @@ -2804,6 +2804,601 @@ func (x *fastReflection_EventProofUpdated) ProtoMethods() *protoiface.Methods { } } +var ( + md_EventProofValidityChecked protoreflect.MessageDescriptor + fd_EventProofValidityChecked_proof protoreflect.FieldDescriptor + fd_EventProofValidityChecked_block_height protoreflect.FieldDescriptor + fd_EventProofValidityChecked_proof_status protoreflect.FieldDescriptor + fd_EventProofValidityChecked_failure_reason protoreflect.FieldDescriptor +) + +func init() { + file_poktroll_proof_event_proto_init() + md_EventProofValidityChecked = File_poktroll_proof_event_proto.Messages().ByName("EventProofValidityChecked") + fd_EventProofValidityChecked_proof = md_EventProofValidityChecked.Fields().ByName("proof") + fd_EventProofValidityChecked_block_height = md_EventProofValidityChecked.Fields().ByName("block_height") + fd_EventProofValidityChecked_proof_status = md_EventProofValidityChecked.Fields().ByName("proof_status") + fd_EventProofValidityChecked_failure_reason = md_EventProofValidityChecked.Fields().ByName("failure_reason") +} + +var _ protoreflect.Message = (*fastReflection_EventProofValidityChecked)(nil) + +type fastReflection_EventProofValidityChecked EventProofValidityChecked + +func (x *EventProofValidityChecked) ProtoReflect() protoreflect.Message { + return (*fastReflection_EventProofValidityChecked)(x) +} + +func (x *EventProofValidityChecked) slowProtoReflect() protoreflect.Message { + mi := &file_poktroll_proof_event_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_EventProofValidityChecked_messageType fastReflection_EventProofValidityChecked_messageType +var _ protoreflect.MessageType = fastReflection_EventProofValidityChecked_messageType{} + +type fastReflection_EventProofValidityChecked_messageType struct{} + +func (x fastReflection_EventProofValidityChecked_messageType) Zero() protoreflect.Message { + return (*fastReflection_EventProofValidityChecked)(nil) +} +func (x fastReflection_EventProofValidityChecked_messageType) New() protoreflect.Message { + return new(fastReflection_EventProofValidityChecked) +} +func (x fastReflection_EventProofValidityChecked_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_EventProofValidityChecked +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_EventProofValidityChecked) Descriptor() protoreflect.MessageDescriptor { + return md_EventProofValidityChecked +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_EventProofValidityChecked) Type() protoreflect.MessageType { + return _fastReflection_EventProofValidityChecked_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_EventProofValidityChecked) New() protoreflect.Message { + return new(fastReflection_EventProofValidityChecked) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_EventProofValidityChecked) Interface() protoreflect.ProtoMessage { + return (*EventProofValidityChecked)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_EventProofValidityChecked) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.Proof != nil { + value := protoreflect.ValueOfMessage(x.Proof.ProtoReflect()) + if !f(fd_EventProofValidityChecked_proof, value) { + return + } + } + if x.BlockHeight != uint64(0) { + value := protoreflect.ValueOfUint64(x.BlockHeight) + if !f(fd_EventProofValidityChecked_block_height, value) { + return + } + } + if x.ProofStatus != 0 { + value := protoreflect.ValueOfEnum((protoreflect.EnumNumber)(x.ProofStatus)) + if !f(fd_EventProofValidityChecked_proof_status, value) { + return + } + } + if x.FailureReason != "" { + value := protoreflect.ValueOfString(x.FailureReason) + if !f(fd_EventProofValidityChecked_failure_reason, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_EventProofValidityChecked) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "poktroll.proof.EventProofValidityChecked.proof": + return x.Proof != nil + case "poktroll.proof.EventProofValidityChecked.block_height": + return x.BlockHeight != uint64(0) + case "poktroll.proof.EventProofValidityChecked.proof_status": + return x.ProofStatus != 0 + case "poktroll.proof.EventProofValidityChecked.failure_reason": + return x.FailureReason != "" + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: poktroll.proof.EventProofValidityChecked")) + } + panic(fmt.Errorf("message poktroll.proof.EventProofValidityChecked does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_EventProofValidityChecked) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "poktroll.proof.EventProofValidityChecked.proof": + x.Proof = nil + case "poktroll.proof.EventProofValidityChecked.block_height": + x.BlockHeight = uint64(0) + case "poktroll.proof.EventProofValidityChecked.proof_status": + x.ProofStatus = 0 + case "poktroll.proof.EventProofValidityChecked.failure_reason": + x.FailureReason = "" + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: poktroll.proof.EventProofValidityChecked")) + } + panic(fmt.Errorf("message poktroll.proof.EventProofValidityChecked does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_EventProofValidityChecked) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "poktroll.proof.EventProofValidityChecked.proof": + value := x.Proof + return protoreflect.ValueOfMessage(value.ProtoReflect()) + case "poktroll.proof.EventProofValidityChecked.block_height": + value := x.BlockHeight + return protoreflect.ValueOfUint64(value) + case "poktroll.proof.EventProofValidityChecked.proof_status": + value := x.ProofStatus + return protoreflect.ValueOfEnum((protoreflect.EnumNumber)(value)) + case "poktroll.proof.EventProofValidityChecked.failure_reason": + value := x.FailureReason + return protoreflect.ValueOfString(value) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: poktroll.proof.EventProofValidityChecked")) + } + panic(fmt.Errorf("message poktroll.proof.EventProofValidityChecked does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_EventProofValidityChecked) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "poktroll.proof.EventProofValidityChecked.proof": + x.Proof = value.Message().Interface().(*Proof) + case "poktroll.proof.EventProofValidityChecked.block_height": + x.BlockHeight = value.Uint() + case "poktroll.proof.EventProofValidityChecked.proof_status": + x.ProofStatus = (ClaimProofStatus)(value.Enum()) + case "poktroll.proof.EventProofValidityChecked.failure_reason": + x.FailureReason = value.Interface().(string) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: poktroll.proof.EventProofValidityChecked")) + } + panic(fmt.Errorf("message poktroll.proof.EventProofValidityChecked does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_EventProofValidityChecked) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "poktroll.proof.EventProofValidityChecked.proof": + if x.Proof == nil { + x.Proof = new(Proof) + } + return protoreflect.ValueOfMessage(x.Proof.ProtoReflect()) + case "poktroll.proof.EventProofValidityChecked.block_height": + panic(fmt.Errorf("field block_height of message poktroll.proof.EventProofValidityChecked is not mutable")) + case "poktroll.proof.EventProofValidityChecked.proof_status": + panic(fmt.Errorf("field proof_status of message poktroll.proof.EventProofValidityChecked is not mutable")) + case "poktroll.proof.EventProofValidityChecked.failure_reason": + panic(fmt.Errorf("field failure_reason of message poktroll.proof.EventProofValidityChecked is not mutable")) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: poktroll.proof.EventProofValidityChecked")) + } + panic(fmt.Errorf("message poktroll.proof.EventProofValidityChecked does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_EventProofValidityChecked) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "poktroll.proof.EventProofValidityChecked.proof": + m := new(Proof) + return protoreflect.ValueOfMessage(m.ProtoReflect()) + case "poktroll.proof.EventProofValidityChecked.block_height": + return protoreflect.ValueOfUint64(uint64(0)) + case "poktroll.proof.EventProofValidityChecked.proof_status": + return protoreflect.ValueOfEnum(0) + case "poktroll.proof.EventProofValidityChecked.failure_reason": + return protoreflect.ValueOfString("") + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: poktroll.proof.EventProofValidityChecked")) + } + panic(fmt.Errorf("message poktroll.proof.EventProofValidityChecked does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_EventProofValidityChecked) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in poktroll.proof.EventProofValidityChecked", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_EventProofValidityChecked) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_EventProofValidityChecked) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_EventProofValidityChecked) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_EventProofValidityChecked) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*EventProofValidityChecked) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + if x.Proof != nil { + l = options.Size(x.Proof) + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.BlockHeight != 0 { + n += 1 + runtime.Sov(uint64(x.BlockHeight)) + } + if x.ProofStatus != 0 { + n += 1 + runtime.Sov(uint64(x.ProofStatus)) + } + l = len(x.FailureReason) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*EventProofValidityChecked) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if len(x.FailureReason) > 0 { + i -= len(x.FailureReason) + copy(dAtA[i:], x.FailureReason) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.FailureReason))) + i-- + dAtA[i] = 0x22 + } + if x.ProofStatus != 0 { + i = runtime.EncodeVarint(dAtA, i, uint64(x.ProofStatus)) + i-- + dAtA[i] = 0x18 + } + if x.BlockHeight != 0 { + i = runtime.EncodeVarint(dAtA, i, uint64(x.BlockHeight)) + i-- + dAtA[i] = 0x10 + } + if x.Proof != nil { + encoded, err := options.Marshal(x.Proof) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0xa + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*EventProofValidityChecked) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: EventProofValidityChecked: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: EventProofValidityChecked: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Proof", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if x.Proof == nil { + x.Proof = &Proof{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Proof); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + case 2: + if wireType != 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field BlockHeight", wireType) + } + x.BlockHeight = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + x.BlockHeight |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 3: + if wireType != 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field ProofStatus", wireType) + } + x.ProofStatus = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + x.ProofStatus |= ClaimProofStatus(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 4: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field FailureReason", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.FailureReason = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.27.0 @@ -3103,6 +3698,69 @@ func (x *EventProofUpdated) GetClaimedUpokt() *v1beta1.Coin { return nil } +// Event emitted after a proof has been checked for validity in the proof module's +// EndBlocker. +type EventProofValidityChecked struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Proof *Proof `protobuf:"bytes,1,opt,name=proof,proto3" json:"proof,omitempty"` + BlockHeight uint64 `protobuf:"varint,2,opt,name=block_height,json=blockHeight,proto3" json:"block_height,omitempty"` + ProofStatus ClaimProofStatus `protobuf:"varint,3,opt,name=proof_status,json=proofStatus,proto3,enum=poktroll.proof.ClaimProofStatus" json:"proof_status,omitempty"` + // reason is the string representation of the error that led to the proof being + // marked as invalid (e.g. "invalid closest merkle proof", "invalid relay request signature") + FailureReason string `protobuf:"bytes,4,opt,name=failure_reason,json=failureReason,proto3" json:"failure_reason,omitempty"` +} + +func (x *EventProofValidityChecked) Reset() { + *x = EventProofValidityChecked{} + if protoimpl.UnsafeEnabled { + mi := &file_poktroll_proof_event_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *EventProofValidityChecked) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*EventProofValidityChecked) ProtoMessage() {} + +// Deprecated: Use EventProofValidityChecked.ProtoReflect.Descriptor instead. +func (*EventProofValidityChecked) Descriptor() ([]byte, []int) { + return file_poktroll_proof_event_proto_rawDescGZIP(), []int{4} +} + +func (x *EventProofValidityChecked) GetProof() *Proof { + if x != nil { + return x.Proof + } + return nil +} + +func (x *EventProofValidityChecked) GetBlockHeight() uint64 { + if x != nil { + return x.BlockHeight + } + return 0 +} + +func (x *EventProofValidityChecked) GetProofStatus() ClaimProofStatus { + if x != nil { + return x.ProofStatus + } + return ClaimProofStatus_PENDING_VALIDATION +} + +func (x *EventProofValidityChecked) GetFailureReason() string { + if x != nil { + return x.FailureReason + } + return "" +} + var File_poktroll_proof_event_proto protoreflect.FileDescriptor var file_poktroll_proof_event_proto_rawDesc = []byte{ @@ -3219,18 +3877,35 @@ var file_poktroll_proof_event_proto_rawDesc = []byte{ 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x42, 0x11, 0xea, 0xde, 0x1f, 0x0d, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x65, 0x64, 0x5f, 0x75, 0x70, 0x6f, 0x6b, 0x74, 0x52, 0x0c, 0x63, 0x6c, 0x61, 0x69, - 0x6d, 0x65, 0x64, 0x55, 0x70, 0x6f, 0x6b, 0x74, 0x42, 0x9e, 0x01, 0xd8, 0xe2, 0x1e, 0x01, 0x0a, - 0x12, 0x63, 0x6f, 0x6d, 0x2e, 0x70, 0x6f, 0x6b, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x2e, 0x70, 0x72, - 0x6f, 0x6f, 0x66, 0x42, 0x0a, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, - 0x01, 0x5a, 0x1f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, - 0x61, 0x70, 0x69, 0x2f, 0x70, 0x6f, 0x6b, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x2f, 0x70, 0x72, 0x6f, - 0x6f, 0x66, 0xa2, 0x02, 0x03, 0x50, 0x50, 0x58, 0xaa, 0x02, 0x0e, 0x50, 0x6f, 0x6b, 0x74, 0x72, - 0x6f, 0x6c, 0x6c, 0x2e, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0xca, 0x02, 0x0e, 0x50, 0x6f, 0x6b, 0x74, - 0x72, 0x6f, 0x6c, 0x6c, 0x5c, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0xe2, 0x02, 0x1a, 0x50, 0x6f, 0x6b, - 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x5c, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x5c, 0x47, 0x50, 0x42, 0x4d, - 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x0f, 0x50, 0x6f, 0x6b, 0x74, 0x72, 0x6f, - 0x6c, 0x6c, 0x3a, 0x3a, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x33, + 0x6d, 0x65, 0x64, 0x55, 0x70, 0x6f, 0x6b, 0x74, 0x22, 0x9a, 0x02, 0x0a, 0x19, 0x45, 0x76, 0x65, + 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x69, 0x74, 0x79, 0x43, + 0x68, 0x65, 0x63, 0x6b, 0x65, 0x64, 0x12, 0x36, 0x0a, 0x05, 0x70, 0x72, 0x6f, 0x6f, 0x66, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x70, 0x6f, 0x6b, 0x74, 0x72, 0x6f, 0x6c, 0x6c, + 0x2e, 0x70, 0x72, 0x6f, 0x6f, 0x66, 0x2e, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x42, 0x09, 0xea, 0xde, + 0x1f, 0x05, 0x70, 0x72, 0x6f, 0x6f, 0x66, 0x52, 0x05, 0x70, 0x72, 0x6f, 0x6f, 0x66, 0x12, 0x33, + 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x04, 0x42, 0x10, 0xea, 0xde, 0x1f, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, + 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x69, + 0x67, 0x68, 0x74, 0x12, 0x55, 0x0a, 0x0c, 0x70, 0x72, 0x6f, 0x6f, 0x66, 0x5f, 0x73, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x70, 0x6f, 0x6b, 0x74, + 0x72, 0x6f, 0x6c, 0x6c, 0x2e, 0x70, 0x72, 0x6f, 0x6f, 0x66, 0x2e, 0x43, 0x6c, 0x61, 0x69, 0x6d, + 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x10, 0xea, 0xde, 0x1f, + 0x0c, 0x70, 0x72, 0x6f, 0x6f, 0x66, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x0b, 0x70, + 0x72, 0x6f, 0x6f, 0x66, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x39, 0x0a, 0x0e, 0x66, 0x61, + 0x69, 0x6c, 0x75, 0x72, 0x65, 0x5f, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x12, 0xea, 0xde, 0x1f, 0x0e, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x5f, + 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x52, 0x0d, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x52, + 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x42, 0x9e, 0x01, 0xd8, 0xe2, 0x1e, 0x01, 0x0a, 0x12, 0x63, 0x6f, + 0x6d, 0x2e, 0x70, 0x6f, 0x6b, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x2e, 0x70, 0x72, 0x6f, 0x6f, 0x66, + 0x42, 0x0a, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x1f, + 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, + 0x2f, 0x70, 0x6f, 0x6b, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x2f, 0x70, 0x72, 0x6f, 0x6f, 0x66, 0xa2, + 0x02, 0x03, 0x50, 0x50, 0x58, 0xaa, 0x02, 0x0e, 0x50, 0x6f, 0x6b, 0x74, 0x72, 0x6f, 0x6c, 0x6c, + 0x2e, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0xca, 0x02, 0x0e, 0x50, 0x6f, 0x6b, 0x74, 0x72, 0x6f, 0x6c, + 0x6c, 0x5c, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0xe2, 0x02, 0x1a, 0x50, 0x6f, 0x6b, 0x74, 0x72, 0x6f, + 0x6c, 0x6c, 0x5c, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x0f, 0x50, 0x6f, 0x6b, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x3a, + 0x3a, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -3245,32 +3920,36 @@ func file_poktroll_proof_event_proto_rawDescGZIP() []byte { return file_poktroll_proof_event_proto_rawDescData } -var file_poktroll_proof_event_proto_msgTypes = make([]protoimpl.MessageInfo, 4) +var file_poktroll_proof_event_proto_msgTypes = make([]protoimpl.MessageInfo, 5) var file_poktroll_proof_event_proto_goTypes = []interface{}{ - (*EventClaimCreated)(nil), // 0: poktroll.proof.EventClaimCreated - (*EventClaimUpdated)(nil), // 1: poktroll.proof.EventClaimUpdated - (*EventProofSubmitted)(nil), // 2: poktroll.proof.EventProofSubmitted - (*EventProofUpdated)(nil), // 3: poktroll.proof.EventProofUpdated - (*Claim)(nil), // 4: poktroll.proof.Claim - (*v1beta1.Coin)(nil), // 5: cosmos.base.v1beta1.Coin - (*Proof)(nil), // 6: poktroll.proof.Proof + (*EventClaimCreated)(nil), // 0: poktroll.proof.EventClaimCreated + (*EventClaimUpdated)(nil), // 1: poktroll.proof.EventClaimUpdated + (*EventProofSubmitted)(nil), // 2: poktroll.proof.EventProofSubmitted + (*EventProofUpdated)(nil), // 3: poktroll.proof.EventProofUpdated + (*EventProofValidityChecked)(nil), // 4: poktroll.proof.EventProofValidityChecked + (*Claim)(nil), // 5: poktroll.proof.Claim + (*v1beta1.Coin)(nil), // 6: cosmos.base.v1beta1.Coin + (*Proof)(nil), // 7: poktroll.proof.Proof + (ClaimProofStatus)(0), // 8: poktroll.proof.ClaimProofStatus } var file_poktroll_proof_event_proto_depIdxs = []int32{ - 4, // 0: poktroll.proof.EventClaimCreated.claim:type_name -> poktroll.proof.Claim - 5, // 1: poktroll.proof.EventClaimCreated.claimed_upokt:type_name -> cosmos.base.v1beta1.Coin - 4, // 2: poktroll.proof.EventClaimUpdated.claim:type_name -> poktroll.proof.Claim - 5, // 3: poktroll.proof.EventClaimUpdated.claimed_upokt:type_name -> cosmos.base.v1beta1.Coin - 4, // 4: poktroll.proof.EventProofSubmitted.claim:type_name -> poktroll.proof.Claim - 6, // 5: poktroll.proof.EventProofSubmitted.proof:type_name -> poktroll.proof.Proof - 5, // 6: poktroll.proof.EventProofSubmitted.claimed_upokt:type_name -> cosmos.base.v1beta1.Coin - 4, // 7: poktroll.proof.EventProofUpdated.claim:type_name -> poktroll.proof.Claim - 6, // 8: poktroll.proof.EventProofUpdated.proof:type_name -> poktroll.proof.Proof - 5, // 9: poktroll.proof.EventProofUpdated.claimed_upokt:type_name -> cosmos.base.v1beta1.Coin - 10, // [10:10] is the sub-list for method output_type - 10, // [10:10] is the sub-list for method input_type - 10, // [10:10] is the sub-list for extension type_name - 10, // [10:10] is the sub-list for extension extendee - 0, // [0:10] is the sub-list for field type_name + 5, // 0: poktroll.proof.EventClaimCreated.claim:type_name -> poktroll.proof.Claim + 6, // 1: poktroll.proof.EventClaimCreated.claimed_upokt:type_name -> cosmos.base.v1beta1.Coin + 5, // 2: poktroll.proof.EventClaimUpdated.claim:type_name -> poktroll.proof.Claim + 6, // 3: poktroll.proof.EventClaimUpdated.claimed_upokt:type_name -> cosmos.base.v1beta1.Coin + 5, // 4: poktroll.proof.EventProofSubmitted.claim:type_name -> poktroll.proof.Claim + 7, // 5: poktroll.proof.EventProofSubmitted.proof:type_name -> poktroll.proof.Proof + 6, // 6: poktroll.proof.EventProofSubmitted.claimed_upokt:type_name -> cosmos.base.v1beta1.Coin + 5, // 7: poktroll.proof.EventProofUpdated.claim:type_name -> poktroll.proof.Claim + 7, // 8: poktroll.proof.EventProofUpdated.proof:type_name -> poktroll.proof.Proof + 6, // 9: poktroll.proof.EventProofUpdated.claimed_upokt:type_name -> cosmos.base.v1beta1.Coin + 7, // 10: poktroll.proof.EventProofValidityChecked.proof:type_name -> poktroll.proof.Proof + 8, // 11: poktroll.proof.EventProofValidityChecked.proof_status:type_name -> poktroll.proof.ClaimProofStatus + 12, // [12:12] is the sub-list for method output_type + 12, // [12:12] is the sub-list for method input_type + 12, // [12:12] is the sub-list for extension type_name + 12, // [12:12] is the sub-list for extension extendee + 0, // [0:12] is the sub-list for field type_name } func init() { file_poktroll_proof_event_proto_init() } @@ -3328,6 +4007,18 @@ func file_poktroll_proof_event_proto_init() { return nil } } + file_poktroll_proof_event_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*EventProofValidityChecked); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } } type x struct{} out := protoimpl.TypeBuilder{ @@ -3335,7 +4026,7 @@ func file_poktroll_proof_event_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_poktroll_proof_event_proto_rawDesc, NumEnums: 0, - NumMessages: 4, + NumMessages: 5, NumExtensions: 0, NumServices: 0, }, diff --git a/api/poktroll/proof/params.pulsar.go b/api/poktroll/proof/params.pulsar.go index 47fb7a9c7..896c46242 100644 --- a/api/poktroll/proof/params.pulsar.go +++ b/api/poktroll/proof/params.pulsar.go @@ -687,7 +687,7 @@ type Params struct { ProofMissingPenalty *v1beta1.Coin `protobuf:"bytes,4,opt,name=proof_missing_penalty,json=proofMissingPenalty,proto3" json:"proof_missing_penalty,omitempty"` // proof_submission_fee is the number of tokens (uPOKT) which should be paid by // the supplier operator when submitting a proof. - // This is needed to account for the cost of storing proofs on-chain and prevent + // This is needed to account for the cost of storing proofs onchain and prevent // spamming (i.e. sybil bloat attacks) the network with non-required proofs. // TODO_MAINNET: Consider renaming this to `proof_submission_fee_upokt`. ProofSubmissionFee *v1beta1.Coin `protobuf:"bytes,5,opt,name=proof_submission_fee,json=proofSubmissionFee,proto3" json:"proof_submission_fee,omitempty"` diff --git a/api/poktroll/proof/types.pulsar.go b/api/poktroll/proof/types.pulsar.go index cace1d1e4..a49834e88 100644 --- a/api/poktroll/proof/types.pulsar.go +++ b/api/poktroll/proof/types.pulsar.go @@ -585,6 +585,7 @@ var ( fd_Claim_supplier_operator_address protoreflect.FieldDescriptor fd_Claim_session_header protoreflect.FieldDescriptor fd_Claim_root_hash protoreflect.FieldDescriptor + fd_Claim_proof_validation_status protoreflect.FieldDescriptor ) func init() { @@ -593,6 +594,7 @@ func init() { fd_Claim_supplier_operator_address = md_Claim.Fields().ByName("supplier_operator_address") fd_Claim_session_header = md_Claim.Fields().ByName("session_header") fd_Claim_root_hash = md_Claim.Fields().ByName("root_hash") + fd_Claim_proof_validation_status = md_Claim.Fields().ByName("proof_validation_status") } var _ protoreflect.Message = (*fastReflection_Claim)(nil) @@ -678,6 +680,12 @@ func (x *fastReflection_Claim) Range(f func(protoreflect.FieldDescriptor, protor return } } + if x.ProofValidationStatus != 0 { + value := protoreflect.ValueOfEnum((protoreflect.EnumNumber)(x.ProofValidationStatus)) + if !f(fd_Claim_proof_validation_status, value) { + return + } + } } // Has reports whether a field is populated. @@ -699,6 +707,8 @@ func (x *fastReflection_Claim) Has(fd protoreflect.FieldDescriptor) bool { return x.SessionHeader != nil case "poktroll.proof.Claim.root_hash": return len(x.RootHash) != 0 + case "poktroll.proof.Claim.proof_validation_status": + return x.ProofValidationStatus != 0 default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: poktroll.proof.Claim")) @@ -721,6 +731,8 @@ func (x *fastReflection_Claim) Clear(fd protoreflect.FieldDescriptor) { x.SessionHeader = nil case "poktroll.proof.Claim.root_hash": x.RootHash = nil + case "poktroll.proof.Claim.proof_validation_status": + x.ProofValidationStatus = 0 default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: poktroll.proof.Claim")) @@ -746,6 +758,9 @@ func (x *fastReflection_Claim) Get(descriptor protoreflect.FieldDescriptor) prot case "poktroll.proof.Claim.root_hash": value := x.RootHash return protoreflect.ValueOfBytes(value) + case "poktroll.proof.Claim.proof_validation_status": + value := x.ProofValidationStatus + return protoreflect.ValueOfEnum((protoreflect.EnumNumber)(value)) default: if descriptor.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: poktroll.proof.Claim")) @@ -772,6 +787,8 @@ func (x *fastReflection_Claim) Set(fd protoreflect.FieldDescriptor, value protor x.SessionHeader = value.Message().Interface().(*session.SessionHeader) case "poktroll.proof.Claim.root_hash": x.RootHash = value.Bytes() + case "poktroll.proof.Claim.proof_validation_status": + x.ProofValidationStatus = (ClaimProofStatus)(value.Enum()) default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: poktroll.proof.Claim")) @@ -801,6 +818,8 @@ func (x *fastReflection_Claim) Mutable(fd protoreflect.FieldDescriptor) protoref panic(fmt.Errorf("field supplier_operator_address of message poktroll.proof.Claim is not mutable")) case "poktroll.proof.Claim.root_hash": panic(fmt.Errorf("field root_hash of message poktroll.proof.Claim is not mutable")) + case "poktroll.proof.Claim.proof_validation_status": + panic(fmt.Errorf("field proof_validation_status of message poktroll.proof.Claim is not mutable")) default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: poktroll.proof.Claim")) @@ -821,6 +840,8 @@ func (x *fastReflection_Claim) NewField(fd protoreflect.FieldDescriptor) protore return protoreflect.ValueOfMessage(m.ProtoReflect()) case "poktroll.proof.Claim.root_hash": return protoreflect.ValueOfBytes(nil) + case "poktroll.proof.Claim.proof_validation_status": + return protoreflect.ValueOfEnum(0) default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: poktroll.proof.Claim")) @@ -902,6 +923,9 @@ func (x *fastReflection_Claim) ProtoMethods() *protoiface.Methods { if l > 0 { n += 1 + l + runtime.Sov(uint64(l)) } + if x.ProofValidationStatus != 0 { + n += 1 + runtime.Sov(uint64(x.ProofValidationStatus)) + } if x.unknownFields != nil { n += len(x.unknownFields) } @@ -931,6 +955,11 @@ func (x *fastReflection_Claim) ProtoMethods() *protoiface.Methods { i -= len(x.unknownFields) copy(dAtA[i:], x.unknownFields) } + if x.ProofValidationStatus != 0 { + i = runtime.EncodeVarint(dAtA, i, uint64(x.ProofValidationStatus)) + i-- + dAtA[i] = 0x20 + } if len(x.RootHash) > 0 { i -= len(x.RootHash) copy(dAtA[i:], x.RootHash) @@ -1110,6 +1139,25 @@ func (x *fastReflection_Claim) ProtoMethods() *protoiface.Methods { x.RootHash = []byte{} } iNdEx = postIndex + case 4: + if wireType != 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field ProofValidationStatus", wireType) + } + x.ProofValidationStatus = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + x.ProofValidationStatus |= ClaimProofStatus(b&0x7F) << shift + if b < 0x80 { + break + } + } default: iNdEx = preIndex skippy, err := runtime.Skip(dAtA[iNdEx:]) @@ -1263,6 +1311,57 @@ func (ClaimProofStage) EnumDescriptor() ([]byte, []int) { return file_poktroll_proof_types_proto_rawDescGZIP(), []int{1} } +// Status of proof validation for a claim +// Default is PENDING_VALIDATION regardless of proof requirement +type ClaimProofStatus int32 + +const ( + ClaimProofStatus_PENDING_VALIDATION ClaimProofStatus = 0 + ClaimProofStatus_VALIDATED ClaimProofStatus = 1 + ClaimProofStatus_INVALID ClaimProofStatus = 2 +) + +// Enum value maps for ClaimProofStatus. +var ( + ClaimProofStatus_name = map[int32]string{ + 0: "PENDING_VALIDATION", + 1: "VALIDATED", + 2: "INVALID", + } + ClaimProofStatus_value = map[string]int32{ + "PENDING_VALIDATION": 0, + "VALIDATED": 1, + "INVALID": 2, + } +) + +func (x ClaimProofStatus) Enum() *ClaimProofStatus { + p := new(ClaimProofStatus) + *p = x + return p +} + +func (x ClaimProofStatus) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (ClaimProofStatus) Descriptor() protoreflect.EnumDescriptor { + return file_poktroll_proof_types_proto_enumTypes[2].Descriptor() +} + +func (ClaimProofStatus) Type() protoreflect.EnumType { + return &file_poktroll_proof_types_proto_enumTypes[2] +} + +func (x ClaimProofStatus) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use ClaimProofStatus.Descriptor instead. +func (ClaimProofStatus) EnumDescriptor() ([]byte, []int) { + return file_poktroll_proof_types_proto_rawDescGZIP(), []int{2} +} + type Proof struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1317,17 +1416,20 @@ func (x *Proof) GetClosestMerkleProof() []byte { return nil } -// Claim is the serialized object stored on-chain for claims pending to be proven +// Claim is the serialized object stored onchain for claims pending to be proven type Claim struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + // Address of the supplier's operator that submitted this claim. SupplierOperatorAddress string `protobuf:"bytes,1,opt,name=supplier_operator_address,json=supplierOperatorAddress,proto3" json:"supplier_operator_address,omitempty"` // the address of the supplier's operator that submitted this claim - // The session header of the session that this claim is for. + // Session header this claim is for. SessionHeader *session.SessionHeader `protobuf:"bytes,2,opt,name=session_header,json=sessionHeader,proto3" json:"session_header,omitempty"` - // Root hash returned from smt.SMST#Root(). + // Root hash from smt.SMST#Root(). RootHash []byte `protobuf:"bytes,3,opt,name=root_hash,json=rootHash,proto3" json:"root_hash,omitempty"` + // Important: This field MUST only be set by proofKeeper#EnsureValidProofSignaturesAndClosestPath + ProofValidationStatus ClaimProofStatus `protobuf:"varint,4,opt,name=proof_validation_status,json=proofValidationStatus,proto3,enum=poktroll.proof.ClaimProofStatus" json:"proof_validation_status,omitempty"` } func (x *Claim) Reset() { @@ -1371,6 +1473,13 @@ func (x *Claim) GetRootHash() []byte { return nil } +func (x *Claim) GetProofValidationStatus() ClaimProofStatus { + if x != nil { + return x.ProofValidationStatus + } + return ClaimProofStatus_PENDING_VALIDATION +} + var File_poktroll_proof_types_proto protoreflect.FileDescriptor var file_poktroll_proof_types_proto_rawDesc = []byte{ @@ -1395,7 +1504,7 @@ var file_poktroll_proof_types_proto_rawDesc = []byte{ 0x64, 0x65, 0x72, 0x12, 0x30, 0x0a, 0x14, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x73, 0x74, 0x5f, 0x6d, 0x65, 0x72, 0x6b, 0x6c, 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x6f, 0x66, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x12, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x72, 0x6b, 0x6c, 0x65, - 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x22, 0xc2, 0x01, 0x0a, 0x05, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x12, + 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x22, 0x9c, 0x02, 0x0a, 0x05, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x12, 0x54, 0x0a, 0x19, 0x73, 0x75, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x5f, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, @@ -1407,27 +1516,37 @@ var file_poktroll_proof_types_proto_rawDesc = []byte{ 0x2e, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x52, 0x0d, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x6f, 0x6f, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, - 0x52, 0x08, 0x72, 0x6f, 0x6f, 0x74, 0x48, 0x61, 0x73, 0x68, 0x2a, 0x4c, 0x0a, 0x16, 0x50, 0x72, - 0x6f, 0x6f, 0x66, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, - 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x10, 0x0a, 0x0c, 0x4e, 0x4f, 0x54, 0x5f, 0x52, 0x45, 0x51, 0x55, - 0x49, 0x52, 0x45, 0x44, 0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d, 0x50, 0x52, 0x4f, 0x42, 0x41, 0x42, - 0x49, 0x4c, 0x49, 0x53, 0x54, 0x49, 0x43, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x54, 0x48, 0x52, - 0x45, 0x53, 0x48, 0x4f, 0x4c, 0x44, 0x10, 0x02, 0x2a, 0x44, 0x0a, 0x0f, 0x43, 0x6c, 0x61, 0x69, - 0x6d, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x53, 0x74, 0x61, 0x67, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x43, - 0x4c, 0x41, 0x49, 0x4d, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x50, 0x52, 0x4f, 0x56, - 0x45, 0x4e, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x45, 0x54, 0x54, 0x4c, 0x45, 0x44, 0x10, - 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x45, 0x58, 0x50, 0x49, 0x52, 0x45, 0x44, 0x10, 0x03, 0x42, 0x9e, - 0x01, 0xd8, 0xe2, 0x1e, 0x01, 0x0a, 0x12, 0x63, 0x6f, 0x6d, 0x2e, 0x70, 0x6f, 0x6b, 0x74, 0x72, - 0x6f, 0x6c, 0x6c, 0x2e, 0x70, 0x72, 0x6f, 0x6f, 0x66, 0x42, 0x0a, 0x54, 0x79, 0x70, 0x65, 0x73, - 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x1f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, - 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x70, 0x6f, 0x6b, 0x74, 0x72, 0x6f, - 0x6c, 0x6c, 0x2f, 0x70, 0x72, 0x6f, 0x6f, 0x66, 0xa2, 0x02, 0x03, 0x50, 0x50, 0x58, 0xaa, 0x02, - 0x0e, 0x50, 0x6f, 0x6b, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x2e, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0xca, - 0x02, 0x0e, 0x50, 0x6f, 0x6b, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x5c, 0x50, 0x72, 0x6f, 0x6f, 0x66, - 0xe2, 0x02, 0x1a, 0x50, 0x6f, 0x6b, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x5c, 0x50, 0x72, 0x6f, 0x6f, - 0x66, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x0f, - 0x50, 0x6f, 0x6b, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x3a, 0x3a, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x62, - 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x52, 0x08, 0x72, 0x6f, 0x6f, 0x74, 0x48, 0x61, 0x73, 0x68, 0x12, 0x58, 0x0a, 0x17, 0x70, 0x72, + 0x6f, 0x6f, 0x66, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x70, 0x6f, + 0x6b, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x2e, 0x70, 0x72, 0x6f, 0x6f, 0x66, 0x2e, 0x43, 0x6c, 0x61, + 0x69, 0x6d, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x15, 0x70, + 0x72, 0x6f, 0x6f, 0x66, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x2a, 0x4c, 0x0a, 0x16, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x52, 0x65, 0x71, + 0x75, 0x69, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x10, + 0x0a, 0x0c, 0x4e, 0x4f, 0x54, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x49, 0x52, 0x45, 0x44, 0x10, 0x00, + 0x12, 0x11, 0x0a, 0x0d, 0x50, 0x52, 0x4f, 0x42, 0x41, 0x42, 0x49, 0x4c, 0x49, 0x53, 0x54, 0x49, + 0x43, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x54, 0x48, 0x52, 0x45, 0x53, 0x48, 0x4f, 0x4c, 0x44, + 0x10, 0x02, 0x2a, 0x44, 0x0a, 0x0f, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x50, 0x72, 0x6f, 0x6f, 0x66, + 0x53, 0x74, 0x61, 0x67, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x43, 0x4c, 0x41, 0x49, 0x4d, 0x45, 0x44, + 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x50, 0x52, 0x4f, 0x56, 0x45, 0x4e, 0x10, 0x01, 0x12, 0x0b, + 0x0a, 0x07, 0x53, 0x45, 0x54, 0x54, 0x4c, 0x45, 0x44, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x45, + 0x58, 0x50, 0x49, 0x52, 0x45, 0x44, 0x10, 0x03, 0x2a, 0x46, 0x0a, 0x10, 0x43, 0x6c, 0x61, 0x69, + 0x6d, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a, 0x12, + 0x50, 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x5f, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x41, 0x54, 0x49, + 0x4f, 0x4e, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x41, 0x54, 0x45, + 0x44, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x10, 0x02, + 0x42, 0x9e, 0x01, 0xd8, 0xe2, 0x1e, 0x01, 0x0a, 0x12, 0x63, 0x6f, 0x6d, 0x2e, 0x70, 0x6f, 0x6b, + 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x2e, 0x70, 0x72, 0x6f, 0x6f, 0x66, 0x42, 0x0a, 0x54, 0x79, 0x70, + 0x65, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x1f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, + 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x70, 0x6f, 0x6b, 0x74, + 0x72, 0x6f, 0x6c, 0x6c, 0x2f, 0x70, 0x72, 0x6f, 0x6f, 0x66, 0xa2, 0x02, 0x03, 0x50, 0x50, 0x58, + 0xaa, 0x02, 0x0e, 0x50, 0x6f, 0x6b, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x2e, 0x50, 0x72, 0x6f, 0x6f, + 0x66, 0xca, 0x02, 0x0e, 0x50, 0x6f, 0x6b, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x5c, 0x50, 0x72, 0x6f, + 0x6f, 0x66, 0xe2, 0x02, 0x1a, 0x50, 0x6f, 0x6b, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x5c, 0x50, 0x72, + 0x6f, 0x6f, 0x66, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, + 0x02, 0x0f, 0x50, 0x6f, 0x6b, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x3a, 0x3a, 0x50, 0x72, 0x6f, 0x6f, + 0x66, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -1442,23 +1561,25 @@ func file_poktroll_proof_types_proto_rawDescGZIP() []byte { return file_poktroll_proof_types_proto_rawDescData } -var file_poktroll_proof_types_proto_enumTypes = make([]protoimpl.EnumInfo, 2) +var file_poktroll_proof_types_proto_enumTypes = make([]protoimpl.EnumInfo, 3) var file_poktroll_proof_types_proto_msgTypes = make([]protoimpl.MessageInfo, 2) var file_poktroll_proof_types_proto_goTypes = []interface{}{ (ProofRequirementReason)(0), // 0: poktroll.proof.ProofRequirementReason (ClaimProofStage)(0), // 1: poktroll.proof.ClaimProofStage - (*Proof)(nil), // 2: poktroll.proof.Proof - (*Claim)(nil), // 3: poktroll.proof.Claim - (*session.SessionHeader)(nil), // 4: poktroll.session.SessionHeader + (ClaimProofStatus)(0), // 2: poktroll.proof.ClaimProofStatus + (*Proof)(nil), // 3: poktroll.proof.Proof + (*Claim)(nil), // 4: poktroll.proof.Claim + (*session.SessionHeader)(nil), // 5: poktroll.session.SessionHeader } var file_poktroll_proof_types_proto_depIdxs = []int32{ - 4, // 0: poktroll.proof.Proof.session_header:type_name -> poktroll.session.SessionHeader - 4, // 1: poktroll.proof.Claim.session_header:type_name -> poktroll.session.SessionHeader - 2, // [2:2] is the sub-list for method output_type - 2, // [2:2] is the sub-list for method input_type - 2, // [2:2] is the sub-list for extension type_name - 2, // [2:2] is the sub-list for extension extendee - 0, // [0:2] is the sub-list for field type_name + 5, // 0: poktroll.proof.Proof.session_header:type_name -> poktroll.session.SessionHeader + 5, // 1: poktroll.proof.Claim.session_header:type_name -> poktroll.session.SessionHeader + 2, // 2: poktroll.proof.Claim.proof_validation_status:type_name -> poktroll.proof.ClaimProofStatus + 3, // [3:3] is the sub-list for method output_type + 3, // [3:3] is the sub-list for method input_type + 3, // [3:3] is the sub-list for extension type_name + 3, // [3:3] is the sub-list for extension extendee + 0, // [0:3] is the sub-list for field type_name } func init() { file_poktroll_proof_types_proto_init() } @@ -1497,7 +1618,7 @@ func file_poktroll_proof_types_proto_init() { File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_poktroll_proof_types_proto_rawDesc, - NumEnums: 2, + NumEnums: 3, NumMessages: 2, NumExtensions: 0, NumServices: 0, diff --git a/api/poktroll/service/params.pulsar.go b/api/poktroll/service/params.pulsar.go index 6b180a66a..c7f354952 100644 --- a/api/poktroll/service/params.pulsar.go +++ b/api/poktroll/service/params.pulsar.go @@ -522,7 +522,7 @@ type Params struct { // and transferred to the pocket network foundation. AddServiceFee *v1beta1.Coin `protobuf:"bytes,1,opt,name=add_service_fee,json=addServiceFee,proto3" json:"add_service_fee,omitempty"` // target_num_relays is the target for the EMA of the number of relays per session. - // Per service, on-chain relay mining difficulty will be adjusted to maintain this target. + // Per service, onchain relay mining difficulty will be adjusted to maintain this target. TargetNumRelays uint64 `protobuf:"varint,2,opt,name=target_num_relays,json=targetNumRelays,proto3" json:"target_num_relays,omitempty"` } diff --git a/api/poktroll/service/relay.pulsar.go b/api/poktroll/service/relay.pulsar.go index dca789df5..46491af29 100644 --- a/api/poktroll/service/relay.pulsar.go +++ b/api/poktroll/service/relay.pulsar.go @@ -2667,7 +2667,7 @@ type RelayRequestMetadata struct { // application has delegated to. The signature is made using the ring of the // application in both cases. Signature []byte `protobuf:"bytes,2,opt,name=signature,proto3" json:"signature,omitempty"` - // TODO_MAINNET: make sure we're checking/verifying this address on-chain (if needed). + // TODO_MAINNET: make sure we're checking/verifying this address onchain (if needed). // Relevant conversation: https://github.com/pokt-network/poktroll/pull/567#discussion_r1628722168 // // The supplier operator address the relay is sent to. It is being used on the diff --git a/api/poktroll/service/relay_mining_difficulty.pulsar.go b/api/poktroll/service/relay_mining_difficulty.pulsar.go index 10e3920a7..71cecc89f 100644 --- a/api/poktroll/service/relay_mining_difficulty.pulsar.go +++ b/api/poktroll/service/relay_mining_difficulty.pulsar.go @@ -608,7 +608,7 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// RelayMiningDifficulty is a message used to store the on-chain Relay Mining +// RelayMiningDifficulty is a message used to store the onchain Relay Mining // difficulty associated with a specific service ID. // TODO_TECHDEBT: Embed this message in the Service message. type RelayMiningDifficulty struct { diff --git a/api/poktroll/session/types.pulsar.go b/api/poktroll/session/types.pulsar.go index 0a9c92f0b..b7e886b44 100644 --- a/api/poktroll/session/types.pulsar.go +++ b/api/poktroll/session/types.pulsar.go @@ -1498,11 +1498,11 @@ type SessionHeader struct { ApplicationAddress string `protobuf:"bytes,1,opt,name=application_address,json=applicationAddress,proto3" json:"application_address,omitempty"` // The Bech32 address of the application. ServiceId string `protobuf:"bytes,2,opt,name=service_id,json=serviceId,proto3" json:"service_id,omitempty"` // The service id this session is for - // NOTE: session_id can be derived from the above values using on-chain but is included in the header for convenience + // NOTE: session_id can be derived from the above values using onchain but is included in the header for convenience SessionId string `protobuf:"bytes,3,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"` // A unique pseudoranom ID for this session SessionStartBlockHeight int64 `protobuf:"varint,4,opt,name=session_start_block_height,json=sessionStartBlockHeight,proto3" json:"session_start_block_height,omitempty"` // The height at which this session started // Note that`session_end_block_height` is a derivative of (`start` + `num_blocks_per_session`) - // as goverened by on-chain params at the time of the session start. + // as goverened by onchain params at the time of the session start. // It is stored as an additional field to simplofy business logic in case // the number of blocks_per_session changes during the session. SessionEndBlockHeight int64 `protobuf:"varint,5,opt,name=session_end_block_height,json=sessionEndBlockHeight,proto3" json:"session_end_block_height,omitempty"` // The height at which this session ended, this is the last block of the session diff --git a/api/poktroll/shared/params.pulsar.go b/api/poktroll/shared/params.pulsar.go index c567709c1..e0f788169 100644 --- a/api/poktroll/shared/params.pulsar.go +++ b/api/poktroll/shared/params.pulsar.go @@ -842,12 +842,12 @@ type Params struct { ProofWindowCloseOffsetBlocks uint64 `protobuf:"varint,6,opt,name=proof_window_close_offset_blocks,json=proofWindowCloseOffsetBlocks,proto3" json:"proof_window_close_offset_blocks,omitempty"` // supplier_unbonding_period_sessions is the number of sessions that a supplier must wait after // unstaking before their staked assets are moved to their account balance. - // On-chain business logic requires, and ensures, that the corresponding block count of the unbonding + // Onchain business logic requires, and ensures, that the corresponding block count of the unbonding // period will exceed the end of any active claim & proof lifecycles. SupplierUnbondingPeriodSessions uint64 `protobuf:"varint,7,opt,name=supplier_unbonding_period_sessions,json=supplierUnbondingPeriodSessions,proto3" json:"supplier_unbonding_period_sessions,omitempty"` // application_unbonding_period_sessions is the number of sessions that an application must wait after // unstaking before their staked assets are moved to their account balance. - // On-chain business logic requires, and ensures, that the corresponding block count of the + // Onchain business logic requires, and ensures, that the corresponding block count of the // application unbonding period will exceed the end of its corresponding proof window close height. ApplicationUnbondingPeriodSessions uint64 `protobuf:"varint,8,opt,name=application_unbonding_period_sessions,json=applicationUnbondingPeriodSessions,proto3" json:"application_unbonding_period_sessions,omitempty"` // The amount of upokt that a compute unit should translate to when settling a session. diff --git a/api/poktroll/shared/service.pulsar.go b/api/poktroll/shared/service.pulsar.go index 60a1e6c85..a923eda0b 100644 --- a/api/poktroll/shared/service.pulsar.go +++ b/api/poktroll/shared/service.pulsar.go @@ -2,7 +2,6 @@ package shared import ( - binary "encoding/binary" fmt "fmt" _ "github.com/cosmos/cosmos-proto" runtime "github.com/cosmos/cosmos-proto/runtime" @@ -11,7 +10,6 @@ import ( protoiface "google.golang.org/protobuf/runtime/protoiface" protoimpl "google.golang.org/protobuf/runtime/protoimpl" io "io" - math "math" reflect "reflect" sync "sync" ) @@ -2418,8 +2416,8 @@ func (x *fastReflection_ServiceRevenueShare) Range(f func(protoreflect.FieldDesc return } } - if x.RevSharePercentage != float32(0) || math.Signbit(float64(x.RevSharePercentage)) { - value := protoreflect.ValueOfFloat32(x.RevSharePercentage) + if x.RevSharePercentage != uint64(0) { + value := protoreflect.ValueOfUint64(x.RevSharePercentage) if !f(fd_ServiceRevenueShare_rev_share_percentage, value) { return } @@ -2442,7 +2440,7 @@ func (x *fastReflection_ServiceRevenueShare) Has(fd protoreflect.FieldDescriptor case "poktroll.shared.ServiceRevenueShare.address": return x.Address != "" case "poktroll.shared.ServiceRevenueShare.rev_share_percentage": - return x.RevSharePercentage != float32(0) || math.Signbit(float64(x.RevSharePercentage)) + return x.RevSharePercentage != uint64(0) default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: poktroll.shared.ServiceRevenueShare")) @@ -2462,7 +2460,7 @@ func (x *fastReflection_ServiceRevenueShare) Clear(fd protoreflect.FieldDescript case "poktroll.shared.ServiceRevenueShare.address": x.Address = "" case "poktroll.shared.ServiceRevenueShare.rev_share_percentage": - x.RevSharePercentage = float32(0) + x.RevSharePercentage = uint64(0) default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: poktroll.shared.ServiceRevenueShare")) @@ -2484,7 +2482,7 @@ func (x *fastReflection_ServiceRevenueShare) Get(descriptor protoreflect.FieldDe return protoreflect.ValueOfString(value) case "poktroll.shared.ServiceRevenueShare.rev_share_percentage": value := x.RevSharePercentage - return protoreflect.ValueOfFloat32(value) + return protoreflect.ValueOfUint64(value) default: if descriptor.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: poktroll.shared.ServiceRevenueShare")) @@ -2508,7 +2506,7 @@ func (x *fastReflection_ServiceRevenueShare) Set(fd protoreflect.FieldDescriptor case "poktroll.shared.ServiceRevenueShare.address": x.Address = value.Interface().(string) case "poktroll.shared.ServiceRevenueShare.rev_share_percentage": - x.RevSharePercentage = float32(value.Float()) + x.RevSharePercentage = value.Uint() default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: poktroll.shared.ServiceRevenueShare")) @@ -2549,7 +2547,7 @@ func (x *fastReflection_ServiceRevenueShare) NewField(fd protoreflect.FieldDescr case "poktroll.shared.ServiceRevenueShare.address": return protoreflect.ValueOfString("") case "poktroll.shared.ServiceRevenueShare.rev_share_percentage": - return protoreflect.ValueOfFloat32(float32(0)) + return protoreflect.ValueOfUint64(uint64(0)) default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: poktroll.shared.ServiceRevenueShare")) @@ -2623,8 +2621,8 @@ func (x *fastReflection_ServiceRevenueShare) ProtoMethods() *protoiface.Methods if l > 0 { n += 1 + l + runtime.Sov(uint64(l)) } - if x.RevSharePercentage != 0 || math.Signbit(float64(x.RevSharePercentage)) { - n += 5 + if x.RevSharePercentage != 0 { + n += 1 + runtime.Sov(uint64(x.RevSharePercentage)) } if x.unknownFields != nil { n += len(x.unknownFields) @@ -2655,11 +2653,10 @@ func (x *fastReflection_ServiceRevenueShare) ProtoMethods() *protoiface.Methods i -= len(x.unknownFields) copy(dAtA[i:], x.unknownFields) } - if x.RevSharePercentage != 0 || math.Signbit(float64(x.RevSharePercentage)) { - i -= 4 - binary.LittleEndian.PutUint32(dAtA[i:], uint32(math.Float32bits(float32(x.RevSharePercentage)))) + if x.RevSharePercentage != 0 { + i = runtime.EncodeVarint(dAtA, i, uint64(x.RevSharePercentage)) i-- - dAtA[i] = 0x15 + dAtA[i] = 0x18 } if len(x.Address) > 0 { i -= len(x.Address) @@ -2749,17 +2746,25 @@ func (x *fastReflection_ServiceRevenueShare) ProtoMethods() *protoiface.Methods } x.Address = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 2: - if wireType != 5 { + case 3: + if wireType != 0 { return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field RevSharePercentage", wireType) } - var v uint32 - if (iNdEx + 4) > l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + x.RevSharePercentage = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + x.RevSharePercentage |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } } - v = uint32(binary.LittleEndian.Uint32(dAtA[iNdEx:])) - iNdEx += 4 - x.RevSharePercentage = float32(math.Float32frombits(v)) default: iNdEx = preIndex skippy, err := runtime.Skip(dAtA[iNdEx:]) @@ -3336,7 +3341,7 @@ func (RPCType) EnumDescriptor() ([]byte, []int) { } // Enum to define configuration options -// TODO_RESEARCH: Should these be configs, SLAs or something else? There will be more discussion once we get closer to implementing on-chain QoS. +// TODO_RESEARCH: Should these be configs, SLAs or something else? There will be more discussion once we get closer to implementing onchain QoS. type ConfigOptions int32 const ( @@ -3398,7 +3403,7 @@ type Service struct { // cost_per_relay_for_specific_service = compute_units_per_relay_for_specific_service * compute_units_to_tokens_multipler_global_value ComputeUnitsPerRelay uint64 `protobuf:"varint,3,opt,name=compute_units_per_relay,json=computeUnitsPerRelay,proto3" json:"compute_units_per_relay,omitempty"` // Compute units required per relay for this service // The owner address that created the service. - // It is the address that receives rewards based on the Service's on-chain usage + // It is the address that receives rewards based on the Service's onchain usage // It is the only address that can update the service configuration (e.g. compute_units_per_relay), // or make other updates to it. OwnerAddress string `protobuf:"bytes,4,opt,name=owner_address,json=ownerAddress,proto3" json:"owner_address,omitempty"` // The Bech32 address of the service owner / creator @@ -3598,8 +3603,8 @@ type ServiceRevenueShare struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` // The Bech32 address of the revenue share recipient - RevSharePercentage float32 `protobuf:"fixed32,2,opt,name=rev_share_percentage,json=revSharePercentage,proto3" json:"rev_share_percentage,omitempty"` // The percentage of revenue share the recipient will receive + Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` // The Bech32 address of the revenue share recipient + RevSharePercentage uint64 `protobuf:"varint,3,opt,name=rev_share_percentage,json=revSharePercentage,proto3" json:"rev_share_percentage,omitempty"` // The percentage of revenue share the recipient will receive } func (x *ServiceRevenueShare) Reset() { @@ -3629,7 +3634,7 @@ func (x *ServiceRevenueShare) GetAddress() string { return "" } -func (x *ServiceRevenueShare) GetRevSharePercentage() float32 { +func (x *ServiceRevenueShare) GetRevSharePercentage() uint64 { if x != nil { return x.RevSharePercentage } @@ -3724,39 +3729,39 @@ var file_poktroll_shared_service_proto_rawDesc = []byte{ 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x70, 0x6f, 0x6b, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x2e, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x63, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x73, 0x22, 0x7b, 0x0a, 0x13, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, - 0x65, 0x76, 0x65, 0x6e, 0x75, 0x65, 0x53, 0x68, 0x61, 0x72, 0x65, 0x12, 0x32, 0x0a, 0x07, 0x61, - 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, - 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, - 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, - 0x30, 0x0a, 0x14, 0x72, 0x65, 0x76, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x65, 0x5f, 0x70, 0x65, 0x72, - 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x02, 0x52, 0x12, 0x72, - 0x65, 0x76, 0x53, 0x68, 0x61, 0x72, 0x65, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, - 0x65, 0x22, 0x56, 0x0a, 0x0c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4f, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x30, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1e, - 0x2e, 0x70, 0x6f, 0x6b, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x2e, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, - 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x03, - 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x2a, 0x4b, 0x0a, 0x07, 0x52, 0x50, 0x43, - 0x54, 0x79, 0x70, 0x65, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x5f, - 0x52, 0x50, 0x43, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x47, 0x52, 0x50, 0x43, 0x10, 0x01, 0x12, - 0x0d, 0x0a, 0x09, 0x57, 0x45, 0x42, 0x53, 0x4f, 0x43, 0x4b, 0x45, 0x54, 0x10, 0x02, 0x12, 0x0c, - 0x0a, 0x08, 0x4a, 0x53, 0x4f, 0x4e, 0x5f, 0x52, 0x50, 0x43, 0x10, 0x03, 0x12, 0x08, 0x0a, 0x04, - 0x52, 0x45, 0x53, 0x54, 0x10, 0x04, 0x2a, 0x30, 0x0a, 0x0d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x12, 0x0a, 0x0e, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, - 0x57, 0x4e, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x54, - 0x49, 0x4d, 0x45, 0x4f, 0x55, 0x54, 0x10, 0x01, 0x42, 0xa6, 0x01, 0xd8, 0xe2, 0x1e, 0x01, 0x0a, - 0x13, 0x63, 0x6f, 0x6d, 0x2e, 0x70, 0x6f, 0x6b, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x2e, 0x73, 0x68, - 0x61, 0x72, 0x65, 0x64, 0x42, 0x0c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, - 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x20, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, - 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x70, 0x6f, 0x6b, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x2f, - 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0xa2, 0x02, 0x03, 0x50, 0x53, 0x58, 0xaa, 0x02, 0x0f, 0x50, - 0x6f, 0x6b, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x65, 0x64, 0xca, 0x02, - 0x0f, 0x50, 0x6f, 0x6b, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x5c, 0x53, 0x68, 0x61, 0x72, 0x65, 0x64, - 0xe2, 0x02, 0x1b, 0x50, 0x6f, 0x6b, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x5c, 0x53, 0x68, 0x61, 0x72, - 0x65, 0x64, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, - 0x10, 0x50, 0x6f, 0x6b, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x3a, 0x3a, 0x53, 0x68, 0x61, 0x72, 0x65, - 0x64, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x66, 0x69, 0x67, 0x73, 0x22, 0x81, 0x01, 0x0a, 0x13, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x52, 0x65, 0x76, 0x65, 0x6e, 0x75, 0x65, 0x53, 0x68, 0x61, 0x72, 0x65, 0x12, 0x32, 0x0a, 0x07, + 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, + 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, + 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, + 0x12, 0x30, 0x0a, 0x14, 0x72, 0x65, 0x76, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x65, 0x5f, 0x70, 0x65, + 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x12, + 0x72, 0x65, 0x76, 0x53, 0x68, 0x61, 0x72, 0x65, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, + 0x67, 0x65, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x22, 0x56, 0x0a, 0x0c, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x30, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1e, 0x2e, 0x70, 0x6f, 0x6b, 0x74, 0x72, 0x6f, 0x6c, 0x6c, + 0x2e, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x2a, 0x4b, 0x0a, 0x07, 0x52, 0x50, 0x43, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0f, 0x0a, 0x0b, 0x55, + 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x5f, 0x52, 0x50, 0x43, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, + 0x47, 0x52, 0x50, 0x43, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x57, 0x45, 0x42, 0x53, 0x4f, 0x43, + 0x4b, 0x45, 0x54, 0x10, 0x02, 0x12, 0x0c, 0x0a, 0x08, 0x4a, 0x53, 0x4f, 0x4e, 0x5f, 0x52, 0x50, + 0x43, 0x10, 0x03, 0x12, 0x08, 0x0a, 0x04, 0x52, 0x45, 0x53, 0x54, 0x10, 0x04, 0x2a, 0x30, 0x0a, + 0x0d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x12, + 0x0a, 0x0e, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, + 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x54, 0x49, 0x4d, 0x45, 0x4f, 0x55, 0x54, 0x10, 0x01, 0x42, + 0xa6, 0x01, 0xd8, 0xe2, 0x1e, 0x01, 0x0a, 0x13, 0x63, 0x6f, 0x6d, 0x2e, 0x70, 0x6f, 0x6b, 0x74, + 0x72, 0x6f, 0x6c, 0x6c, 0x2e, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x42, 0x0c, 0x53, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x20, 0x63, 0x6f, 0x73, + 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x70, 0x6f, + 0x6b, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x2f, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0xa2, 0x02, 0x03, + 0x50, 0x53, 0x58, 0xaa, 0x02, 0x0f, 0x50, 0x6f, 0x6b, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x2e, 0x53, + 0x68, 0x61, 0x72, 0x65, 0x64, 0xca, 0x02, 0x0f, 0x50, 0x6f, 0x6b, 0x74, 0x72, 0x6f, 0x6c, 0x6c, + 0x5c, 0x53, 0x68, 0x61, 0x72, 0x65, 0x64, 0xe2, 0x02, 0x1b, 0x50, 0x6f, 0x6b, 0x74, 0x72, 0x6f, + 0x6c, 0x6c, 0x5c, 0x53, 0x68, 0x61, 0x72, 0x65, 0x64, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x10, 0x50, 0x6f, 0x6b, 0x74, 0x72, 0x6f, 0x6c, 0x6c, + 0x3a, 0x3a, 0x53, 0x68, 0x61, 0x72, 0x65, 0x64, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/api/poktroll/shared/supplier.pulsar.go b/api/poktroll/shared/supplier.pulsar.go index 367169513..8ac084889 100644 --- a/api/poktroll/shared/supplier.pulsar.go +++ b/api/poktroll/shared/supplier.pulsar.go @@ -1066,29 +1066,30 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// Supplier is the type defining the actor in Pocket Network that provides RPC services. +// Supplier represents an actor in Pocket Network that provides RPC services type Supplier struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The address of the owner (i.e. staker, custodial) that owns the funds for staking. - // By default, this address is the one that receives all the rewards unless owtherwise specified. - // This property cannot be updated by the operator. - OwnerAddress string `protobuf:"bytes,1,opt,name=owner_address,json=ownerAddress,proto3" json:"owner_address,omitempty"` // Bech32 cosmos address - // The operator address of the supplier operator (i.e. the one managing the off-chain server). - // The operator address can update the supplier's configurations excluding the owner address. - // This property does not change over the supplier's lifespan, the supplier must be unstaked - // and re-staked to effectively update this value. - OperatorAddress string `protobuf:"bytes,2,opt,name=operator_address,json=operatorAddress,proto3" json:"operator_address,omitempty"` // Bech32 cosmos address - Stake *v1beta1.Coin `protobuf:"bytes,3,opt,name=stake,proto3" json:"stake,omitempty"` // The total amount of uPOKT the supplier has staked - Services []*SupplierServiceConfig `protobuf:"bytes,4,rep,name=services,proto3" json:"services,omitempty"` // The service configs this supplier can support - // The session end height at which an actively unbonding supplier unbonds its stake. - // If the supplier did not unstake, this value will be 0. + // Owner address that controls the staked funds and receives rewards by default + // Cannot be updated by the operator + OwnerAddress string `protobuf:"bytes,1,opt,name=owner_address,json=ownerAddress,proto3" json:"owner_address,omitempty"` + // Operator address managing the offchain server + // Immutable for supplier's lifespan - requires unstake/re-stake to change. + // Can update supplier configs except for owner address. + OperatorAddress string `protobuf:"bytes,2,opt,name=operator_address,json=operatorAddress,proto3" json:"operator_address,omitempty"` + // Total amount of staked uPOKT + Stake *v1beta1.Coin `protobuf:"bytes,3,opt,name=stake,proto3" json:"stake,omitempty"` + // List of service configurations supported by this supplier + Services []*SupplierServiceConfig `protobuf:"bytes,4,rep,name=services,proto3" json:"services,omitempty"` + // Session end height when supplier initiated unstaking (0 if not unstaking) UnstakeSessionEndHeight uint64 `protobuf:"varint,5,opt,name=unstake_session_end_height,json=unstakeSessionEndHeight,proto3" json:"unstake_session_end_height,omitempty"` - // services_activation_heights_map is a map of serviceIds to the height at - // which the staked supplier will become active for that service. - // Activation heights are session start heights. + // Mapping of serviceIds to their activation heights + // - Key: serviceId + // - Value: Session start height when supplier becomes active for the service + // TODO_MAINNET(@olshansk, #1033): Look into moving this to an external repeated protobuf + // because maps are no longer supported for serialized types in the CosmoSDK. ServicesActivationHeightsMap map[string]uint64 `protobuf:"bytes,6,rep,name=services_activation_heights_map,json=servicesActivationHeightsMap,proto3" json:"services_activation_heights_map,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` } diff --git a/api/poktroll/supplier/event.pulsar.go b/api/poktroll/supplier/event.pulsar.go index 22dcc4989..41941710f 100644 --- a/api/poktroll/supplier/event.pulsar.go +++ b/api/poktroll/supplier/event.pulsar.go @@ -2250,7 +2250,7 @@ func (SupplierUnbondingReason) EnumDescriptor() ([]byte, []int) { return file_poktroll_supplier_event_proto_rawDescGZIP(), []int{0} } -// EventSupplierStaked is emitted when a supplier stake message is committed on-chain. +// EventSupplierStaked is emitted when a supplier stake message is committed onchain. type EventSupplierStaked struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -2296,7 +2296,7 @@ func (x *EventSupplierStaked) GetSessionEndHeight() int64 { } // EventSupplierUnbondingBegin is emitted when an application unstake message -// is committed on-chain, indicating that the supplier will now begin unbonding. +// is committed onchain, indicating that the supplier will now begin unbonding. type EventSupplierUnbondingBegin struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache diff --git a/api/poktroll/supplier/query.pulsar.go b/api/poktroll/supplier/query.pulsar.go index d1f087c62..392f4aa39 100644 --- a/api/poktroll/supplier/query.pulsar.go +++ b/api/poktroll/supplier/query.pulsar.go @@ -1668,12 +1668,14 @@ func (x *fastReflection_QueryGetSupplierResponse) ProtoMethods() *protoiface.Met var ( md_QueryAllSuppliersRequest protoreflect.MessageDescriptor fd_QueryAllSuppliersRequest_pagination protoreflect.FieldDescriptor + fd_QueryAllSuppliersRequest_service_id protoreflect.FieldDescriptor ) func init() { file_poktroll_supplier_query_proto_init() md_QueryAllSuppliersRequest = File_poktroll_supplier_query_proto.Messages().ByName("QueryAllSuppliersRequest") fd_QueryAllSuppliersRequest_pagination = md_QueryAllSuppliersRequest.Fields().ByName("pagination") + fd_QueryAllSuppliersRequest_service_id = md_QueryAllSuppliersRequest.Fields().ByName("service_id") } var _ protoreflect.Message = (*fastReflection_QueryAllSuppliersRequest)(nil) @@ -1747,6 +1749,16 @@ func (x *fastReflection_QueryAllSuppliersRequest) Range(f func(protoreflect.Fiel return } } + if x.Filter != nil { + switch o := x.Filter.(type) { + case *QueryAllSuppliersRequest_ServiceId: + v := o.ServiceId + value := protoreflect.ValueOfString(v) + if !f(fd_QueryAllSuppliersRequest_service_id, value) { + return + } + } + } } // Has reports whether a field is populated. @@ -1764,6 +1776,14 @@ func (x *fastReflection_QueryAllSuppliersRequest) Has(fd protoreflect.FieldDescr switch fd.FullName() { case "poktroll.supplier.QueryAllSuppliersRequest.pagination": return x.Pagination != nil + case "poktroll.supplier.QueryAllSuppliersRequest.service_id": + if x.Filter == nil { + return false + } else if _, ok := x.Filter.(*QueryAllSuppliersRequest_ServiceId); ok { + return true + } else { + return false + } default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: poktroll.supplier.QueryAllSuppliersRequest")) @@ -1782,6 +1802,8 @@ func (x *fastReflection_QueryAllSuppliersRequest) Clear(fd protoreflect.FieldDes switch fd.FullName() { case "poktroll.supplier.QueryAllSuppliersRequest.pagination": x.Pagination = nil + case "poktroll.supplier.QueryAllSuppliersRequest.service_id": + x.Filter = nil default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: poktroll.supplier.QueryAllSuppliersRequest")) @@ -1801,6 +1823,14 @@ func (x *fastReflection_QueryAllSuppliersRequest) Get(descriptor protoreflect.Fi case "poktroll.supplier.QueryAllSuppliersRequest.pagination": value := x.Pagination return protoreflect.ValueOfMessage(value.ProtoReflect()) + case "poktroll.supplier.QueryAllSuppliersRequest.service_id": + if x.Filter == nil { + return protoreflect.ValueOfString("") + } else if v, ok := x.Filter.(*QueryAllSuppliersRequest_ServiceId); ok { + return protoreflect.ValueOfString(v.ServiceId) + } else { + return protoreflect.ValueOfString("") + } default: if descriptor.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: poktroll.supplier.QueryAllSuppliersRequest")) @@ -1823,6 +1853,9 @@ func (x *fastReflection_QueryAllSuppliersRequest) Set(fd protoreflect.FieldDescr switch fd.FullName() { case "poktroll.supplier.QueryAllSuppliersRequest.pagination": x.Pagination = value.Message().Interface().(*v1beta1.PageRequest) + case "poktroll.supplier.QueryAllSuppliersRequest.service_id": + cv := value.Interface().(string) + x.Filter = &QueryAllSuppliersRequest_ServiceId{ServiceId: cv} default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: poktroll.supplier.QueryAllSuppliersRequest")) @@ -1848,6 +1881,8 @@ func (x *fastReflection_QueryAllSuppliersRequest) Mutable(fd protoreflect.FieldD x.Pagination = new(v1beta1.PageRequest) } return protoreflect.ValueOfMessage(x.Pagination.ProtoReflect()) + case "poktroll.supplier.QueryAllSuppliersRequest.service_id": + panic(fmt.Errorf("field service_id of message poktroll.supplier.QueryAllSuppliersRequest is not mutable")) default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: poktroll.supplier.QueryAllSuppliersRequest")) @@ -1864,6 +1899,8 @@ func (x *fastReflection_QueryAllSuppliersRequest) NewField(fd protoreflect.Field case "poktroll.supplier.QueryAllSuppliersRequest.pagination": m := new(v1beta1.PageRequest) return protoreflect.ValueOfMessage(m.ProtoReflect()) + case "poktroll.supplier.QueryAllSuppliersRequest.service_id": + return protoreflect.ValueOfString("") default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: poktroll.supplier.QueryAllSuppliersRequest")) @@ -1877,6 +1914,14 @@ func (x *fastReflection_QueryAllSuppliersRequest) NewField(fd protoreflect.Field // It panics if the oneof descriptor does not belong to this message. func (x *fastReflection_QueryAllSuppliersRequest) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { switch d.FullName() { + case "poktroll.supplier.QueryAllSuppliersRequest.filter": + if x.Filter == nil { + return nil + } + switch x.Filter.(type) { + case *QueryAllSuppliersRequest_ServiceId: + return x.Descriptor().Fields().ByName("service_id") + } default: panic(fmt.Errorf("%s is not a oneof field in poktroll.supplier.QueryAllSuppliersRequest", d.FullName())) } @@ -1937,6 +1982,14 @@ func (x *fastReflection_QueryAllSuppliersRequest) ProtoMethods() *protoiface.Met l = options.Size(x.Pagination) n += 1 + l + runtime.Sov(uint64(l)) } + switch x := x.Filter.(type) { + case *QueryAllSuppliersRequest_ServiceId: + if x == nil { + break + } + l = len(x.ServiceId) + n += 1 + l + runtime.Sov(uint64(l)) + } if x.unknownFields != nil { n += len(x.unknownFields) } @@ -1966,6 +2019,14 @@ func (x *fastReflection_QueryAllSuppliersRequest) ProtoMethods() *protoiface.Met i -= len(x.unknownFields) copy(dAtA[i:], x.unknownFields) } + switch x := x.Filter.(type) { + case *QueryAllSuppliersRequest_ServiceId: + i -= len(x.ServiceId) + copy(dAtA[i:], x.ServiceId) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.ServiceId))) + i-- + dAtA[i] = 0x12 + } if x.Pagination != nil { encoded, err := options.Marshal(x.Pagination) if err != nil { @@ -2065,6 +2126,38 @@ func (x *fastReflection_QueryAllSuppliersRequest) ProtoMethods() *protoiface.Met return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err } iNdEx = postIndex + case 2: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field ServiceId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Filter = &QueryAllSuppliersRequest_ServiceId{string(dAtA[iNdEx:postIndex])} + iNdEx = postIndex default: iNdEx = preIndex skippy, err := runtime.Skip(dAtA[iNdEx:]) @@ -2755,7 +2848,7 @@ type QueryGetSupplierRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - OperatorAddress string `protobuf:"bytes,1,opt,name=operator_address,json=operatorAddress,proto3" json:"operator_address,omitempty"` + OperatorAddress string `protobuf:"bytes,1,opt,name=operator_address,json=operatorAddress,proto3" json:"operator_address,omitempty"` // TODO_TECHDEBT: Add the ability to query for a supplier by owner_id } func (x *QueryGetSupplierRequest) Reset() { @@ -2826,6 +2919,10 @@ type QueryAllSuppliersRequest struct { unknownFields protoimpl.UnknownFields Pagination *v1beta1.PageRequest `protobuf:"bytes,1,opt,name=pagination,proto3" json:"pagination,omitempty"` + // Types that are assignable to Filter: + // + // *QueryAllSuppliersRequest_ServiceId + Filter isQueryAllSuppliersRequest_Filter `protobuf_oneof:"filter"` } func (x *QueryAllSuppliersRequest) Reset() { @@ -2855,6 +2952,30 @@ func (x *QueryAllSuppliersRequest) GetPagination() *v1beta1.PageRequest { return nil } +func (x *QueryAllSuppliersRequest) GetFilter() isQueryAllSuppliersRequest_Filter { + if x != nil { + return x.Filter + } + return nil +} + +func (x *QueryAllSuppliersRequest) GetServiceId() string { + if x, ok := x.GetFilter().(*QueryAllSuppliersRequest_ServiceId); ok { + return x.ServiceId + } + return "" +} + +type isQueryAllSuppliersRequest_Filter interface { + isQueryAllSuppliersRequest_Filter() +} + +type QueryAllSuppliersRequest_ServiceId struct { + ServiceId string `protobuf:"bytes,2,opt,name=service_id,json=serviceId,proto3,oneof"` // unique service identifier to filter by +} + +func (*QueryAllSuppliersRequest_ServiceId) isQueryAllSuppliersRequest_Filter() {} + type QueryAllSuppliersResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -2937,65 +3058,67 @@ var file_poktroll_supplier_query_proto_rawDesc = []byte{ 0x69, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x6f, 0x6b, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x2e, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x2e, 0x53, 0x75, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x42, 0x04, 0xc8, 0xde, 0x1f, 0x00, 0x52, 0x08, 0x73, 0x75, 0x70, 0x70, - 0x6c, 0x69, 0x65, 0x72, 0x22, 0x62, 0x0a, 0x18, 0x51, 0x75, 0x65, 0x72, 0x79, 0x41, 0x6c, 0x6c, - 0x53, 0x75, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x46, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, - 0x73, 0x65, 0x2e, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, - 0x2e, 0x50, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x0a, 0x70, 0x61, - 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xa1, 0x01, 0x0a, 0x19, 0x51, 0x75, 0x65, - 0x72, 0x79, 0x41, 0x6c, 0x6c, 0x53, 0x75, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3b, 0x0a, 0x08, 0x73, 0x75, 0x70, 0x70, 0x6c, 0x69, - 0x65, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x6f, 0x6b, 0x74, 0x72, - 0x6f, 0x6c, 0x6c, 0x2e, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x2e, 0x53, 0x75, 0x70, 0x70, 0x6c, - 0x69, 0x65, 0x72, 0x42, 0x04, 0xc8, 0xde, 0x1f, 0x00, 0x52, 0x08, 0x73, 0x75, 0x70, 0x70, 0x6c, - 0x69, 0x65, 0x72, 0x12, 0x47, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, - 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x62, 0x65, - 0x74, 0x61, 0x31, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x32, 0xda, 0x03, 0x0a, - 0x05, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x87, 0x01, 0x0a, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, - 0x73, 0x12, 0x25, 0x2e, 0x70, 0x6f, 0x6b, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x2e, 0x73, 0x75, 0x70, - 0x70, 0x6c, 0x69, 0x65, 0x72, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x70, 0x6f, 0x6b, 0x74, 0x72, - 0x6f, 0x6c, 0x6c, 0x2e, 0x73, 0x75, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x2e, 0x51, 0x75, 0x65, - 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x28, 0x12, 0x26, 0x2f, 0x70, 0x6f, 0x6b, 0x74, 0x2d, - 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x70, 0x6f, 0x6b, 0x74, 0x72, 0x6f, 0x6c, 0x6c, - 0x2f, 0x73, 0x75, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x2f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, - 0x12, 0xa8, 0x01, 0x0a, 0x08, 0x53, 0x75, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x12, 0x2a, 0x2e, + 0x6c, 0x69, 0x65, 0x72, 0x22, 0x8d, 0x01, 0x0a, 0x18, 0x51, 0x75, 0x65, 0x72, 0x79, 0x41, 0x6c, + 0x6c, 0x53, 0x75, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x46, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, + 0x61, 0x73, 0x65, 0x2e, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, + 0x31, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x0a, 0x70, + 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x0a, 0x73, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, + 0x09, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x42, 0x08, 0x0a, 0x06, 0x66, 0x69, + 0x6c, 0x74, 0x65, 0x72, 0x22, 0xa1, 0x01, 0x0a, 0x19, 0x51, 0x75, 0x65, 0x72, 0x79, 0x41, 0x6c, + 0x6c, 0x53, 0x75, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x3b, 0x0a, 0x08, 0x73, 0x75, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x6f, 0x6b, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x2e, + 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x2e, 0x53, 0x75, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x42, + 0x04, 0xc8, 0xde, 0x1f, 0x00, 0x52, 0x08, 0x73, 0x75, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x12, + 0x47, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, + 0x65, 0x2e, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, + 0x50, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x0a, 0x70, 0x61, + 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x32, 0xda, 0x03, 0x0a, 0x05, 0x51, 0x75, 0x65, + 0x72, 0x79, 0x12, 0x87, 0x01, 0x0a, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x25, 0x2e, 0x70, 0x6f, 0x6b, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x2e, 0x73, 0x75, 0x70, 0x70, 0x6c, 0x69, 0x65, - 0x72, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x47, 0x65, 0x74, 0x53, 0x75, 0x70, 0x70, 0x6c, 0x69, - 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x70, 0x6f, 0x6b, 0x74, + 0x72, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x70, 0x6f, 0x6b, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x2e, + 0x73, 0x75, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, + 0x72, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2e, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x28, 0x12, 0x26, 0x2f, 0x70, 0x6f, 0x6b, 0x74, 0x2d, 0x6e, 0x65, 0x74, 0x77, + 0x6f, 0x72, 0x6b, 0x2f, 0x70, 0x6f, 0x6b, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x2f, 0x73, 0x75, 0x70, + 0x70, 0x6c, 0x69, 0x65, 0x72, 0x2f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0xa8, 0x01, 0x0a, + 0x08, 0x53, 0x75, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x12, 0x2a, 0x2e, 0x70, 0x6f, 0x6b, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x2e, 0x73, 0x75, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x47, 0x65, 0x74, 0x53, 0x75, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x43, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3d, 0x12, 0x3b, - 0x2f, 0x70, 0x6f, 0x6b, 0x74, 0x2d, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x70, 0x6f, - 0x6b, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x2f, 0x73, 0x75, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x2f, - 0x73, 0x75, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x2f, 0x7b, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, - 0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x7d, 0x12, 0x9b, 0x01, 0x0a, 0x0c, - 0x41, 0x6c, 0x6c, 0x53, 0x75, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x73, 0x12, 0x2b, 0x2e, 0x70, - 0x6f, 0x6b, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x2e, 0x73, 0x75, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x72, - 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x41, 0x6c, 0x6c, 0x53, 0x75, 0x70, 0x70, 0x6c, 0x69, 0x65, - 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x70, 0x6f, 0x6b, 0x74, - 0x72, 0x6f, 0x6c, 0x6c, 0x2e, 0x73, 0x75, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x2e, 0x51, 0x75, - 0x65, 0x72, 0x79, 0x41, 0x6c, 0x6c, 0x53, 0x75, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x30, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2a, 0x12, - 0x28, 0x2f, 0x70, 0x6f, 0x6b, 0x74, 0x2d, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x70, - 0x6f, 0x6b, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x2f, 0x73, 0x75, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x72, - 0x2f, 0x73, 0x75, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x42, 0xb0, 0x01, 0xd8, 0xe2, 0x1e, 0x01, - 0x0a, 0x15, 0x63, 0x6f, 0x6d, 0x2e, 0x70, 0x6f, 0x6b, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x2e, 0x73, - 0x75, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x42, 0x0a, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x72, - 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x22, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, - 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x70, 0x6f, 0x6b, 0x74, 0x72, 0x6f, 0x6c, 0x6c, - 0x2f, 0x73, 0x75, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x72, 0xa2, 0x02, 0x03, 0x50, 0x53, 0x58, 0xaa, - 0x02, 0x11, 0x50, 0x6f, 0x6b, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x2e, 0x53, 0x75, 0x70, 0x70, 0x6c, - 0x69, 0x65, 0x72, 0xca, 0x02, 0x11, 0x50, 0x6f, 0x6b, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x5c, 0x53, - 0x75, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x72, 0xe2, 0x02, 0x1d, 0x50, 0x6f, 0x6b, 0x74, 0x72, 0x6f, - 0x6c, 0x6c, 0x5c, 0x53, 0x75, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x5c, 0x47, 0x50, 0x42, 0x4d, - 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x12, 0x50, 0x6f, 0x6b, 0x74, 0x72, 0x6f, - 0x6c, 0x6c, 0x3a, 0x3a, 0x53, 0x75, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x62, 0x06, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x33, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x70, 0x6f, 0x6b, 0x74, 0x72, 0x6f, 0x6c, 0x6c, + 0x2e, 0x73, 0x75, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x47, + 0x65, 0x74, 0x53, 0x75, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x43, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3d, 0x12, 0x3b, 0x2f, 0x70, 0x6f, 0x6b, + 0x74, 0x2d, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x70, 0x6f, 0x6b, 0x74, 0x72, 0x6f, + 0x6c, 0x6c, 0x2f, 0x73, 0x75, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x2f, 0x73, 0x75, 0x70, 0x70, + 0x6c, 0x69, 0x65, 0x72, 0x2f, 0x7b, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, + 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x7d, 0x12, 0x9b, 0x01, 0x0a, 0x0c, 0x41, 0x6c, 0x6c, 0x53, + 0x75, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x73, 0x12, 0x2b, 0x2e, 0x70, 0x6f, 0x6b, 0x74, 0x72, + 0x6f, 0x6c, 0x6c, 0x2e, 0x73, 0x75, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x2e, 0x51, 0x75, 0x65, + 0x72, 0x79, 0x41, 0x6c, 0x6c, 0x53, 0x75, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x70, 0x6f, 0x6b, 0x74, 0x72, 0x6f, 0x6c, 0x6c, + 0x2e, 0x73, 0x75, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x41, + 0x6c, 0x6c, 0x53, 0x75, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x30, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2a, 0x12, 0x28, 0x2f, 0x70, 0x6f, + 0x6b, 0x74, 0x2d, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x70, 0x6f, 0x6b, 0x74, 0x72, + 0x6f, 0x6c, 0x6c, 0x2f, 0x73, 0x75, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x2f, 0x73, 0x75, 0x70, + 0x70, 0x6c, 0x69, 0x65, 0x72, 0x42, 0xb0, 0x01, 0xd8, 0xe2, 0x1e, 0x01, 0x0a, 0x15, 0x63, 0x6f, + 0x6d, 0x2e, 0x70, 0x6f, 0x6b, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x2e, 0x73, 0x75, 0x70, 0x70, 0x6c, + 0x69, 0x65, 0x72, 0x42, 0x0a, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, + 0x01, 0x5a, 0x22, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x70, 0x6f, 0x6b, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x2f, 0x73, 0x75, 0x70, + 0x70, 0x6c, 0x69, 0x65, 0x72, 0xa2, 0x02, 0x03, 0x50, 0x53, 0x58, 0xaa, 0x02, 0x11, 0x50, 0x6f, + 0x6b, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x2e, 0x53, 0x75, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x72, 0xca, + 0x02, 0x11, 0x50, 0x6f, 0x6b, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x5c, 0x53, 0x75, 0x70, 0x70, 0x6c, + 0x69, 0x65, 0x72, 0xe2, 0x02, 0x1d, 0x50, 0x6f, 0x6b, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x5c, 0x53, + 0x75, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0xea, 0x02, 0x12, 0x50, 0x6f, 0x6b, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x3a, 0x3a, + 0x53, 0x75, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -3122,6 +3245,9 @@ func file_poktroll_supplier_query_proto_init() { } } } + file_poktroll_supplier_query_proto_msgTypes[4].OneofWrappers = []interface{}{ + (*QueryAllSuppliersRequest_ServiceId)(nil), + } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/api/poktroll/tokenomics/event.pulsar.go b/api/poktroll/tokenomics/event.pulsar.go index af0c412dc..54b8df12e 100644 --- a/api/poktroll/tokenomics/event.pulsar.go +++ b/api/poktroll/tokenomics/event.pulsar.go @@ -3480,7 +3480,7 @@ func (ClaimExpirationReason) EnumDescriptor() ([]byte, []int) { } // EventClaimExpired is an event emitted during settlement whenever a claim requiring -// an on-chain proof doesn't have one. The claim cannot be settled, leading to that work +// an onchain proof doesn't have one. The claim cannot be settled, leading to that work // never being rewarded. type EventClaimExpired struct { state protoimpl.MessageState diff --git a/app/app.go b/app/app.go index 614a04b78..7a9100f29 100644 --- a/app/app.go +++ b/app/app.go @@ -70,7 +70,8 @@ type App struct { sm *module.SimulationManager // this line is used by starport scaffolding # stargate/app/keeperDeclaration - // Ignite CLI adds keepers here when scaffolding new modules. Please move the created keeper to the `keepers` package. + // MUST_READ_DEV_NOTE: Ignite CLI adds keepers here when scaffolding new modules. + // MUST_READ_DEV_ACTION_ITEM: Please move the created keeper to the `keepers` package. } func init() { @@ -214,8 +215,10 @@ func New( &app.Keepers.ProofKeeper, &app.Keepers.TokenomicsKeeper, &app.Keepers.SharedKeeper, + &app.Keepers.MigrationKeeper, // this line is used by starport scaffolding # stargate/app/keeperDefinition - // Ignite CLI adds keepers here when scaffolding new modules. Please move the created keeper to the `keepers` package. + // MUST_READ_DEV_NOTE: Ignite CLI adds keepers here when scaffolding new modules. + // MUST_READ_DEV_ACTION_ITEM: Please move the created keeper to the `keepers` package. ); err != nil { panic(err) } diff --git a/app/app_config.go b/app/app_config.go index 76cc7b5b2..0c91af588 100644 --- a/app/app_config.go +++ b/app/app_config.go @@ -1,6 +1,10 @@ package app import ( + migrationmodulev1 "github.com/pokt-network/poktroll/api/poktroll/migration/module" + _ "github.com/pokt-network/poktroll/x/migration/module" // import for side-effects + migrationmoduletypes "github.com/pokt-network/poktroll/x/migration/types" + // this line is used by starport scaffolding # stargate/app/moduleImport "time" @@ -140,6 +144,7 @@ var ( proofmoduletypes.ModuleName, tokenomicsmoduletypes.ModuleName, sharedmoduletypes.ModuleName, + migrationmoduletypes.ModuleName, // this line is used by starport scaffolding # stargate/app/initGenesis } @@ -172,6 +177,7 @@ var ( proofmoduletypes.ModuleName, tokenomicsmoduletypes.ModuleName, sharedmoduletypes.ModuleName, + migrationmoduletypes.ModuleName, // this line is used by starport scaffolding # stargate/app/beginBlockers } @@ -203,6 +209,7 @@ var ( applicationmoduletypes.ModuleName, suppliermoduletypes.ModuleName, sharedmoduletypes.ModuleName, + migrationmoduletypes.ModuleName, // this line is used by starport scaffolding # stargate/app/endBlockers } @@ -391,6 +398,10 @@ var ( Name: sharedmoduletypes.ModuleName, Config: appconfig.WrapAny(&sharedmodulev1.Module{}), }, + { + Name: migrationmoduletypes.ModuleName, + Config: appconfig.WrapAny(&migrationmodulev1.Module{}), + }, // this line is used by starport scaffolding # stargate/app/moduleConfig }, }) diff --git a/app/keepers/types.go b/app/keepers/types.go index 2125523c5..f169bc7ff 100644 --- a/app/keepers/types.go +++ b/app/keepers/types.go @@ -32,6 +32,7 @@ import ( applicationmodulekeeper "github.com/pokt-network/poktroll/x/application/keeper" gatewaymodulekeeper "github.com/pokt-network/poktroll/x/gateway/keeper" + migrationmodulekeeper "github.com/pokt-network/poktroll/x/migration/keeper" proofmodulekeeper "github.com/pokt-network/poktroll/x/proof/keeper" servicemodulekeeper "github.com/pokt-network/poktroll/x/service/keeper" sessionmodulekeeper "github.com/pokt-network/poktroll/x/session/keeper" @@ -82,4 +83,5 @@ type Keepers struct { ProofKeeper proofmodulekeeper.Keeper TokenomicsKeeper tokenomicsmodulekeeper.Keeper SharedKeeper sharedmodulekeeper.Keeper + MigrationKeeper migrationmodulekeeper.Keeper } diff --git a/app/upgrades.go b/app/upgrades.go index 0978f4322..a10b2f726 100644 --- a/app/upgrades.go +++ b/app/upgrades.go @@ -11,8 +11,17 @@ import ( // The chain upgrade can be scheduled AFTER the new version (with upgrade strategy implemented) is released, // so `cosmovisor` can automatically pull the binary from GitHub. var allUpgrades = []upgrades.Upgrade{ - upgrades.Upgrade_0_0_4, - upgrades.Upgrade_0_0_10, + // v0.0.4 was the first upgrade we implemented and tested on network that is no longer used. + // upgrades.Upgrade_0_0_4, + + // v0.0.10 was the first upgrade we implemented on Alpha TestNet. + // upgrades.Upgrade_0_0_10, + + // v0.0.11 was the Alpha TestNet exclusive upgrade to bring it on par with Beta TestNet. + // upgrades.Upgrade_0_0_11, + + // v0.0.12 - the first upgrade going live on both Alpha and Beta TestNets. + upgrades.Upgrade_0_0_12, } // setUpgrades sets upgrade handlers for all upgrades and executes KVStore migration if an upgrade plan file exists. @@ -27,7 +36,7 @@ func (app *App) setUpgrades() error { } // Reads the upgrade info from disk. - // The previous binary is expected to have read the plan from on-chain and saved it locally. + // The previous binary is expected to have read the plan from onchain and saved it locally. upgradePlan, err := app.Keepers.UpgradeKeeper.ReadUpgradeInfoFromDisk() if err != nil { return err diff --git a/app/upgrades/historical.go b/app/upgrades/historical.go index 2c0740652..9b6baba88 100644 --- a/app/upgrades/historical.go +++ b/app/upgrades/historical.go @@ -17,6 +17,7 @@ import ( "github.com/cosmos/cosmos-sdk/types/module" consensusparamtypes "github.com/cosmos/cosmos-sdk/x/consensus/types" + cosmostypes "github.com/cosmos/cosmos-sdk/types" "github.com/pokt-network/poktroll/app/keepers" ) @@ -29,6 +30,8 @@ func defaultUpgradeHandler( configurator module.Configurator, ) upgradetypes.UpgradeHandler { return func(ctx context.Context, plan upgradetypes.Plan, vm module.VersionMap) (module.VersionMap, error) { + logger := cosmostypes.UnwrapSDKContext(ctx).Logger() + logger.Info("Starting the migration in defaultUpgradeHandler") return mm.RunMigrations(ctx, configurator, vm) } } @@ -37,6 +40,9 @@ func defaultUpgradeHandler( // For example, even if `ConsensusVersion` is not modified for any modules, it still might be beneficial to create // an upgrade so node runners are signaled to start utilizing `Cosmovisor` for new binaries. var UpgradeExample = Upgrade{ + // PlanName can be any string. + // This code is executed when the upgrade with this plan name is submitted to the network. + // This does not necessarily need to be a version, but it's usually the case with consensus-breaking changes. PlanName: "v0.0.0-Example", CreateUpgradeHandler: defaultUpgradeHandler, @@ -87,3 +93,10 @@ var Upgrade_0_0_4 = Upgrade{ // No changes to the KVStore in this upgrade. StoreUpgrades: storetypes.StoreUpgrades{}, } + +// Upgrade_0_0_9 is a small upgrade on TestNet. +var Upgrade_0_0_9 = Upgrade{ + PlanName: "v0.0.9", + CreateUpgradeHandler: defaultUpgradeHandler, + StoreUpgrades: storetypes.StoreUpgrades{}, +} diff --git a/app/upgrades/types.go b/app/upgrades/types.go index 637544cee..f4c9793cd 100644 --- a/app/upgrades/types.go +++ b/app/upgrades/types.go @@ -16,15 +16,22 @@ import ( const ( // The default PNF/DAO address in the genesis file for Alpha TestNet. Used to create new authz authorizations. AlphaTestNetPnfAddress = "pokt1r6ja6rz6rpae58njfrsgs5n5sp3r36r2q9j04h" - // Authority address. Defaults to gov module address. Used to create new authz authorizations. + + // TECHDEBT: DO NOT use AlphaTestNetAuthorityAddress. + // This is the authority address used to create new authz authorizations. Defaults to x/gov module account address. + // Use `keepers.UpgradeKeeper.Authority(ctx, &upgradetypes.QueryAuthorityRequest{})` to query the authority address of the current Alpha Network. + // NOTE: This hard-coded address is kept for record-keeping historical purposes. AlphaTestNetAuthorityAddress = "pokt10d07y265gmmuvt4z0w9aw880jnsr700j8yv32t" + + // The default PNF/DAO address in the genesis file for Beta TestNet. Used to create new authz authorizations. + BetaTestNetPnfAddress = "pokt1f0c9y7mahf2ya8tymy8g4rr75ezh3pkklu4c3e" ) // Upgrade represents a protocol upgrade in code. -// Once a `MsgSoftwareUpgrade` is submitted on-chain, and `Upgrade.PlanName` matches the `Plan.Name`, +// Once a `MsgSoftwareUpgrade` is submitted onchain, and `Upgrade.PlanName` matches the `Plan.Name`, // the upgrade will be scheduled for execution at the corresponding height. type Upgrade struct { - // PlanName is a name an upgrade is matched to from the on-chain `upgradetypes.Plan`. + // PlanName is a name an upgrade is matched to from the onchain `upgradetypes.Plan`. PlanName string // CreateUpgradeHandler returns an upgrade handler that will be executed at the time of the upgrade. diff --git a/app/upgrades/v0.0.11.go b/app/upgrades/v0.0.11.go new file mode 100644 index 000000000..615feecef --- /dev/null +++ b/app/upgrades/v0.0.11.go @@ -0,0 +1,98 @@ +package upgrades + +import ( + "context" + + storetypes "cosmossdk.io/store/types" + upgradetypes "cosmossdk.io/x/upgrade/types" + cosmosTypes "github.com/cosmos/cosmos-sdk/types" + "github.com/cosmos/cosmos-sdk/types/module" + "github.com/pokt-network/poktroll/app/keepers" + sessiontypes "github.com/pokt-network/poktroll/x/session/types" + tokenomicstypes "github.com/pokt-network/poktroll/x/tokenomics/types" +) + +// Upgrade_0_0_11 is the upgrade handler for v0.0.11 Alpha TestNet upgrade +// Beta TestNet was launched with v0.0.11, so this upgrade is exclusively for Alpha TestNet. +// - Before: v0.0.10 +// - After: v0.0.11 +var Upgrade_0_0_11 = Upgrade{ + PlanName: "v0.0.11", + CreateUpgradeHandler: func(mm *module.Manager, + keepers *keepers.Keepers, + configurator module.Configurator, + ) upgradetypes.UpgradeHandler { + // Adds new parameters using ignite's config.yml as a reference. Assuming we don't need any other parameters. + // https://github.com/pokt-network/poktroll/compare/v0.0.10...v0.0.11-rc + applyNewParameters := func(ctx context.Context) (err error) { + logger := cosmosTypes.UnwrapSDKContext(ctx).Logger() + logger.Info("Starting parameter updates for v0.0.11") + + // Set num_suppliers_per_session to 15 + // Validate with: `poktrolld q session params --node=https://testnet-validated-validator-rpc.poktroll.com/` + sessionParams := sessiontypes.Params{ + NumSuppliersPerSession: uint64(15), + } + + // ALL parameters must be present when setting params. + err = keepers.SessionKeeper.SetParams(ctx, sessionParams) + if err != nil { + logger.Error("Failed to set session params", "error", err) + return err + } + logger.Info("Successfully updated session params", "new_params", sessionParams) + + // Set tokenomics params. The values are based on default values for LocalNet/Beta TestNet. + // Validate with: `poktrolld q tokenomics params --node=https://testnet-validated-validator-rpc.poktroll.com/` + tokenomicsParams := tokenomicstypes.Params{ + MintAllocationPercentages: tokenomicstypes.MintAllocationPercentages{ + Dao: 0.1, + Proposer: 0.05, + Supplier: 0.7, + SourceOwner: 0.15, + Application: 0.0, + }, + DaoRewardAddress: AlphaTestNetPnfAddress, + } + + // ALL parameters must be present when setting params. + err = keepers.TokenomicsKeeper.SetParams(ctx, tokenomicsParams) + if err != nil { + logger.Error("Failed to set tokenomics params", "error", err) + return err + } + logger.Info("Successfully updated tokenomics params", "new_params", tokenomicsParams) + + return + } + + // The diff shows that the only new authz authorization is for the `poktroll.session.MsgUpdateParam` message. + // However, this message is already authorized for the `pokt10d07y265gmmuvt4z0w9aw880jnsr700j8yv32t` address. + // See here: poktrolld q authz grants-by-granter pokt10d07y265gmmuvt4z0w9aw880jnsr700j8yv32t --node=https://shannon-testnet-grove-seed-rpc.alpha.poktroll.com + // If this upgrade would have been applied to other networks, we could have added a separate upgrade handler for each network. + + // Returns the upgrade handler for v0.0.11 + return func(ctx context.Context, plan upgradetypes.Plan, vm module.VersionMap) (module.VersionMap, error) { + logger := cosmosTypes.UnwrapSDKContext(ctx).Logger() + logger.Info("Starting v0.0.11 upgrade handler") + + err := applyNewParameters(ctx) + if err != nil { + logger.Error("Failed to apply new parameters", "error", err) + return vm, err + } + + logger.Info("Running module migrations") + vm, err = mm.RunMigrations(ctx, configurator, vm) + if err != nil { + logger.Error("Failed to run migrations", "error", err) + return vm, err + } + + logger.Info("Successfully completed v0.0.11 upgrade handler") + return vm, nil + } + }, + // No changes to the KVStore in this upgrade. + StoreUpgrades: storetypes.StoreUpgrades{}, +} diff --git a/app/upgrades/v0.0.12.go b/app/upgrades/v0.0.12.go new file mode 100644 index 000000000..213f42c08 --- /dev/null +++ b/app/upgrades/v0.0.12.go @@ -0,0 +1,197 @@ +package upgrades + +import ( + "context" + "strings" + + "cosmossdk.io/math" + storetypes "cosmossdk.io/store/types" + upgradetypes "cosmossdk.io/x/upgrade/types" + cosmosTypes "github.com/cosmos/cosmos-sdk/types" + "github.com/cosmos/cosmos-sdk/types/module" + "github.com/pokt-network/poktroll/app/keepers" + sharedtypes "github.com/pokt-network/poktroll/x/shared/types" +) + +const Upgrade_0_0_12_PlanName = "v0.0.12" + +// Upgrade_0_0_12 handles the upgrade to release `v0.0.12`. +// This is planned to be issued on both Pocket Network's Shannon Alpha & Beta TestNets. +var Upgrade_0_0_12 = Upgrade{ + PlanName: Upgrade_0_0_12_PlanName, + CreateUpgradeHandler: func(mm *module.Manager, + keepers *keepers.Keepers, + configurator module.Configurator, + ) upgradetypes.UpgradeHandler { + // Parameter configurations aligned with repository config.yml specifications. + // These values reflect the delta between v0.0.11 and the main branch as of #1043. + // Reference: + // - Comparison: https://github.com/pokt-network/poktroll/compare/v0.0.11..7541afd6d89a12d61e2c32637b535f24fae20b58 + // - Direct diff: `git diff v0.0.11..7541afd6d89a12d61e2c32637b535f24fae20b58 -- config.yml` + // + // DEV_NOTE: These parameter updates are derived from config.yml in the root directory + // of this repository, which serves as the source of truth for all parameter changes. + const ( + supplierStakingFee = 1000000 // uPOKT + serviceTargetNumRelays = 100 // num relays + tokenomicsGlobalInflationPerClaim = 0.1 // % of the claim amount + ) + + applyNewParameters := func(ctx context.Context) (err error) { + logger := cosmosTypes.UnwrapSDKContext(ctx).Logger() + logger.Info("Starting parameter updates", "upgrade_plan_name", Upgrade_0_0_12_PlanName) + + // Set supplier module staking_fee to 1000000upokt, in line with the config.yml in the repo. + // Verify via: + // $ poktrolld q supplier params --node=... + supplierParams := keepers.SupplierKeeper.GetParams(ctx) + supplierParams.MinStake = &cosmosTypes.Coin{ + Denom: "upokt", + Amount: math.NewInt(supplierStakingFee), + } + err = keepers.SupplierKeeper.SetParams(ctx, supplierParams) + if err != nil { + logger.Error("Failed to set supplier params", "error", err) + return err + } + logger.Info("Successfully updated supplier params", "new_params", supplierParams) + + // Add service module `target_num_relays` parameter, in line with the config.yml in the repo. + // Verify via: + // $ poktrolld q service params --node=... + serviceParams := keepers.ServiceKeeper.GetParams(ctx) + serviceParams.TargetNumRelays = serviceTargetNumRelays + err = keepers.ServiceKeeper.SetParams(ctx, serviceParams) + if err != nil { + logger.Error("Failed to set service params", "error", err) + return err + } + logger.Info("Successfully updated service params", "new_params", serviceParams) + + // Add tokenomics module `global_inflation_per_claim` parameter, in line with the config.yml in the repo. + // Verify via: + // $ poktrolld q tokenomics params --node=... + tokenomicsParams := keepers.TokenomicsKeeper.GetParams(ctx) + tokenomicsParams.GlobalInflationPerClaim = tokenomicsGlobalInflationPerClaim + err = keepers.TokenomicsKeeper.SetParams(ctx, tokenomicsParams) + if err != nil { + logger.Error("Failed to set tokenomics params", "error", err) + return err + } + logger.Info("Successfully updated tokenomics params", "new_params", tokenomicsParams) + return nil + } + + // Helper function to update all suppliers' RevShare to 100%. + // This is necessary to ensure that we have that value populated before suppliers are connected. + // + updateSuppliersRevShare := func(ctx context.Context) error { + logger := cosmosTypes.UnwrapSDKContext(ctx).Logger() + suppliers := keepers.SupplierKeeper.GetAllSuppliers(ctx) + logger.Info("Updating (overriding) all suppliers to delegate 100% revenue share to the supplier's operator address", + "num_suppliers", len(suppliers)) + + for _, supplier := range suppliers { + for _, service := range supplier.Services { + if len(service.RevShare) > 1 { + // WARNING: Overwriting existing revshare settings without preserving history. + // NOTE: While the canonical approach would be using Module Upgrade (docs.cosmos.network/v0.46/building-modules/upgrade) + // to handle protobuf type changes (see: github.com/cosmos/cosmos-sdk/blob/v0.46.0-rc1/x/bank/migrations/v043/store.go#L50-L71), + // we've opted for direct overwrite because: + // 1. No active revenue shares are impacted at time of writing + // 2. Additional protobuf and repo structure changes would be required for proper (though unnecessary) migration + + // Create a string representation of just the revenue share addresses + addresses := make([]string, len(service.RevShare)) + for i, rs := range service.RevShare { + addresses[i] = rs.Address + } + revShareAddressesStr := "[" + strings.Join(addresses, ",") + "]" + logger.Warn( + "Overwriting existing revenue share configuration", + "supplier_operator", supplier.OperatorAddress, + "supplier_owner", supplier.OwnerAddress, + "service", service.ServiceId, + "previous_revshare_count", len(service.RevShare), + "previous_revshare_addresses", revShareAddressesStr, + ) + service.RevShare = []*sharedtypes.ServiceRevenueShare{ + { + Address: supplier.OperatorAddress, + RevSharePercentage: uint64(100), + }, + } + } else if len(service.RevShare) == 1 { + // If there is only one revshare setting, we can safely overwrite it (because it has 100% + // revenue share), keeping the existing address. + logger.Info("Updating supplier's revenue share configuration", + "supplier_operator", supplier.OperatorAddress, + "supplier_owner", supplier.OwnerAddress, + "service", service.ServiceId, + "previous_revshare_address", service.RevShare[0].Address, + ) + currentRevShare := service.RevShare[0] + service.RevShare = []*sharedtypes.ServiceRevenueShare{ + { + Address: currentRevShare.Address, + RevSharePercentage: uint64(100), + }, + } + } else { + logger.Warn("That shouldn't happen: no revenue share configuration found for supplier", + "supplier_operator", supplier.OperatorAddress, + "supplier_owner", supplier.OwnerAddress, + "service", service.ServiceId, + ) + } + } + keepers.SupplierKeeper.SetSupplier(ctx, supplier) + logger.Info("Updated supplier", + "supplier_operator", supplier.OperatorAddress, + "supplier_owner", supplier.OwnerAddress) + } + return nil + } + + // Returns the upgrade handler for v0.0.12 + return func(ctx context.Context, plan upgradetypes.Plan, vm module.VersionMap) (module.VersionMap, error) { + logger := cosmosTypes.UnwrapSDKContext(ctx).Logger() + logger.Info("Starting upgrade handler", "upgrade_plan_name", Upgrade_0_0_12_PlanName) + + logger.Info("Starting parameter updates section", "upgrade_plan_name", Upgrade_0_0_12_PlanName) + // Update all governance parameter changes. + // This includes adding params, removing params and changing values of existing params. + err := applyNewParameters(ctx) + if err != nil { + logger.Error("Failed to apply new parameters", + "upgrade_plan_name", Upgrade_0_0_12_PlanName, + "error", err) + return vm, err + } + + logger.Info("Starting supplier RevShare updates section", "upgrade_plan_name", Upgrade_0_0_12_PlanName) + // Override all suppliers' RevShare to be 100% delegate to the supplier's operator address + err = updateSuppliersRevShare(ctx) + if err != nil { + logger.Error("Failed to update suppliers RevShare", + "upgrade_plan_name", Upgrade_0_0_12_PlanName, + "error", err) + return vm, err + } + + logger.Info("Starting module migrations section", "upgrade_plan_name", Upgrade_0_0_12_PlanName) + vm, err = mm.RunMigrations(ctx, configurator, vm) + if err != nil { + logger.Error("Failed to run migrations", + "upgrade_plan_name", Upgrade_0_0_12_PlanName, + "error", err) + return vm, err + } + + logger.Info("Successfully completed upgrade handler", "upgrade_plan_name", Upgrade_0_0_12_PlanName) + return vm, nil + } + }, + // No changes to the KVStore in this upgrade. + StoreUpgrades: storetypes.StoreUpgrades{}, +} diff --git a/cmd/poktrolld/cmd/config.go b/cmd/poktrolld/cmd/config.go index ae9520a41..89536a6a1 100644 --- a/cmd/poktrolld/cmd/config.go +++ b/cmd/poktrolld/cmd/config.go @@ -21,12 +21,10 @@ type PoktrollAppConfig struct { } // poktrollAppConfigDefaults sets default values to render in `app.toml`. -// Checkout `customAppConfigTemplate()` for additional information about each setting. +// Checkout `customAppConfigTemplate()` for additional information about each config parameter. func poktrollAppConfigDefaults() PoktrollAppConfig { return PoktrollAppConfig{ - Telemetry: telemetry.PoktrollTelemetryConfig{ - CardinalityLevel: "medium", - }, + Telemetry: telemetry.DefaultConfig(), } } @@ -104,7 +102,6 @@ func initCometBFTConfig() *cmtcfg.Config { // return "", nil if no custom configuration is required for the application. // TODO_MAINNET: Reconsider values - check `app.toml` for possible options. func initAppConfig() (string, interface{}) { - // The following code snippet is just for reference. type CustomAppConfig struct { serverconfig.Config `mapstructure:",squash"` Poktroll PoktrollAppConfig `mapstructure:"poktroll"` @@ -140,6 +137,7 @@ func initAppConfig() (string, interface{}) { srvCfg.GRPC.Enable = true srvCfg.GRPCWeb.Enable = true + // Create the custom config with both server and poktroll configs customAppConfig := CustomAppConfig{ Config: *srvCfg, Poktroll: poktrollAppConfigDefaults(), diff --git a/config.yml b/config.yml index 0554fcf5d..cbd3fbe25 100644 --- a/config.yml +++ b/config.yml @@ -104,6 +104,20 @@ validators: instrumentation: prometheus: true log_level: "info" + # Increase the rpc and mempool max bytes to support large transactions. + # DEV_NOTE: These values were selected arbitrarily, but chosen to be large, + # as a result of load testing and seeing large proof messages during the + # Claim & Proof lifecycle. + rpc: + # Controls how large any single RPC request accepted by the CometBFT + # server (offchain) can be. + max_body_bytes: "100000000" + mempool: + # Control how big any single transaction accepted by the CometBFT server + # (offchain) can be. + # Since multiple messages are bundled into a single transaction, + # max_tx_bytes needs to be increased alongside max_txs_bytes as well. + max_tx_bytes: "100000000" client: chain-id: poktroll @@ -215,7 +229,7 @@ genesis: url: http://relayminer1:8545 rev_share: - address: pokt19a3t4yunp0dlpfjrp7qwnzwlrzd5fzs2gjaaaj - rev_share_percentage: "100" + rev_share_percentage: 100 - service_id: rest endpoints: - configs: [] @@ -223,7 +237,7 @@ genesis: url: http://relayminer1:8545 rev_share: - address: pokt19a3t4yunp0dlpfjrp7qwnzwlrzd5fzs2gjaaaj - rev_share_percentage: "100" + rev_share_percentage: 100 - service_id: ollama endpoints: - configs: [] @@ -231,7 +245,7 @@ genesis: url: http://relayminer1:8545 rev_share: - address: pokt19a3t4yunp0dlpfjrp7qwnzwlrzd5fzs2gjaaaj - rev_share_percentage: "100" + rev_share_percentage: 100 stake: # NB: This value should be exactly 1upokt smaller than the value in # `supplier1_stake_config.yaml` so that the stake command causes a state change. diff --git a/docs/static/openapi.json b/docs/static/openapi.json new file mode 100644 index 000000000..7d00e4ba2 --- /dev/null +++ b/docs/static/openapi.json @@ -0,0 +1,26656 @@ +{ + "id": "github.com/pokt-network/poktroll", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "swagger": "2.0", + "info": { + "description": "Chain github.com/pokt-network/poktroll REST API", + "title": "HTTP API Console", + "contact": { + "name": "github.com/pokt-network/poktroll" + }, + "version": "version not set" + }, + "paths": { + "/cosmos.auth.v1beta1.Msg/UpdateParams": { + "post": { + "description": "Since: cosmos-sdk 0.47", + "tags": [ + "Msg" + ], + "summary": "UpdateParams defines a (governance) operation for updating the x/auth module\nparameters. The authority defaults to the x/gov module account.", + "operationId": "CircuitMsg_UpdateParams", + "parameters": [ + { + "description": "MsgUpdateParams is the Msg/UpdateParams request type.\n\nSince: cosmos-sdk 0.47", + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/cosmos.auth.v1beta1.MsgUpdateParams" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.auth.v1beta1.MsgUpdateParamsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos.authz.v1beta1.Msg/Exec": { + "post": { + "tags": [ + "Msg" + ], + "summary": "Exec attempts to execute the provided messages using\nauthorizations granted to the grantee. Each message should have only\none signer corresponding to the granter of the authorization.", + "operationId": "CircuitMsg_Exec", + "parameters": [ + { + "description": "MsgExec attempts to execute the provided messages using\nauthorizations granted to the grantee. Each message should have only\none signer corresponding to the granter of the authorization.", + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/cosmos.authz.v1beta1.MsgExec" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.authz.v1beta1.MsgExecResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos.authz.v1beta1.Msg/Grant": { + "post": { + "tags": [ + "Msg" + ], + "summary": "Grant grants the provided authorization to the grantee on the granter's\naccount with the provided expiration time. If there is already a grant\nfor the given (granter, grantee, Authorization) triple, then the grant\nwill be overwritten.", + "operationId": "CircuitMsg_Grant", + "parameters": [ + { + "description": "MsgGrant is a request type for Grant method. It declares authorization to the grantee\non behalf of the granter with the provided expiration time.", + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/cosmos.authz.v1beta1.MsgGrant" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.authz.v1beta1.MsgGrantResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos.authz.v1beta1.Msg/Revoke": { + "post": { + "tags": [ + "Msg" + ], + "summary": "Revoke revokes any authorization corresponding to the provided method name on the\ngranter's account that has been granted to the grantee.", + "operationId": "CircuitMsg_Revoke", + "parameters": [ + { + "description": "MsgRevoke revokes any authorization with the provided sdk.Msg type on the\ngranter's account with that has been granted to the grantee.", + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/cosmos.authz.v1beta1.MsgRevoke" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.authz.v1beta1.MsgRevokeResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos.autocli.v1.Query/AppOptions": { + "post": { + "tags": [ + "Query" + ], + "summary": "AppOptions returns the autocli options for all of the modules in an app.", + "operationId": "CircuitQuery_AppOptions", + "parameters": [ + { + "description": "AppOptionsRequest is the RemoteInfoService/AppOptions request type.", + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/cosmos.autocli.v1.AppOptionsRequest" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.autocli.v1.AppOptionsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos.bank.v1beta1.Msg/MultiSend": { + "post": { + "tags": [ + "Msg" + ], + "summary": "MultiSend defines a method for sending coins from some accounts to other accounts.", + "operationId": "CircuitMsg_MultiSend", + "parameters": [ + { + "description": "MsgMultiSend represents an arbitrary multi-in, multi-out send message.", + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/cosmos.bank.v1beta1.MsgMultiSend" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.bank.v1beta1.MsgMultiSendResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos.bank.v1beta1.Msg/Send": { + "post": { + "tags": [ + "Msg" + ], + "summary": "Send defines a method for sending coins from one account to another account.", + "operationId": "CircuitMsg_Send", + "parameters": [ + { + "description": "MsgSend represents a message to send coins from one account to another.", + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/cosmos.bank.v1beta1.MsgSend" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.bank.v1beta1.MsgSendResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos.bank.v1beta1.Msg/SetSendEnabled": { + "post": { + "description": "Since: cosmos-sdk 0.47", + "tags": [ + "Msg" + ], + "summary": "SetSendEnabled is a governance operation for setting the SendEnabled flag\non any number of Denoms. Only the entries to add or update should be\nincluded. Entries that already exist in the store, but that aren't\nincluded in this message, will be left unchanged.", + "operationId": "CircuitMsg_SetSendEnabled", + "parameters": [ + { + "description": "MsgSetSendEnabled is the Msg/SetSendEnabled request type.\n\nOnly entries to add/update/delete need to be included.\nExisting SendEnabled entries that are not included in this\nmessage are left unchanged.\n\nSince: cosmos-sdk 0.47", + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/cosmos.bank.v1beta1.MsgSetSendEnabled" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.bank.v1beta1.MsgSetSendEnabledResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos.bank.v1beta1.Msg/UpdateParams": { + "post": { + "description": "Since: cosmos-sdk 0.47", + "tags": [ + "Msg" + ], + "summary": "UpdateParams defines a governance operation for updating the x/bank module parameters.\nThe authority is defined in the keeper.", + "operationId": "CircuitMsg_UpdateParamsMixin63", + "parameters": [ + { + "description": "MsgUpdateParams is the Msg/UpdateParams request type.\n\nSince: cosmos-sdk 0.47", + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/cosmos.bank.v1beta1.MsgUpdateParams" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.bank.v1beta1.MsgUpdateParamsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos.circuit.v1.Msg/AuthorizeCircuitBreaker": { + "post": { + "tags": [ + "Msg" + ], + "summary": "AuthorizeCircuitBreaker allows a super-admin to grant (or revoke) another\naccount's circuit breaker permissions.", + "operationId": "CircuitMsg_AuthorizeCircuitBreaker", + "parameters": [ + { + "description": "MsgAuthorizeCircuitBreaker defines the Msg/AuthorizeCircuitBreaker request type.", + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/cosmos.circuit.v1.MsgAuthorizeCircuitBreaker" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.circuit.v1.MsgAuthorizeCircuitBreakerResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos.circuit.v1.Msg/ResetCircuitBreaker": { + "post": { + "tags": [ + "Msg" + ], + "summary": "ResetCircuitBreaker resumes processing of Msg's in the state machine that\nhave been been paused using TripCircuitBreaker.", + "operationId": "CircuitMsg_ResetCircuitBreaker", + "parameters": [ + { + "description": "MsgResetCircuitBreaker defines the Msg/ResetCircuitBreaker request type.", + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/cosmos.circuit.v1.MsgResetCircuitBreaker" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.circuit.v1.MsgResetCircuitBreakerResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos.circuit.v1.Msg/TripCircuitBreaker": { + "post": { + "tags": [ + "Msg" + ], + "summary": "TripCircuitBreaker pauses processing of Msg's in the state machine.", + "operationId": "CircuitMsg_TripCircuitBreaker", + "parameters": [ + { + "description": "MsgTripCircuitBreaker defines the Msg/TripCircuitBreaker request type.", + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/cosmos.circuit.v1.MsgTripCircuitBreaker" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.circuit.v1.MsgTripCircuitBreakerResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos.consensus.v1.Msg/UpdateParams": { + "post": { + "description": "Since: cosmos-sdk 0.47", + "tags": [ + "Msg" + ], + "summary": "UpdateParams defines a governance operation for updating the x/consensus module parameters.\nThe authority is defined in the keeper.", + "operationId": "CircuitMsg_UpdateParamsMixin76", + "parameters": [ + { + "description": "MsgUpdateParams is the Msg/UpdateParams request type.", + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/cosmos.consensus.v1.MsgUpdateParams" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.consensus.v1.MsgUpdateParamsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos.crisis.v1beta1.Msg/UpdateParams": { + "post": { + "description": "Since: cosmos-sdk 0.47", + "tags": [ + "Msg" + ], + "summary": "UpdateParams defines a governance operation for updating the x/crisis module\nparameters. The authority is defined in the keeper.", + "operationId": "CircuitMsg_UpdateParamsMixin78", + "parameters": [ + { + "description": "MsgUpdateParams is the Msg/UpdateParams request type.\n\nSince: cosmos-sdk 0.47", + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/cosmos.crisis.v1beta1.MsgUpdateParams" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.crisis.v1beta1.MsgUpdateParamsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos.crisis.v1beta1.Msg/VerifyInvariant": { + "post": { + "tags": [ + "Msg" + ], + "summary": "VerifyInvariant defines a method to verify a particular invariant.", + "operationId": "CircuitMsg_VerifyInvariant", + "parameters": [ + { + "description": "MsgVerifyInvariant represents a message to verify a particular invariance.", + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/cosmos.crisis.v1beta1.MsgVerifyInvariant" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.crisis.v1beta1.MsgVerifyInvariantResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos.distribution.v1beta1.Msg/CommunityPoolSpend": { + "post": { + "description": "Since: cosmos-sdk 0.47", + "tags": [ + "Msg" + ], + "summary": "CommunityPoolSpend defines a governance operation for sending tokens from\nthe community pool in the x/distribution module to another account, which\ncould be the governance module itself. The authority is defined in the\nkeeper.", + "operationId": "CircuitMsg_CommunityPoolSpend", + "parameters": [ + { + "description": "MsgCommunityPoolSpend defines a message for sending tokens from the community\npool to another account. This message is typically executed via a governance\nproposal with the governance module being the executing authority.\n\nSince: cosmos-sdk 0.47", + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/cosmos.distribution.v1beta1.MsgCommunityPoolSpend" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.distribution.v1beta1.MsgCommunityPoolSpendResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos.distribution.v1beta1.Msg/DepositValidatorRewardsPool": { + "post": { + "description": "Since: cosmos-sdk 0.50", + "tags": [ + "Msg" + ], + "summary": "DepositValidatorRewardsPool defines a method to provide additional rewards\nto delegators to a specific validator.", + "operationId": "CircuitMsg_DepositValidatorRewardsPool", + "parameters": [ + { + "description": "DepositValidatorRewardsPool defines the request structure to provide\nadditional rewards to delegators from a specific validator.\n\nSince: cosmos-sdk 0.50", + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/cosmos.distribution.v1beta1.MsgDepositValidatorRewardsPool" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.distribution.v1beta1.MsgDepositValidatorRewardsPoolResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos.distribution.v1beta1.Msg/FundCommunityPool": { + "post": { + "tags": [ + "Msg" + ], + "summary": "FundCommunityPool defines a method to allow an account to directly\nfund the community pool.", + "operationId": "CircuitMsg_FundCommunityPool", + "parameters": [ + { + "description": "MsgFundCommunityPool allows an account to directly\nfund the community pool.", + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/cosmos.distribution.v1beta1.MsgFundCommunityPool" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.distribution.v1beta1.MsgFundCommunityPoolResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos.distribution.v1beta1.Msg/SetWithdrawAddress": { + "post": { + "tags": [ + "Msg" + ], + "summary": "SetWithdrawAddress defines a method to change the withdraw address\nfor a delegator (or validator self-delegation).", + "operationId": "CircuitMsg_SetWithdrawAddress", + "parameters": [ + { + "description": "MsgSetWithdrawAddress sets the withdraw address for\na delegator (or validator self-delegation).", + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/cosmos.distribution.v1beta1.MsgSetWithdrawAddress" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.distribution.v1beta1.MsgSetWithdrawAddressResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos.distribution.v1beta1.Msg/UpdateParams": { + "post": { + "description": "Since: cosmos-sdk 0.47", + "tags": [ + "Msg" + ], + "summary": "UpdateParams defines a governance operation for updating the x/distribution\nmodule parameters. The authority is defined in the keeper.", + "operationId": "CircuitMsg_UpdateParamsMixin89", + "parameters": [ + { + "description": "MsgUpdateParams is the Msg/UpdateParams request type.\n\nSince: cosmos-sdk 0.47", + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/cosmos.distribution.v1beta1.MsgUpdateParams" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.distribution.v1beta1.MsgUpdateParamsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos.distribution.v1beta1.Msg/WithdrawDelegatorReward": { + "post": { + "tags": [ + "Msg" + ], + "summary": "WithdrawDelegatorReward defines a method to withdraw rewards of delegator\nfrom a single validator.", + "operationId": "CircuitMsg_WithdrawDelegatorReward", + "parameters": [ + { + "description": "MsgWithdrawDelegatorReward represents delegation withdrawal to a delegator\nfrom a single validator.", + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/cosmos.distribution.v1beta1.MsgWithdrawDelegatorReward" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.distribution.v1beta1.MsgWithdrawDelegatorRewardResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos.distribution.v1beta1.Msg/WithdrawValidatorCommission": { + "post": { + "tags": [ + "Msg" + ], + "summary": "WithdrawValidatorCommission defines a method to withdraw the\nfull commission to the validator address.", + "operationId": "CircuitMsg_WithdrawValidatorCommission", + "parameters": [ + { + "description": "MsgWithdrawValidatorCommission withdraws the full commission to the validator\naddress.", + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/cosmos.distribution.v1beta1.MsgWithdrawValidatorCommission" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.distribution.v1beta1.MsgWithdrawValidatorCommissionResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos.evidence.v1beta1.Msg/SubmitEvidence": { + "post": { + "tags": [ + "Msg" + ], + "summary": "SubmitEvidence submits an arbitrary Evidence of misbehavior such as equivocation or\ncounterfactual signing.", + "operationId": "CircuitMsg_SubmitEvidence", + "parameters": [ + { + "description": "MsgSubmitEvidence represents a message that supports submitting arbitrary\nEvidence of misbehavior such as equivocation or counterfactual signing.", + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/cosmos.evidence.v1beta1.MsgSubmitEvidence" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.evidence.v1beta1.MsgSubmitEvidenceResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos.feegrant.v1beta1.Msg/GrantAllowance": { + "post": { + "tags": [ + "Msg" + ], + "summary": "GrantAllowance grants fee allowance to the grantee on the granter's\naccount with the provided expiration time.", + "operationId": "CircuitMsg_GrantAllowance", + "parameters": [ + { + "description": "MsgGrantAllowance adds permission for Grantee to spend up to Allowance\nof fees from the account of Granter.", + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/cosmos.feegrant.v1beta1.MsgGrantAllowance" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.feegrant.v1beta1.MsgGrantAllowanceResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos.feegrant.v1beta1.Msg/PruneAllowances": { + "post": { + "description": "Since cosmos-sdk 0.50", + "tags": [ + "Msg" + ], + "summary": "PruneAllowances prunes expired fee allowances, currently up to 75 at a time.", + "operationId": "CircuitMsg_PruneAllowances", + "parameters": [ + { + "description": "MsgPruneAllowances prunes expired fee allowances.\n\nSince cosmos-sdk 0.50", + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/cosmos.feegrant.v1beta1.MsgPruneAllowances" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.feegrant.v1beta1.MsgPruneAllowancesResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos.feegrant.v1beta1.Msg/RevokeAllowance": { + "post": { + "tags": [ + "Msg" + ], + "summary": "RevokeAllowance revokes any fee allowance of granter's account that\nhas been granted to the grantee.", + "operationId": "CircuitMsg_RevokeAllowance", + "parameters": [ + { + "description": "MsgRevokeAllowance removes any existing Allowance from Granter to Grantee.", + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/cosmos.feegrant.v1beta1.MsgRevokeAllowance" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.feegrant.v1beta1.MsgRevokeAllowanceResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos.gov.v1.Msg/CancelProposal": { + "post": { + "description": "Since: cosmos-sdk 0.50", + "tags": [ + "Msg" + ], + "summary": "CancelProposal defines a method to cancel governance proposal", + "operationId": "CircuitMsg_CancelProposal", + "parameters": [ + { + "description": "MsgCancelProposal is the Msg/CancelProposal request type.\n\nSince: cosmos-sdk 0.50", + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/cosmos.gov.v1.MsgCancelProposal" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.gov.v1.MsgCancelProposalResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos.gov.v1.Msg/Deposit": { + "post": { + "tags": [ + "Msg" + ], + "summary": "Deposit defines a method to add deposit on a specific proposal.", + "operationId": "CircuitMsg_Deposit", + "parameters": [ + { + "description": "MsgDeposit defines a message to submit a deposit to an existing proposal.", + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/cosmos.gov.v1.MsgDeposit" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.gov.v1.MsgDepositResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos.gov.v1.Msg/ExecLegacyContent": { + "post": { + "tags": [ + "Msg" + ], + "summary": "ExecLegacyContent defines a Msg to be in included in a MsgSubmitProposal\nto execute a legacy content-based proposal.", + "operationId": "CircuitMsg_ExecLegacyContent", + "parameters": [ + { + "description": "MsgExecLegacyContent is used to wrap the legacy content field into a message.\nThis ensures backwards compatibility with v1beta1.MsgSubmitProposal.", + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/cosmos.gov.v1.MsgExecLegacyContent" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.gov.v1.MsgExecLegacyContentResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos.gov.v1.Msg/SubmitProposal": { + "post": { + "tags": [ + "Msg" + ], + "summary": "SubmitProposal defines a method to create new proposal given the messages.", + "operationId": "CircuitMsg_SubmitProposal", + "parameters": [ + { + "description": "MsgSubmitProposal defines an sdk.Msg type that supports submitting arbitrary\nproposal Content.", + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/cosmos.gov.v1.MsgSubmitProposal" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.gov.v1.MsgSubmitProposalResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos.gov.v1.Msg/UpdateParams": { + "post": { + "description": "Since: cosmos-sdk 0.47", + "tags": [ + "Msg" + ], + "summary": "UpdateParams defines a governance operation for updating the x/gov module\nparameters. The authority is defined in the keeper.", + "operationId": "CircuitMsg_UpdateParamsMixin102", + "parameters": [ + { + "description": "MsgUpdateParams is the Msg/UpdateParams request type.\n\nSince: cosmos-sdk 0.47", + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/cosmos.gov.v1.MsgUpdateParams" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.gov.v1.MsgUpdateParamsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos.gov.v1.Msg/Vote": { + "post": { + "tags": [ + "Msg" + ], + "summary": "Vote defines a method to add a vote on a specific proposal.", + "operationId": "CircuitMsg_Vote", + "parameters": [ + { + "description": "MsgVote defines a message to cast a vote.", + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/cosmos.gov.v1.MsgVote" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.gov.v1.MsgVoteResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos.gov.v1.Msg/VoteWeighted": { + "post": { + "tags": [ + "Msg" + ], + "summary": "VoteWeighted defines a method to add a weighted vote on a specific proposal.", + "operationId": "CircuitMsg_VoteWeighted", + "parameters": [ + { + "description": "MsgVoteWeighted defines a message to cast a vote.", + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/cosmos.gov.v1.MsgVoteWeighted" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.gov.v1.MsgVoteWeightedResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos.gov.v1beta1.Msg/Deposit": { + "post": { + "tags": [ + "Msg" + ], + "summary": "Deposit defines a method to add deposit on a specific proposal.", + "operationId": "CircuitMsg_DepositMixin106", + "parameters": [ + { + "description": "MsgDeposit defines a message to submit a deposit to an existing proposal.", + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/cosmos.gov.v1beta1.MsgDeposit" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.gov.v1beta1.MsgDepositResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos.gov.v1beta1.Msg/SubmitProposal": { + "post": { + "tags": [ + "Msg" + ], + "summary": "SubmitProposal defines a method to create new proposal given a content.", + "operationId": "CircuitMsg_SubmitProposalMixin106", + "parameters": [ + { + "description": "MsgSubmitProposal defines an sdk.Msg type that supports submitting arbitrary\nproposal Content.", + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/cosmos.gov.v1beta1.MsgSubmitProposal" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.gov.v1beta1.MsgSubmitProposalResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos.gov.v1beta1.Msg/Vote": { + "post": { + "tags": [ + "Msg" + ], + "summary": "Vote defines a method to add a vote on a specific proposal.", + "operationId": "CircuitMsg_VoteMixin106", + "parameters": [ + { + "description": "MsgVote defines a message to cast a vote.", + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/cosmos.gov.v1beta1.MsgVote" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.gov.v1beta1.MsgVoteResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos.gov.v1beta1.Msg/VoteWeighted": { + "post": { + "description": "Since: cosmos-sdk 0.43", + "tags": [ + "Msg" + ], + "summary": "VoteWeighted defines a method to add a weighted vote on a specific proposal.", + "operationId": "CircuitMsg_VoteWeightedMixin106", + "parameters": [ + { + "description": "MsgVoteWeighted defines a message to cast a vote.\n\nSince: cosmos-sdk 0.43", + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/cosmos.gov.v1beta1.MsgVoteWeighted" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.gov.v1beta1.MsgVoteWeightedResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos.group.v1.Msg/CreateGroup": { + "post": { + "tags": [ + "Msg" + ], + "summary": "CreateGroup creates a new group with an admin account address, a list of members and some optional metadata.", + "operationId": "CircuitMsg_CreateGroup", + "parameters": [ + { + "description": "MsgCreateGroup is the Msg/CreateGroup request type.", + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/cosmos.group.v1.MsgCreateGroup" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.group.v1.MsgCreateGroupResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos.group.v1.Msg/CreateGroupPolicy": { + "post": { + "tags": [ + "Msg" + ], + "summary": "CreateGroupPolicy creates a new group policy using given DecisionPolicy.", + "operationId": "CircuitMsg_CreateGroupPolicy", + "parameters": [ + { + "description": "MsgCreateGroupPolicy is the Msg/CreateGroupPolicy request type.", + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/cosmos.group.v1.MsgCreateGroupPolicy" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.group.v1.MsgCreateGroupPolicyResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos.group.v1.Msg/CreateGroupWithPolicy": { + "post": { + "tags": [ + "Msg" + ], + "summary": "CreateGroupWithPolicy creates a new group with policy.", + "operationId": "CircuitMsg_CreateGroupWithPolicy", + "parameters": [ + { + "description": "MsgCreateGroupWithPolicy is the Msg/CreateGroupWithPolicy request type.", + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/cosmos.group.v1.MsgCreateGroupWithPolicy" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.group.v1.MsgCreateGroupWithPolicyResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos.group.v1.Msg/Exec": { + "post": { + "tags": [ + "Msg" + ], + "summary": "Exec executes a proposal.", + "operationId": "CircuitMsg_ExecMixin110", + "parameters": [ + { + "description": "MsgExec is the Msg/Exec request type.", + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/cosmos.group.v1.MsgExec" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.group.v1.MsgExecResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos.group.v1.Msg/LeaveGroup": { + "post": { + "tags": [ + "Msg" + ], + "summary": "LeaveGroup allows a group member to leave the group.", + "operationId": "CircuitMsg_LeaveGroup", + "parameters": [ + { + "description": "MsgLeaveGroup is the Msg/LeaveGroup request type.", + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/cosmos.group.v1.MsgLeaveGroup" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.group.v1.MsgLeaveGroupResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos.group.v1.Msg/SubmitProposal": { + "post": { + "tags": [ + "Msg" + ], + "summary": "SubmitProposal submits a new proposal.", + "operationId": "CircuitMsg_SubmitProposalMixin110", + "parameters": [ + { + "description": "MsgSubmitProposal is the Msg/SubmitProposal request type.", + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/cosmos.group.v1.MsgSubmitProposal" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.group.v1.MsgSubmitProposalResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos.group.v1.Msg/UpdateGroupAdmin": { + "post": { + "tags": [ + "Msg" + ], + "summary": "UpdateGroupAdmin updates the group admin with given group id and previous admin address.", + "operationId": "CircuitMsg_UpdateGroupAdmin", + "parameters": [ + { + "description": "MsgUpdateGroupAdmin is the Msg/UpdateGroupAdmin request type.", + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/cosmos.group.v1.MsgUpdateGroupAdmin" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.group.v1.MsgUpdateGroupAdminResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos.group.v1.Msg/UpdateGroupMembers": { + "post": { + "tags": [ + "Msg" + ], + "summary": "UpdateGroupMembers updates the group members with given group id and admin address.", + "operationId": "CircuitMsg_UpdateGroupMembers", + "parameters": [ + { + "description": "MsgUpdateGroupMembers is the Msg/UpdateGroupMembers request type.", + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/cosmos.group.v1.MsgUpdateGroupMembers" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.group.v1.MsgUpdateGroupMembersResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos.group.v1.Msg/UpdateGroupMetadata": { + "post": { + "tags": [ + "Msg" + ], + "summary": "UpdateGroupMetadata updates the group metadata with given group id and admin address.", + "operationId": "CircuitMsg_UpdateGroupMetadata", + "parameters": [ + { + "description": "MsgUpdateGroupMetadata is the Msg/UpdateGroupMetadata request type.", + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/cosmos.group.v1.MsgUpdateGroupMetadata" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.group.v1.MsgUpdateGroupMetadataResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos.group.v1.Msg/UpdateGroupPolicyAdmin": { + "post": { + "tags": [ + "Msg" + ], + "summary": "UpdateGroupPolicyAdmin updates a group policy admin.", + "operationId": "CircuitMsg_UpdateGroupPolicyAdmin", + "parameters": [ + { + "description": "MsgUpdateGroupPolicyAdmin is the Msg/UpdateGroupPolicyAdmin request type.", + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/cosmos.group.v1.MsgUpdateGroupPolicyAdmin" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.group.v1.MsgUpdateGroupPolicyAdminResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos.group.v1.Msg/UpdateGroupPolicyDecisionPolicy": { + "post": { + "tags": [ + "Msg" + ], + "summary": "UpdateGroupPolicyDecisionPolicy allows a group policy's decision policy to be updated.", + "operationId": "CircuitMsg_UpdateGroupPolicyDecisionPolicy", + "parameters": [ + { + "description": "MsgUpdateGroupPolicyDecisionPolicy is the Msg/UpdateGroupPolicyDecisionPolicy request type.", + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/cosmos.group.v1.MsgUpdateGroupPolicyDecisionPolicy" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.group.v1.MsgUpdateGroupPolicyDecisionPolicyResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos.group.v1.Msg/UpdateGroupPolicyMetadata": { + "post": { + "tags": [ + "Msg" + ], + "summary": "UpdateGroupPolicyMetadata updates a group policy metadata.", + "operationId": "CircuitMsg_UpdateGroupPolicyMetadata", + "parameters": [ + { + "description": "MsgUpdateGroupPolicyMetadata is the Msg/UpdateGroupPolicyMetadata request type.", + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/cosmos.group.v1.MsgUpdateGroupPolicyMetadata" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.group.v1.MsgUpdateGroupPolicyMetadataResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos.group.v1.Msg/Vote": { + "post": { + "tags": [ + "Msg" + ], + "summary": "Vote allows a voter to vote on a proposal.", + "operationId": "CircuitMsg_VoteMixin110", + "parameters": [ + { + "description": "MsgVote is the Msg/Vote request type.", + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/cosmos.group.v1.MsgVote" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.group.v1.MsgVoteResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos.group.v1.Msg/WithdrawProposal": { + "post": { + "tags": [ + "Msg" + ], + "summary": "WithdrawProposal withdraws a proposal.", + "operationId": "CircuitMsg_WithdrawProposal", + "parameters": [ + { + "description": "MsgWithdrawProposal is the Msg/WithdrawProposal request type.", + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/cosmos.group.v1.MsgWithdrawProposal" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.group.v1.MsgWithdrawProposalResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos.mint.v1beta1.Msg/UpdateParams": { + "post": { + "description": "Since: cosmos-sdk 0.47", + "tags": [ + "Msg" + ], + "summary": "UpdateParams defines a governance operation for updating the x/mint module\nparameters. The authority is defaults to the x/gov module account.", + "operationId": "CircuitMsg_UpdateParamsMixin115", + "parameters": [ + { + "description": "MsgUpdateParams is the Msg/UpdateParams request type.\n\nSince: cosmos-sdk 0.47", + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/cosmos.mint.v1beta1.MsgUpdateParams" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.mint.v1beta1.MsgUpdateParamsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos.nft.v1beta1.Msg/Send": { + "post": { + "tags": [ + "Msg" + ], + "summary": "Send defines a method to send a nft from one account to another account.", + "operationId": "CircuitMsg_SendMixin121", + "parameters": [ + { + "description": "MsgSend represents a message to send a nft from one account to another account.", + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/cosmos.nft.v1beta1.MsgSend" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.nft.v1beta1.MsgSendResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos.slashing.v1beta1.Msg/Unjail": { + "post": { + "tags": [ + "Msg" + ], + "summary": "Unjail defines a method for unjailing a jailed validator, thus returning\nthem into the bonded validator set, so they can begin receiving provisions\nand rewards again.", + "operationId": "CircuitMsg_Unjail", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/cosmos.slashing.v1beta1.MsgUnjail" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.slashing.v1beta1.MsgUnjailResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos.slashing.v1beta1.Msg/UpdateParams": { + "post": { + "description": "Since: cosmos-sdk 0.47", + "tags": [ + "Msg" + ], + "summary": "UpdateParams defines a governance operation for updating the x/slashing module\nparameters. The authority defaults to the x/gov module account.", + "operationId": "CircuitMsg_UpdateParamsMixin128", + "parameters": [ + { + "description": "MsgUpdateParams is the Msg/UpdateParams request type.\n\nSince: cosmos-sdk 0.47", + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/cosmos.slashing.v1beta1.MsgUpdateParams" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.slashing.v1beta1.MsgUpdateParamsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos.staking.v1beta1.Msg/BeginRedelegate": { + "post": { + "tags": [ + "Msg" + ], + "summary": "BeginRedelegate defines a method for performing a redelegation\nof coins from a delegator and source validator to a destination validator.", + "operationId": "CircuitMsg_BeginRedelegate", + "parameters": [ + { + "description": "MsgBeginRedelegate defines a SDK message for performing a redelegation\nof coins from a delegator and source validator to a destination validator.", + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/cosmos.staking.v1beta1.MsgBeginRedelegate" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.staking.v1beta1.MsgBeginRedelegateResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos.staking.v1beta1.Msg/CancelUnbondingDelegation": { + "post": { + "description": "Since: cosmos-sdk 0.46", + "tags": [ + "Msg" + ], + "summary": "CancelUnbondingDelegation defines a method for performing canceling the unbonding delegation\nand delegate back to previous validator.", + "operationId": "CircuitMsg_CancelUnbondingDelegation", + "parameters": [ + { + "description": "Since: cosmos-sdk 0.46", + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/cosmos.staking.v1beta1.MsgCancelUnbondingDelegation" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.staking.v1beta1.MsgCancelUnbondingDelegationResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos.staking.v1beta1.Msg/CreateValidator": { + "post": { + "tags": [ + "Msg" + ], + "summary": "CreateValidator defines a method for creating a new validator.", + "operationId": "CircuitMsg_CreateValidator", + "parameters": [ + { + "description": "MsgCreateValidator defines a SDK message for creating a new validator.", + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/cosmos.staking.v1beta1.MsgCreateValidator" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.staking.v1beta1.MsgCreateValidatorResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos.staking.v1beta1.Msg/Delegate": { + "post": { + "tags": [ + "Msg" + ], + "summary": "Delegate defines a method for performing a delegation of coins\nfrom a delegator to a validator.", + "operationId": "CircuitMsg_Delegate", + "parameters": [ + { + "description": "MsgDelegate defines a SDK message for performing a delegation of coins\nfrom a delegator to a validator.", + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/cosmos.staking.v1beta1.MsgDelegate" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.staking.v1beta1.MsgDelegateResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos.staking.v1beta1.Msg/EditValidator": { + "post": { + "tags": [ + "Msg" + ], + "summary": "EditValidator defines a method for editing an existing validator.", + "operationId": "CircuitMsg_EditValidator", + "parameters": [ + { + "description": "MsgEditValidator defines a SDK message for editing an existing validator.", + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/cosmos.staking.v1beta1.MsgEditValidator" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.staking.v1beta1.MsgEditValidatorResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos.staking.v1beta1.Msg/Undelegate": { + "post": { + "tags": [ + "Msg" + ], + "summary": "Undelegate defines a method for performing an undelegation from a\ndelegate and a validator.", + "operationId": "CircuitMsg_Undelegate", + "parameters": [ + { + "description": "MsgUndelegate defines a SDK message for performing an undelegation from a\ndelegate and a validator.", + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/cosmos.staking.v1beta1.MsgUndelegate" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.staking.v1beta1.MsgUndelegateResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos.staking.v1beta1.Msg/UpdateParams": { + "post": { + "tags": [ + "Msg" + ], + "summary": "UpdateParams defines an operation for updating the x/staking module\nparameters.\nSince: cosmos-sdk 0.47", + "operationId": "CircuitMsg_UpdateParamsMixin133", + "parameters": [ + { + "description": "MsgUpdateParams is the Msg/UpdateParams request type.\n\nSince: cosmos-sdk 0.47", + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/cosmos.staking.v1beta1.MsgUpdateParams" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.staking.v1beta1.MsgUpdateParamsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos.store.streaming.abci.ABCIListenerService/ListenCommit": { + "post": { + "tags": [ + "ABCIListenerService" + ], + "summary": "ListenCommit is the corresponding endpoint for ABCIListener.ListenCommit", + "operationId": "CircuitABCIListenerService_ListenCommit", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/cosmos.store.streaming.abci.ListenCommitRequest" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.store.streaming.abci.ListenCommitResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos.store.streaming.abci.ABCIListenerService/ListenFinalizeBlock": { + "post": { + "tags": [ + "ABCIListenerService" + ], + "summary": "ListenFinalizeBlock is the corresponding endpoint for ABCIListener.ListenEndBlock", + "operationId": "CircuitABCIListenerService_ListenFinalizeBlock", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/cosmos.store.streaming.abci.ListenFinalizeBlockRequest" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.store.streaming.abci.ListenFinalizeBlockResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos.upgrade.v1beta1.Msg/CancelUpgrade": { + "post": { + "description": "Since: cosmos-sdk 0.46", + "tags": [ + "Msg" + ], + "summary": "CancelUpgrade is a governance operation for cancelling a previously\napproved software upgrade.", + "operationId": "CircuitMsg_CancelUpgrade", + "parameters": [ + { + "description": "MsgCancelUpgrade is the Msg/CancelUpgrade request type.\n\nSince: cosmos-sdk 0.46", + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/cosmos.upgrade.v1beta1.MsgCancelUpgrade" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.upgrade.v1beta1.MsgCancelUpgradeResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos.upgrade.v1beta1.Msg/SoftwareUpgrade": { + "post": { + "description": "Since: cosmos-sdk 0.46", + "tags": [ + "Msg" + ], + "summary": "SoftwareUpgrade is a governance operation for initiating a software upgrade.", + "operationId": "CircuitMsg_SoftwareUpgrade", + "parameters": [ + { + "description": "MsgSoftwareUpgrade is the Msg/SoftwareUpgrade request type.\n\nSince: cosmos-sdk 0.46", + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/cosmos.upgrade.v1beta1.MsgSoftwareUpgrade" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.upgrade.v1beta1.MsgSoftwareUpgradeResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos.vesting.v1beta1.Msg/CreatePeriodicVestingAccount": { + "post": { + "description": "Since: cosmos-sdk 0.46", + "tags": [ + "Msg" + ], + "summary": "CreatePeriodicVestingAccount defines a method that enables creating a\nperiodic vesting account.", + "operationId": "CircuitMsg_CreatePeriodicVestingAccount", + "parameters": [ + { + "description": "MsgCreateVestingAccount defines a message that enables creating a vesting\naccount.\n\nSince: cosmos-sdk 0.46", + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/cosmos.vesting.v1beta1.MsgCreatePeriodicVestingAccount" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.vesting.v1beta1.MsgCreatePeriodicVestingAccountResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos.vesting.v1beta1.Msg/CreatePermanentLockedAccount": { + "post": { + "description": "Since: cosmos-sdk 0.46", + "tags": [ + "Msg" + ], + "summary": "CreatePermanentLockedAccount defines a method that enables creating a permanent\nlocked account.", + "operationId": "CircuitMsg_CreatePermanentLockedAccount", + "parameters": [ + { + "description": "MsgCreatePermanentLockedAccount defines a message that enables creating a permanent\nlocked account.\n\nSince: cosmos-sdk 0.46", + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/cosmos.vesting.v1beta1.MsgCreatePermanentLockedAccount" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.vesting.v1beta1.MsgCreatePermanentLockedAccountResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos.vesting.v1beta1.Msg/CreateVestingAccount": { + "post": { + "tags": [ + "Msg" + ], + "summary": "CreateVestingAccount defines a method that enables creating a vesting\naccount.", + "operationId": "CircuitMsg_CreateVestingAccount", + "parameters": [ + { + "description": "MsgCreateVestingAccount defines a message that enables creating a vesting\naccount.", + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/cosmos.vesting.v1beta1.MsgCreateVestingAccount" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.vesting.v1beta1.MsgCreateVestingAccountResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos/auth/v1beta1/account_info/{address}": { + "get": { + "description": "Since: cosmos-sdk 0.47", + "tags": [ + "Query" + ], + "summary": "AccountInfo queries account info which is common to all account types.", + "operationId": "CircuitQuery_AccountInfo", + "parameters": [ + { + "type": "string", + "description": "address is the account address string.", + "name": "address", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.auth.v1beta1.QueryAccountInfoResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos/auth/v1beta1/accounts": { + "get": { + "description": "When called from another module, this query might consume a high amount of\ngas if the pagination field is incorrectly set.\n\nSince: cosmos-sdk 0.43", + "tags": [ + "Query" + ], + "summary": "Accounts returns all the existing accounts.", + "operationId": "CircuitQuery_Accounts", + "parameters": [ + { + "type": "string", + "format": "byte", + "description": "key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.", + "name": "pagination.key", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.", + "name": "pagination.offset", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.", + "name": "pagination.limit", + "in": "query" + }, + { + "type": "boolean", + "description": "count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.", + "name": "pagination.count_total", + "in": "query" + }, + { + "type": "boolean", + "description": "reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43", + "name": "pagination.reverse", + "in": "query" + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.auth.v1beta1.QueryAccountsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos/auth/v1beta1/accounts/{address}": { + "get": { + "tags": [ + "Query" + ], + "summary": "Account returns account details based on address.", + "operationId": "CircuitQuery_Account", + "parameters": [ + { + "type": "string", + "description": "address defines the address to query for.", + "name": "address", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.auth.v1beta1.QueryAccountResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos/auth/v1beta1/address_by_id/{id}": { + "get": { + "description": "Since: cosmos-sdk 0.46.2", + "tags": [ + "Query" + ], + "summary": "AccountAddressByID returns account address based on account number.", + "operationId": "CircuitQuery_AccountAddressByID", + "parameters": [ + { + "type": "string", + "format": "int64", + "description": "Deprecated, use account_id instead\n\nid is the account number of the address to be queried. This field\nshould have been an uint64 (like all account numbers), and will be\nupdated to uint64 in a future version of the auth query.", + "name": "id", + "in": "path", + "required": true + }, + { + "type": "string", + "format": "uint64", + "description": "account_id is the account number of the address to be queried.\n\nSince: cosmos-sdk 0.47", + "name": "account_id", + "in": "query" + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.auth.v1beta1.QueryAccountAddressByIDResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos/auth/v1beta1/bech32": { + "get": { + "description": "Since: cosmos-sdk 0.46", + "tags": [ + "Query" + ], + "summary": "Bech32Prefix queries bech32Prefix", + "operationId": "CircuitQuery_Bech32Prefix", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.auth.v1beta1.Bech32PrefixResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos/auth/v1beta1/bech32/{address_bytes}": { + "get": { + "description": "Since: cosmos-sdk 0.46", + "tags": [ + "Query" + ], + "summary": "AddressBytesToString converts Account Address bytes to string", + "operationId": "CircuitQuery_AddressBytesToString", + "parameters": [ + { + "type": "string", + "format": "byte", + "name": "address_bytes", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.auth.v1beta1.AddressBytesToStringResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos/auth/v1beta1/bech32/{address_string}": { + "get": { + "description": "Since: cosmos-sdk 0.46", + "tags": [ + "Query" + ], + "summary": "AddressStringToBytes converts Address string to bytes", + "operationId": "CircuitQuery_AddressStringToBytes", + "parameters": [ + { + "type": "string", + "name": "address_string", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.auth.v1beta1.AddressStringToBytesResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos/auth/v1beta1/module_accounts": { + "get": { + "description": "Since: cosmos-sdk 0.46", + "tags": [ + "Query" + ], + "summary": "ModuleAccounts returns all the existing module accounts.", + "operationId": "CircuitQuery_ModuleAccounts", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.auth.v1beta1.QueryModuleAccountsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos/auth/v1beta1/module_accounts/{name}": { + "get": { + "tags": [ + "Query" + ], + "summary": "ModuleAccountByName returns the module account info by module name", + "operationId": "CircuitQuery_ModuleAccountByName", + "parameters": [ + { + "type": "string", + "name": "name", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.auth.v1beta1.QueryModuleAccountByNameResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos/auth/v1beta1/params": { + "get": { + "tags": [ + "Query" + ], + "summary": "Params queries all parameters.", + "operationId": "CircuitQuery_Params", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.auth.v1beta1.QueryParamsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos/authz/v1beta1/grants": { + "get": { + "tags": [ + "Query" + ], + "summary": "Returns list of `Authorization`, granted to the grantee by the granter.", + "operationId": "CircuitQuery_Grants", + "parameters": [ + { + "type": "string", + "name": "granter", + "in": "query" + }, + { + "type": "string", + "name": "grantee", + "in": "query" + }, + { + "type": "string", + "description": "Optional, msg_type_url, when set, will query only grants matching given msg type.", + "name": "msg_type_url", + "in": "query" + }, + { + "type": "string", + "format": "byte", + "description": "key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.", + "name": "pagination.key", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.", + "name": "pagination.offset", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.", + "name": "pagination.limit", + "in": "query" + }, + { + "type": "boolean", + "description": "count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.", + "name": "pagination.count_total", + "in": "query" + }, + { + "type": "boolean", + "description": "reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43", + "name": "pagination.reverse", + "in": "query" + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.authz.v1beta1.QueryGrantsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos/authz/v1beta1/grants/grantee/{grantee}": { + "get": { + "description": "Since: cosmos-sdk 0.46", + "tags": [ + "Query" + ], + "summary": "GranteeGrants returns a list of `GrantAuthorization` by grantee.", + "operationId": "CircuitQuery_GranteeGrants", + "parameters": [ + { + "type": "string", + "name": "grantee", + "in": "path", + "required": true + }, + { + "type": "string", + "format": "byte", + "description": "key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.", + "name": "pagination.key", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.", + "name": "pagination.offset", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.", + "name": "pagination.limit", + "in": "query" + }, + { + "type": "boolean", + "description": "count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.", + "name": "pagination.count_total", + "in": "query" + }, + { + "type": "boolean", + "description": "reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43", + "name": "pagination.reverse", + "in": "query" + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.authz.v1beta1.QueryGranteeGrantsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos/authz/v1beta1/grants/granter/{granter}": { + "get": { + "description": "Since: cosmos-sdk 0.46", + "tags": [ + "Query" + ], + "summary": "GranterGrants returns list of `GrantAuthorization`, granted by granter.", + "operationId": "CircuitQuery_GranterGrants", + "parameters": [ + { + "type": "string", + "name": "granter", + "in": "path", + "required": true + }, + { + "type": "string", + "format": "byte", + "description": "key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.", + "name": "pagination.key", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.", + "name": "pagination.offset", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.", + "name": "pagination.limit", + "in": "query" + }, + { + "type": "boolean", + "description": "count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.", + "name": "pagination.count_total", + "in": "query" + }, + { + "type": "boolean", + "description": "reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43", + "name": "pagination.reverse", + "in": "query" + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.authz.v1beta1.QueryGranterGrantsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos/bank/v1beta1/balances/{address}": { + "get": { + "description": "When called from another module, this query might consume a high amount of\ngas if the pagination field is incorrectly set.", + "tags": [ + "Query" + ], + "summary": "AllBalances queries the balance of all coins for a single account.", + "operationId": "CircuitQuery_AllBalances", + "parameters": [ + { + "type": "string", + "description": "address is the address to query balances for.", + "name": "address", + "in": "path", + "required": true + }, + { + "type": "string", + "format": "byte", + "description": "key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.", + "name": "pagination.key", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.", + "name": "pagination.offset", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.", + "name": "pagination.limit", + "in": "query" + }, + { + "type": "boolean", + "description": "count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.", + "name": "pagination.count_total", + "in": "query" + }, + { + "type": "boolean", + "description": "reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43", + "name": "pagination.reverse", + "in": "query" + }, + { + "type": "boolean", + "description": "resolve_denom is the flag to resolve the denom into a human-readable form from the metadata.\n\nSince: cosmos-sdk 0.50", + "name": "resolve_denom", + "in": "query" + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.bank.v1beta1.QueryAllBalancesResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos/bank/v1beta1/balances/{address}/by_denom": { + "get": { + "tags": [ + "Query" + ], + "summary": "Balance queries the balance of a single coin for a single account.", + "operationId": "CircuitQuery_Balance", + "parameters": [ + { + "type": "string", + "description": "address is the address to query balances for.", + "name": "address", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "denom is the coin denom to query balances for.", + "name": "denom", + "in": "query" + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.bank.v1beta1.QueryBalanceResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos/bank/v1beta1/denom_owners/{denom}": { + "get": { + "description": "When called from another module, this query might consume a high amount of\ngas if the pagination field is incorrectly set.\n\nSince: cosmos-sdk 0.46", + "tags": [ + "Query" + ], + "summary": "DenomOwners queries for all account addresses that own a particular token\ndenomination.", + "operationId": "CircuitQuery_DenomOwners", + "parameters": [ + { + "type": "string", + "description": "denom defines the coin denomination to query all account holders for.", + "name": "denom", + "in": "path", + "required": true + }, + { + "type": "string", + "format": "byte", + "description": "key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.", + "name": "pagination.key", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.", + "name": "pagination.offset", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.", + "name": "pagination.limit", + "in": "query" + }, + { + "type": "boolean", + "description": "count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.", + "name": "pagination.count_total", + "in": "query" + }, + { + "type": "boolean", + "description": "reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43", + "name": "pagination.reverse", + "in": "query" + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.bank.v1beta1.QueryDenomOwnersResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos/bank/v1beta1/denom_owners_by_query": { + "get": { + "description": "Since: cosmos-sdk 0.50.3", + "tags": [ + "Query" + ], + "summary": "DenomOwnersByQuery queries for all account addresses that own a particular token\ndenomination.", + "operationId": "CircuitQuery_DenomOwnersByQuery", + "parameters": [ + { + "type": "string", + "description": "denom defines the coin denomination to query all account holders for.", + "name": "denom", + "in": "query" + }, + { + "type": "string", + "format": "byte", + "description": "key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.", + "name": "pagination.key", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.", + "name": "pagination.offset", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.", + "name": "pagination.limit", + "in": "query" + }, + { + "type": "boolean", + "description": "count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.", + "name": "pagination.count_total", + "in": "query" + }, + { + "type": "boolean", + "description": "reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43", + "name": "pagination.reverse", + "in": "query" + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.bank.v1beta1.QueryDenomOwnersByQueryResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos/bank/v1beta1/denoms_metadata": { + "get": { + "tags": [ + "Query" + ], + "summary": "DenomsMetadata queries the client metadata for all registered coin\ndenominations.", + "operationId": "CircuitQuery_DenomsMetadata", + "parameters": [ + { + "type": "string", + "format": "byte", + "description": "key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.", + "name": "pagination.key", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.", + "name": "pagination.offset", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.", + "name": "pagination.limit", + "in": "query" + }, + { + "type": "boolean", + "description": "count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.", + "name": "pagination.count_total", + "in": "query" + }, + { + "type": "boolean", + "description": "reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43", + "name": "pagination.reverse", + "in": "query" + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.bank.v1beta1.QueryDenomsMetadataResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos/bank/v1beta1/denoms_metadata/{denom}": { + "get": { + "tags": [ + "Query" + ], + "summary": "DenomMetadata queries the client metadata of a given coin denomination.", + "operationId": "CircuitQuery_DenomMetadata", + "parameters": [ + { + "type": "string", + "description": "denom is the coin denom to query the metadata for.", + "name": "denom", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.bank.v1beta1.QueryDenomMetadataResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos/bank/v1beta1/denoms_metadata_by_query_string": { + "get": { + "tags": [ + "Query" + ], + "summary": "DenomMetadataByQueryString queries the client metadata of a given coin denomination.", + "operationId": "CircuitQuery_DenomMetadataByQueryString", + "parameters": [ + { + "type": "string", + "description": "denom is the coin denom to query the metadata for.", + "name": "denom", + "in": "query" + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.bank.v1beta1.QueryDenomMetadataByQueryStringResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos/bank/v1beta1/params": { + "get": { + "tags": [ + "Query" + ], + "summary": "Params queries the parameters of x/bank module.", + "operationId": "CircuitQuery_ParamsMixin62", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.bank.v1beta1.QueryParamsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos/bank/v1beta1/send_enabled": { + "get": { + "description": "This query only returns denominations that have specific SendEnabled settings.\nAny denomination that does not have a specific setting will use the default\nparams.default_send_enabled, and will not be returned by this query.\n\nSince: cosmos-sdk 0.47", + "tags": [ + "Query" + ], + "summary": "SendEnabled queries for SendEnabled entries.", + "operationId": "CircuitQuery_SendEnabled", + "parameters": [ + { + "type": "array", + "items": { + "type": "string" + }, + "collectionFormat": "multi", + "description": "denoms is the specific denoms you want look up. Leave empty to get all entries.", + "name": "denoms", + "in": "query" + }, + { + "type": "string", + "format": "byte", + "description": "key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.", + "name": "pagination.key", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.", + "name": "pagination.offset", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.", + "name": "pagination.limit", + "in": "query" + }, + { + "type": "boolean", + "description": "count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.", + "name": "pagination.count_total", + "in": "query" + }, + { + "type": "boolean", + "description": "reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43", + "name": "pagination.reverse", + "in": "query" + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.bank.v1beta1.QuerySendEnabledResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos/bank/v1beta1/spendable_balances/{address}": { + "get": { + "description": "When called from another module, this query might consume a high amount of\ngas if the pagination field is incorrectly set.\n\nSince: cosmos-sdk 0.46", + "tags": [ + "Query" + ], + "summary": "SpendableBalances queries the spendable balance of all coins for a single\naccount.", + "operationId": "CircuitQuery_SpendableBalances", + "parameters": [ + { + "type": "string", + "description": "address is the address to query spendable balances for.", + "name": "address", + "in": "path", + "required": true + }, + { + "type": "string", + "format": "byte", + "description": "key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.", + "name": "pagination.key", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.", + "name": "pagination.offset", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.", + "name": "pagination.limit", + "in": "query" + }, + { + "type": "boolean", + "description": "count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.", + "name": "pagination.count_total", + "in": "query" + }, + { + "type": "boolean", + "description": "reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43", + "name": "pagination.reverse", + "in": "query" + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.bank.v1beta1.QuerySpendableBalancesResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos/bank/v1beta1/spendable_balances/{address}/by_denom": { + "get": { + "description": "When called from another module, this query might consume a high amount of\ngas if the pagination field is incorrectly set.\n\nSince: cosmos-sdk 0.47", + "tags": [ + "Query" + ], + "summary": "SpendableBalanceByDenom queries the spendable balance of a single denom for\na single account.", + "operationId": "CircuitQuery_SpendableBalanceByDenom", + "parameters": [ + { + "type": "string", + "description": "address is the address to query balances for.", + "name": "address", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "denom is the coin denom to query balances for.", + "name": "denom", + "in": "query" + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.bank.v1beta1.QuerySpendableBalanceByDenomResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos/bank/v1beta1/supply": { + "get": { + "description": "When called from another module, this query might consume a high amount of\ngas if the pagination field is incorrectly set.", + "tags": [ + "Query" + ], + "summary": "TotalSupply queries the total supply of all coins.", + "operationId": "CircuitQuery_TotalSupply", + "parameters": [ + { + "type": "string", + "format": "byte", + "description": "key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.", + "name": "pagination.key", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.", + "name": "pagination.offset", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.", + "name": "pagination.limit", + "in": "query" + }, + { + "type": "boolean", + "description": "count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.", + "name": "pagination.count_total", + "in": "query" + }, + { + "type": "boolean", + "description": "reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43", + "name": "pagination.reverse", + "in": "query" + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.bank.v1beta1.QueryTotalSupplyResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos/bank/v1beta1/supply/by_denom": { + "get": { + "description": "When called from another module, this query might consume a high amount of\ngas if the pagination field is incorrectly set.", + "tags": [ + "Query" + ], + "summary": "SupplyOf queries the supply of a single coin.", + "operationId": "CircuitQuery_SupplyOf", + "parameters": [ + { + "type": "string", + "description": "denom is the coin denom to query balances for.", + "name": "denom", + "in": "query" + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.bank.v1beta1.QuerySupplyOfResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos/base/node/v1beta1/config": { + "get": { + "tags": [ + "Service" + ], + "summary": "Config queries for the operator configuration.", + "operationId": "CircuitService_Config", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.base.node.v1beta1.ConfigResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos/base/node/v1beta1/status": { + "get": { + "tags": [ + "Service" + ], + "summary": "Status queries for the node status.", + "operationId": "CircuitService_Status", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.base.node.v1beta1.StatusResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos/base/reflection/v1beta1/app_descriptor/authn": { + "get": { + "tags": [ + "ReflectionService" + ], + "summary": "GetAuthnDescriptor returns information on how to authenticate transactions in the application\nNOTE: this RPC is still experimental and might be subject to breaking changes or removal in\nfuture releases of the cosmos-sdk.", + "operationId": "CircuitReflectionService_GetAuthnDescriptor", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.base.reflection.v2alpha1.GetAuthnDescriptorResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos/base/reflection/v1beta1/app_descriptor/chain": { + "get": { + "tags": [ + "ReflectionService" + ], + "summary": "GetChainDescriptor returns the description of the chain", + "operationId": "CircuitReflectionService_GetChainDescriptor", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.base.reflection.v2alpha1.GetChainDescriptorResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos/base/reflection/v1beta1/app_descriptor/codec": { + "get": { + "tags": [ + "ReflectionService" + ], + "summary": "GetCodecDescriptor returns the descriptor of the codec of the application", + "operationId": "CircuitReflectionService_GetCodecDescriptor", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.base.reflection.v2alpha1.GetCodecDescriptorResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos/base/reflection/v1beta1/app_descriptor/configuration": { + "get": { + "tags": [ + "ReflectionService" + ], + "summary": "GetConfigurationDescriptor returns the descriptor for the sdk.Config of the application", + "operationId": "CircuitReflectionService_GetConfigurationDescriptor", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.base.reflection.v2alpha1.GetConfigurationDescriptorResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos/base/reflection/v1beta1/app_descriptor/query_services": { + "get": { + "tags": [ + "ReflectionService" + ], + "summary": "GetQueryServicesDescriptor returns the available gRPC queryable services of the application", + "operationId": "CircuitReflectionService_GetQueryServicesDescriptor", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.base.reflection.v2alpha1.GetQueryServicesDescriptorResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos/base/reflection/v1beta1/app_descriptor/tx_descriptor": { + "get": { + "tags": [ + "ReflectionService" + ], + "summary": "GetTxDescriptor returns information on the used transaction object and available msgs that can be used", + "operationId": "CircuitReflectionService_GetTxDescriptor", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.base.reflection.v2alpha1.GetTxDescriptorResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos/base/reflection/v1beta1/interfaces": { + "get": { + "tags": [ + "ReflectionService" + ], + "summary": "ListAllInterfaces lists all the interfaces registered in the interface\nregistry.", + "operationId": "CircuitReflectionService_ListAllInterfaces", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.base.reflection.v1beta1.ListAllInterfacesResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos/base/reflection/v1beta1/interfaces/{interface_name}/implementations": { + "get": { + "tags": [ + "ReflectionService" + ], + "summary": "ListImplementations list all the concrete types that implement a given\ninterface.", + "operationId": "CircuitReflectionService_ListImplementations", + "parameters": [ + { + "type": "string", + "description": "interface_name defines the interface to query the implementations for.", + "name": "interface_name", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.base.reflection.v1beta1.ListImplementationsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos/base/tendermint/v1beta1/abci_query": { + "get": { + "description": "Since: cosmos-sdk 0.46", + "tags": [ + "Service" + ], + "summary": "ABCIQuery defines a query handler that supports ABCI queries directly to the\napplication, bypassing Tendermint completely. The ABCI query must contain\na valid and supported path, including app, custom, p2p, and store.", + "operationId": "CircuitService_ABCIQuery", + "parameters": [ + { + "type": "string", + "format": "byte", + "name": "data", + "in": "query" + }, + { + "type": "string", + "name": "path", + "in": "query" + }, + { + "type": "string", + "format": "int64", + "name": "height", + "in": "query" + }, + { + "type": "boolean", + "name": "prove", + "in": "query" + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.base.tendermint.v1beta1.ABCIQueryResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos/base/tendermint/v1beta1/blocks/latest": { + "get": { + "tags": [ + "Service" + ], + "summary": "GetLatestBlock returns the latest block.", + "operationId": "CircuitService_GetLatestBlock", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.base.tendermint.v1beta1.GetLatestBlockResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos/base/tendermint/v1beta1/blocks/{height}": { + "get": { + "tags": [ + "Service" + ], + "summary": "GetBlockByHeight queries block for given height.", + "operationId": "CircuitService_GetBlockByHeight", + "parameters": [ + { + "type": "string", + "format": "int64", + "name": "height", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.base.tendermint.v1beta1.GetBlockByHeightResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos/base/tendermint/v1beta1/node_info": { + "get": { + "tags": [ + "Service" + ], + "summary": "GetNodeInfo queries the current node info.", + "operationId": "CircuitService_GetNodeInfo", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.base.tendermint.v1beta1.GetNodeInfoResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos/base/tendermint/v1beta1/syncing": { + "get": { + "tags": [ + "Service" + ], + "summary": "GetSyncing queries node syncing.", + "operationId": "CircuitService_GetSyncing", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.base.tendermint.v1beta1.GetSyncingResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos/base/tendermint/v1beta1/validatorsets/latest": { + "get": { + "tags": [ + "Service" + ], + "summary": "GetLatestValidatorSet queries latest validator-set.", + "operationId": "CircuitService_GetLatestValidatorSet", + "parameters": [ + { + "type": "string", + "format": "byte", + "description": "key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.", + "name": "pagination.key", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.", + "name": "pagination.offset", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.", + "name": "pagination.limit", + "in": "query" + }, + { + "type": "boolean", + "description": "count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.", + "name": "pagination.count_total", + "in": "query" + }, + { + "type": "boolean", + "description": "reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43", + "name": "pagination.reverse", + "in": "query" + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.base.tendermint.v1beta1.GetLatestValidatorSetResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos/base/tendermint/v1beta1/validatorsets/{height}": { + "get": { + "tags": [ + "Service" + ], + "summary": "GetValidatorSetByHeight queries validator-set at a given height.", + "operationId": "CircuitService_GetValidatorSetByHeight", + "parameters": [ + { + "type": "string", + "format": "int64", + "name": "height", + "in": "path", + "required": true + }, + { + "type": "string", + "format": "byte", + "description": "key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.", + "name": "pagination.key", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.", + "name": "pagination.offset", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.", + "name": "pagination.limit", + "in": "query" + }, + { + "type": "boolean", + "description": "count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.", + "name": "pagination.count_total", + "in": "query" + }, + { + "type": "boolean", + "description": "reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43", + "name": "pagination.reverse", + "in": "query" + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.base.tendermint.v1beta1.GetValidatorSetByHeightResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos/circuit/v1/accounts": { + "get": { + "tags": [ + "Query" + ], + "summary": "Account returns account permissions.", + "operationId": "CircuitQuery_AccountsMixin72", + "parameters": [ + { + "type": "string", + "format": "byte", + "description": "key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.", + "name": "pagination.key", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.", + "name": "pagination.offset", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.", + "name": "pagination.limit", + "in": "query" + }, + { + "type": "boolean", + "description": "count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.", + "name": "pagination.count_total", + "in": "query" + }, + { + "type": "boolean", + "description": "reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43", + "name": "pagination.reverse", + "in": "query" + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.circuit.v1.AccountsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos/circuit/v1/accounts/{address}": { + "get": { + "tags": [ + "Query" + ], + "summary": "Account returns account permissions.", + "operationId": "CircuitQuery_AccountMixin72", + "parameters": [ + { + "type": "string", + "name": "address", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.circuit.v1.AccountResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos/circuit/v1/disable_list": { + "get": { + "tags": [ + "Query" + ], + "summary": "DisabledList returns a list of disabled message urls", + "operationId": "CircuitQuery_DisabledList", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.circuit.v1.DisabledListResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos/consensus/v1/params": { + "get": { + "tags": [ + "Query" + ], + "summary": "Params queries the parameters of x/consensus module.", + "operationId": "CircuitQuery_ParamsMixin75", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.consensus.v1.QueryParamsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos/distribution/v1beta1/community_pool": { + "get": { + "tags": [ + "Query" + ], + "summary": "CommunityPool queries the community pool coins.", + "operationId": "CircuitQuery_CommunityPool", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.distribution.v1beta1.QueryCommunityPoolResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos/distribution/v1beta1/delegators/{delegator_address}/rewards": { + "get": { + "tags": [ + "Query" + ], + "summary": "DelegationTotalRewards queries the total rewards accrued by each\nvalidator.", + "operationId": "CircuitQuery_DelegationTotalRewards", + "parameters": [ + { + "type": "string", + "description": "delegator_address defines the delegator address to query for.", + "name": "delegator_address", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.distribution.v1beta1.QueryDelegationTotalRewardsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos/distribution/v1beta1/delegators/{delegator_address}/rewards/{validator_address}": { + "get": { + "tags": [ + "Query" + ], + "summary": "DelegationRewards queries the total rewards accrued by a delegation.", + "operationId": "CircuitQuery_DelegationRewards", + "parameters": [ + { + "type": "string", + "description": "delegator_address defines the delegator address to query for.", + "name": "delegator_address", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "validator_address defines the validator address to query for.", + "name": "validator_address", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.distribution.v1beta1.QueryDelegationRewardsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos/distribution/v1beta1/delegators/{delegator_address}/validators": { + "get": { + "tags": [ + "Query" + ], + "summary": "DelegatorValidators queries the validators of a delegator.", + "operationId": "CircuitQuery_DelegatorValidators", + "parameters": [ + { + "type": "string", + "description": "delegator_address defines the delegator address to query for.", + "name": "delegator_address", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.distribution.v1beta1.QueryDelegatorValidatorsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos/distribution/v1beta1/delegators/{delegator_address}/withdraw_address": { + "get": { + "tags": [ + "Query" + ], + "summary": "DelegatorWithdrawAddress queries withdraw address of a delegator.", + "operationId": "CircuitQuery_DelegatorWithdrawAddress", + "parameters": [ + { + "type": "string", + "description": "delegator_address defines the delegator address to query for.", + "name": "delegator_address", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.distribution.v1beta1.QueryDelegatorWithdrawAddressResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos/distribution/v1beta1/params": { + "get": { + "tags": [ + "Query" + ], + "summary": "Params queries params of the distribution module.", + "operationId": "CircuitQuery_ParamsMixin88", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.distribution.v1beta1.QueryParamsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos/distribution/v1beta1/validators/{validator_address}": { + "get": { + "tags": [ + "Query" + ], + "summary": "ValidatorDistributionInfo queries validator commission and self-delegation rewards for validator", + "operationId": "CircuitQuery_ValidatorDistributionInfo", + "parameters": [ + { + "type": "string", + "description": "validator_address defines the validator address to query for.", + "name": "validator_address", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.distribution.v1beta1.QueryValidatorDistributionInfoResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos/distribution/v1beta1/validators/{validator_address}/commission": { + "get": { + "tags": [ + "Query" + ], + "summary": "ValidatorCommission queries accumulated commission for a validator.", + "operationId": "CircuitQuery_ValidatorCommission", + "parameters": [ + { + "type": "string", + "description": "validator_address defines the validator address to query for.", + "name": "validator_address", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.distribution.v1beta1.QueryValidatorCommissionResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos/distribution/v1beta1/validators/{validator_address}/outstanding_rewards": { + "get": { + "tags": [ + "Query" + ], + "summary": "ValidatorOutstandingRewards queries rewards of a validator address.", + "operationId": "CircuitQuery_ValidatorOutstandingRewards", + "parameters": [ + { + "type": "string", + "description": "validator_address defines the validator address to query for.", + "name": "validator_address", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.distribution.v1beta1.QueryValidatorOutstandingRewardsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos/distribution/v1beta1/validators/{validator_address}/slashes": { + "get": { + "tags": [ + "Query" + ], + "summary": "ValidatorSlashes queries slash events of a validator.", + "operationId": "CircuitQuery_ValidatorSlashes", + "parameters": [ + { + "type": "string", + "description": "validator_address defines the validator address to query for.", + "name": "validator_address", + "in": "path", + "required": true + }, + { + "type": "string", + "format": "uint64", + "description": "starting_height defines the optional starting height to query the slashes.", + "name": "starting_height", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "starting_height defines the optional ending height to query the slashes.", + "name": "ending_height", + "in": "query" + }, + { + "type": "string", + "format": "byte", + "description": "key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.", + "name": "pagination.key", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.", + "name": "pagination.offset", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.", + "name": "pagination.limit", + "in": "query" + }, + { + "type": "boolean", + "description": "count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.", + "name": "pagination.count_total", + "in": "query" + }, + { + "type": "boolean", + "description": "reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43", + "name": "pagination.reverse", + "in": "query" + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.distribution.v1beta1.QueryValidatorSlashesResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos/evidence/v1beta1/evidence": { + "get": { + "tags": [ + "Query" + ], + "summary": "AllEvidence queries all evidence.", + "operationId": "CircuitQuery_AllEvidence", + "parameters": [ + { + "type": "string", + "format": "byte", + "description": "key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.", + "name": "pagination.key", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.", + "name": "pagination.offset", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.", + "name": "pagination.limit", + "in": "query" + }, + { + "type": "boolean", + "description": "count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.", + "name": "pagination.count_total", + "in": "query" + }, + { + "type": "boolean", + "description": "reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43", + "name": "pagination.reverse", + "in": "query" + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.evidence.v1beta1.QueryAllEvidenceResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos/evidence/v1beta1/evidence/{hash}": { + "get": { + "tags": [ + "Query" + ], + "summary": "Evidence queries evidence based on evidence hash.", + "operationId": "CircuitQuery_Evidence", + "parameters": [ + { + "type": "string", + "description": "hash defines the evidence hash of the requested evidence.\n\nSince: cosmos-sdk 0.47", + "name": "hash", + "in": "path", + "required": true + }, + { + "type": "string", + "format": "byte", + "description": "evidence_hash defines the hash of the requested evidence.\nDeprecated: Use hash, a HEX encoded string, instead.", + "name": "evidence_hash", + "in": "query" + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.evidence.v1beta1.QueryEvidenceResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos/feegrant/v1beta1/allowance/{granter}/{grantee}": { + "get": { + "tags": [ + "Query" + ], + "summary": "Allowance returns granted allwance to the grantee by the granter.", + "operationId": "CircuitQuery_Allowance", + "parameters": [ + { + "type": "string", + "description": "granter is the address of the user granting an allowance of their funds.", + "name": "granter", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "grantee is the address of the user being granted an allowance of another user's funds.", + "name": "grantee", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.feegrant.v1beta1.QueryAllowanceResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos/feegrant/v1beta1/allowances/{grantee}": { + "get": { + "tags": [ + "Query" + ], + "summary": "Allowances returns all the grants for the given grantee address.", + "operationId": "CircuitQuery_Allowances", + "parameters": [ + { + "type": "string", + "name": "grantee", + "in": "path", + "required": true + }, + { + "type": "string", + "format": "byte", + "description": "key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.", + "name": "pagination.key", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.", + "name": "pagination.offset", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.", + "name": "pagination.limit", + "in": "query" + }, + { + "type": "boolean", + "description": "count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.", + "name": "pagination.count_total", + "in": "query" + }, + { + "type": "boolean", + "description": "reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43", + "name": "pagination.reverse", + "in": "query" + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.feegrant.v1beta1.QueryAllowancesResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos/feegrant/v1beta1/issued/{granter}": { + "get": { + "description": "Since: cosmos-sdk 0.46", + "tags": [ + "Query" + ], + "summary": "AllowancesByGranter returns all the grants given by an address", + "operationId": "CircuitQuery_AllowancesByGranter", + "parameters": [ + { + "type": "string", + "name": "granter", + "in": "path", + "required": true + }, + { + "type": "string", + "format": "byte", + "description": "key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.", + "name": "pagination.key", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.", + "name": "pagination.offset", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.", + "name": "pagination.limit", + "in": "query" + }, + { + "type": "boolean", + "description": "count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.", + "name": "pagination.count_total", + "in": "query" + }, + { + "type": "boolean", + "description": "reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43", + "name": "pagination.reverse", + "in": "query" + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.feegrant.v1beta1.QueryAllowancesByGranterResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos/gov/v1/constitution": { + "get": { + "tags": [ + "Query" + ], + "summary": "Constitution queries the chain's constitution.", + "operationId": "CircuitQuery_Constitution", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.gov.v1.QueryConstitutionResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos/gov/v1/params/{params_type}": { + "get": { + "tags": [ + "Query" + ], + "summary": "Params queries all parameters of the gov module.", + "operationId": "CircuitQuery_ParamsMixin101", + "parameters": [ + { + "type": "string", + "description": "params_type defines which parameters to query for, can be one of \"voting\",\n\"tallying\" or \"deposit\".", + "name": "params_type", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.gov.v1.QueryParamsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos/gov/v1/proposals": { + "get": { + "tags": [ + "Query" + ], + "summary": "Proposals queries all proposals based on given status.", + "operationId": "CircuitQuery_Proposals", + "parameters": [ + { + "enum": [ + "PROPOSAL_STATUS_UNSPECIFIED", + "PROPOSAL_STATUS_DEPOSIT_PERIOD", + "PROPOSAL_STATUS_VOTING_PERIOD", + "PROPOSAL_STATUS_PASSED", + "PROPOSAL_STATUS_REJECTED", + "PROPOSAL_STATUS_FAILED" + ], + "type": "string", + "default": "PROPOSAL_STATUS_UNSPECIFIED", + "description": "proposal_status defines the status of the proposals.\n\n - PROPOSAL_STATUS_UNSPECIFIED: PROPOSAL_STATUS_UNSPECIFIED defines the default proposal status.\n - PROPOSAL_STATUS_DEPOSIT_PERIOD: PROPOSAL_STATUS_DEPOSIT_PERIOD defines a proposal status during the deposit\nperiod.\n - PROPOSAL_STATUS_VOTING_PERIOD: PROPOSAL_STATUS_VOTING_PERIOD defines a proposal status during the voting\nperiod.\n - PROPOSAL_STATUS_PASSED: PROPOSAL_STATUS_PASSED defines a proposal status of a proposal that has\npassed.\n - PROPOSAL_STATUS_REJECTED: PROPOSAL_STATUS_REJECTED defines a proposal status of a proposal that has\nbeen rejected.\n - PROPOSAL_STATUS_FAILED: PROPOSAL_STATUS_FAILED defines a proposal status of a proposal that has\nfailed.", + "name": "proposal_status", + "in": "query" + }, + { + "type": "string", + "description": "voter defines the voter address for the proposals.", + "name": "voter", + "in": "query" + }, + { + "type": "string", + "description": "depositor defines the deposit addresses from the proposals.", + "name": "depositor", + "in": "query" + }, + { + "type": "string", + "format": "byte", + "description": "key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.", + "name": "pagination.key", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.", + "name": "pagination.offset", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.", + "name": "pagination.limit", + "in": "query" + }, + { + "type": "boolean", + "description": "count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.", + "name": "pagination.count_total", + "in": "query" + }, + { + "type": "boolean", + "description": "reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43", + "name": "pagination.reverse", + "in": "query" + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.gov.v1.QueryProposalsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos/gov/v1/proposals/{proposal_id}": { + "get": { + "tags": [ + "Query" + ], + "summary": "Proposal queries proposal details based on ProposalID.", + "operationId": "CircuitQuery_Proposal", + "parameters": [ + { + "type": "string", + "format": "uint64", + "description": "proposal_id defines the unique id of the proposal.", + "name": "proposal_id", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.gov.v1.QueryProposalResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos/gov/v1/proposals/{proposal_id}/deposits": { + "get": { + "tags": [ + "Query" + ], + "summary": "Deposits queries all deposits of a single proposal.", + "operationId": "CircuitQuery_Deposits", + "parameters": [ + { + "type": "string", + "format": "uint64", + "description": "proposal_id defines the unique id of the proposal.", + "name": "proposal_id", + "in": "path", + "required": true + }, + { + "type": "string", + "format": "byte", + "description": "key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.", + "name": "pagination.key", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.", + "name": "pagination.offset", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.", + "name": "pagination.limit", + "in": "query" + }, + { + "type": "boolean", + "description": "count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.", + "name": "pagination.count_total", + "in": "query" + }, + { + "type": "boolean", + "description": "reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43", + "name": "pagination.reverse", + "in": "query" + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.gov.v1.QueryDepositsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos/gov/v1/proposals/{proposal_id}/deposits/{depositor}": { + "get": { + "tags": [ + "Query" + ], + "summary": "Deposit queries single deposit information based on proposalID, depositAddr.", + "operationId": "CircuitQuery_Deposit", + "parameters": [ + { + "type": "string", + "format": "uint64", + "description": "proposal_id defines the unique id of the proposal.", + "name": "proposal_id", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "depositor defines the deposit addresses from the proposals.", + "name": "depositor", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.gov.v1.QueryDepositResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos/gov/v1/proposals/{proposal_id}/tally": { + "get": { + "tags": [ + "Query" + ], + "summary": "TallyResult queries the tally of a proposal vote.", + "operationId": "CircuitQuery_TallyResult", + "parameters": [ + { + "type": "string", + "format": "uint64", + "description": "proposal_id defines the unique id of the proposal.", + "name": "proposal_id", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.gov.v1.QueryTallyResultResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos/gov/v1/proposals/{proposal_id}/votes": { + "get": { + "tags": [ + "Query" + ], + "summary": "Votes queries votes of a given proposal.", + "operationId": "CircuitQuery_Votes", + "parameters": [ + { + "type": "string", + "format": "uint64", + "description": "proposal_id defines the unique id of the proposal.", + "name": "proposal_id", + "in": "path", + "required": true + }, + { + "type": "string", + "format": "byte", + "description": "key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.", + "name": "pagination.key", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.", + "name": "pagination.offset", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.", + "name": "pagination.limit", + "in": "query" + }, + { + "type": "boolean", + "description": "count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.", + "name": "pagination.count_total", + "in": "query" + }, + { + "type": "boolean", + "description": "reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43", + "name": "pagination.reverse", + "in": "query" + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.gov.v1.QueryVotesResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos/gov/v1/proposals/{proposal_id}/votes/{voter}": { + "get": { + "tags": [ + "Query" + ], + "summary": "Vote queries voted information based on proposalID, voterAddr.", + "operationId": "CircuitQuery_Vote", + "parameters": [ + { + "type": "string", + "format": "uint64", + "description": "proposal_id defines the unique id of the proposal.", + "name": "proposal_id", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "voter defines the voter address for the proposals.", + "name": "voter", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.gov.v1.QueryVoteResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos/gov/v1beta1/params/{params_type}": { + "get": { + "tags": [ + "Query" + ], + "summary": "Params queries all parameters of the gov module.", + "operationId": "CircuitQuery_ParamsMixin105", + "parameters": [ + { + "type": "string", + "description": "params_type defines which parameters to query for, can be one of \"voting\",\n\"tallying\" or \"deposit\".", + "name": "params_type", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.gov.v1beta1.QueryParamsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos/gov/v1beta1/proposals": { + "get": { + "tags": [ + "Query" + ], + "summary": "Proposals queries all proposals based on given status.", + "operationId": "CircuitQuery_ProposalsMixin105", + "parameters": [ + { + "enum": [ + "PROPOSAL_STATUS_UNSPECIFIED", + "PROPOSAL_STATUS_DEPOSIT_PERIOD", + "PROPOSAL_STATUS_VOTING_PERIOD", + "PROPOSAL_STATUS_PASSED", + "PROPOSAL_STATUS_REJECTED", + "PROPOSAL_STATUS_FAILED" + ], + "type": "string", + "default": "PROPOSAL_STATUS_UNSPECIFIED", + "description": "proposal_status defines the status of the proposals.\n\n - PROPOSAL_STATUS_UNSPECIFIED: PROPOSAL_STATUS_UNSPECIFIED defines the default proposal status.\n - PROPOSAL_STATUS_DEPOSIT_PERIOD: PROPOSAL_STATUS_DEPOSIT_PERIOD defines a proposal status during the deposit\nperiod.\n - PROPOSAL_STATUS_VOTING_PERIOD: PROPOSAL_STATUS_VOTING_PERIOD defines a proposal status during the voting\nperiod.\n - PROPOSAL_STATUS_PASSED: PROPOSAL_STATUS_PASSED defines a proposal status of a proposal that has\npassed.\n - PROPOSAL_STATUS_REJECTED: PROPOSAL_STATUS_REJECTED defines a proposal status of a proposal that has\nbeen rejected.\n - PROPOSAL_STATUS_FAILED: PROPOSAL_STATUS_FAILED defines a proposal status of a proposal that has\nfailed.", + "name": "proposal_status", + "in": "query" + }, + { + "type": "string", + "description": "voter defines the voter address for the proposals.", + "name": "voter", + "in": "query" + }, + { + "type": "string", + "description": "depositor defines the deposit addresses from the proposals.", + "name": "depositor", + "in": "query" + }, + { + "type": "string", + "format": "byte", + "description": "key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.", + "name": "pagination.key", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.", + "name": "pagination.offset", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.", + "name": "pagination.limit", + "in": "query" + }, + { + "type": "boolean", + "description": "count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.", + "name": "pagination.count_total", + "in": "query" + }, + { + "type": "boolean", + "description": "reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43", + "name": "pagination.reverse", + "in": "query" + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.gov.v1beta1.QueryProposalsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos/gov/v1beta1/proposals/{proposal_id}": { + "get": { + "tags": [ + "Query" + ], + "summary": "Proposal queries proposal details based on ProposalID.", + "operationId": "CircuitQuery_ProposalMixin105", + "parameters": [ + { + "type": "string", + "format": "uint64", + "description": "proposal_id defines the unique id of the proposal.", + "name": "proposal_id", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.gov.v1beta1.QueryProposalResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos/gov/v1beta1/proposals/{proposal_id}/deposits": { + "get": { + "tags": [ + "Query" + ], + "summary": "Deposits queries all deposits of a single proposal.", + "operationId": "CircuitQuery_DepositsMixin105", + "parameters": [ + { + "type": "string", + "format": "uint64", + "description": "proposal_id defines the unique id of the proposal.", + "name": "proposal_id", + "in": "path", + "required": true + }, + { + "type": "string", + "format": "byte", + "description": "key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.", + "name": "pagination.key", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.", + "name": "pagination.offset", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.", + "name": "pagination.limit", + "in": "query" + }, + { + "type": "boolean", + "description": "count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.", + "name": "pagination.count_total", + "in": "query" + }, + { + "type": "boolean", + "description": "reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43", + "name": "pagination.reverse", + "in": "query" + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.gov.v1beta1.QueryDepositsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos/gov/v1beta1/proposals/{proposal_id}/deposits/{depositor}": { + "get": { + "tags": [ + "Query" + ], + "summary": "Deposit queries single deposit information based on proposalID, depositor address.", + "operationId": "CircuitQuery_DepositMixin105", + "parameters": [ + { + "type": "string", + "format": "uint64", + "description": "proposal_id defines the unique id of the proposal.", + "name": "proposal_id", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "depositor defines the deposit addresses from the proposals.", + "name": "depositor", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.gov.v1beta1.QueryDepositResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos/gov/v1beta1/proposals/{proposal_id}/tally": { + "get": { + "tags": [ + "Query" + ], + "summary": "TallyResult queries the tally of a proposal vote.", + "operationId": "CircuitQuery_TallyResultMixin105", + "parameters": [ + { + "type": "string", + "format": "uint64", + "description": "proposal_id defines the unique id of the proposal.", + "name": "proposal_id", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.gov.v1beta1.QueryTallyResultResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos/gov/v1beta1/proposals/{proposal_id}/votes": { + "get": { + "tags": [ + "Query" + ], + "summary": "Votes queries votes of a given proposal.", + "operationId": "CircuitQuery_VotesMixin105", + "parameters": [ + { + "type": "string", + "format": "uint64", + "description": "proposal_id defines the unique id of the proposal.", + "name": "proposal_id", + "in": "path", + "required": true + }, + { + "type": "string", + "format": "byte", + "description": "key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.", + "name": "pagination.key", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.", + "name": "pagination.offset", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.", + "name": "pagination.limit", + "in": "query" + }, + { + "type": "boolean", + "description": "count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.", + "name": "pagination.count_total", + "in": "query" + }, + { + "type": "boolean", + "description": "reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43", + "name": "pagination.reverse", + "in": "query" + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.gov.v1beta1.QueryVotesResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos/gov/v1beta1/proposals/{proposal_id}/votes/{voter}": { + "get": { + "tags": [ + "Query" + ], + "summary": "Vote queries voted information based on proposalID, voterAddr.", + "operationId": "CircuitQuery_VoteMixin105", + "parameters": [ + { + "type": "string", + "format": "uint64", + "description": "proposal_id defines the unique id of the proposal.", + "name": "proposal_id", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "voter defines the voter address for the proposals.", + "name": "voter", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.gov.v1beta1.QueryVoteResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos/group/v1/group_info/{group_id}": { + "get": { + "tags": [ + "Query" + ], + "summary": "GroupInfo queries group info based on group id.", + "operationId": "CircuitQuery_GroupInfo", + "parameters": [ + { + "type": "string", + "format": "uint64", + "description": "group_id is the unique ID of the group.", + "name": "group_id", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.group.v1.QueryGroupInfoResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos/group/v1/group_members/{group_id}": { + "get": { + "tags": [ + "Query" + ], + "summary": "GroupMembers queries members of a group by group id.", + "operationId": "CircuitQuery_GroupMembers", + "parameters": [ + { + "type": "string", + "format": "uint64", + "description": "group_id is the unique ID of the group.", + "name": "group_id", + "in": "path", + "required": true + }, + { + "type": "string", + "format": "byte", + "description": "key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.", + "name": "pagination.key", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.", + "name": "pagination.offset", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.", + "name": "pagination.limit", + "in": "query" + }, + { + "type": "boolean", + "description": "count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.", + "name": "pagination.count_total", + "in": "query" + }, + { + "type": "boolean", + "description": "reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43", + "name": "pagination.reverse", + "in": "query" + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.group.v1.QueryGroupMembersResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos/group/v1/group_policies_by_admin/{admin}": { + "get": { + "tags": [ + "Query" + ], + "summary": "GroupPoliciesByAdmin queries group policies by admin address.", + "operationId": "CircuitQuery_GroupPoliciesByAdmin", + "parameters": [ + { + "type": "string", + "description": "admin is the admin address of the group policy.", + "name": "admin", + "in": "path", + "required": true + }, + { + "type": "string", + "format": "byte", + "description": "key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.", + "name": "pagination.key", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.", + "name": "pagination.offset", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.", + "name": "pagination.limit", + "in": "query" + }, + { + "type": "boolean", + "description": "count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.", + "name": "pagination.count_total", + "in": "query" + }, + { + "type": "boolean", + "description": "reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43", + "name": "pagination.reverse", + "in": "query" + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.group.v1.QueryGroupPoliciesByAdminResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos/group/v1/group_policies_by_group/{group_id}": { + "get": { + "tags": [ + "Query" + ], + "summary": "GroupPoliciesByGroup queries group policies by group id.", + "operationId": "CircuitQuery_GroupPoliciesByGroup", + "parameters": [ + { + "type": "string", + "format": "uint64", + "description": "group_id is the unique ID of the group policy's group.", + "name": "group_id", + "in": "path", + "required": true + }, + { + "type": "string", + "format": "byte", + "description": "key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.", + "name": "pagination.key", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.", + "name": "pagination.offset", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.", + "name": "pagination.limit", + "in": "query" + }, + { + "type": "boolean", + "description": "count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.", + "name": "pagination.count_total", + "in": "query" + }, + { + "type": "boolean", + "description": "reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43", + "name": "pagination.reverse", + "in": "query" + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.group.v1.QueryGroupPoliciesByGroupResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos/group/v1/group_policy_info/{address}": { + "get": { + "tags": [ + "Query" + ], + "summary": "GroupPolicyInfo queries group policy info based on account address of group policy.", + "operationId": "CircuitQuery_GroupPolicyInfo", + "parameters": [ + { + "type": "string", + "description": "address is the account address of the group policy.", + "name": "address", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.group.v1.QueryGroupPolicyInfoResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos/group/v1/groups": { + "get": { + "description": "Since: cosmos-sdk 0.47.1", + "tags": [ + "Query" + ], + "summary": "Groups queries all groups in state.", + "operationId": "CircuitQuery_Groups", + "parameters": [ + { + "type": "string", + "format": "byte", + "description": "key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.", + "name": "pagination.key", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.", + "name": "pagination.offset", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.", + "name": "pagination.limit", + "in": "query" + }, + { + "type": "boolean", + "description": "count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.", + "name": "pagination.count_total", + "in": "query" + }, + { + "type": "boolean", + "description": "reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43", + "name": "pagination.reverse", + "in": "query" + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.group.v1.QueryGroupsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos/group/v1/groups_by_admin/{admin}": { + "get": { + "tags": [ + "Query" + ], + "summary": "GroupsByAdmin queries groups by admin address.", + "operationId": "CircuitQuery_GroupsByAdmin", + "parameters": [ + { + "type": "string", + "description": "admin is the account address of a group's admin.", + "name": "admin", + "in": "path", + "required": true + }, + { + "type": "string", + "format": "byte", + "description": "key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.", + "name": "pagination.key", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.", + "name": "pagination.offset", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.", + "name": "pagination.limit", + "in": "query" + }, + { + "type": "boolean", + "description": "count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.", + "name": "pagination.count_total", + "in": "query" + }, + { + "type": "boolean", + "description": "reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43", + "name": "pagination.reverse", + "in": "query" + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.group.v1.QueryGroupsByAdminResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos/group/v1/groups_by_member/{address}": { + "get": { + "tags": [ + "Query" + ], + "summary": "GroupsByMember queries groups by member address.", + "operationId": "CircuitQuery_GroupsByMember", + "parameters": [ + { + "type": "string", + "description": "address is the group member address.", + "name": "address", + "in": "path", + "required": true + }, + { + "type": "string", + "format": "byte", + "description": "key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.", + "name": "pagination.key", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.", + "name": "pagination.offset", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.", + "name": "pagination.limit", + "in": "query" + }, + { + "type": "boolean", + "description": "count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.", + "name": "pagination.count_total", + "in": "query" + }, + { + "type": "boolean", + "description": "reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43", + "name": "pagination.reverse", + "in": "query" + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.group.v1.QueryGroupsByMemberResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos/group/v1/proposal/{proposal_id}": { + "get": { + "tags": [ + "Query" + ], + "summary": "Proposal queries a proposal based on proposal id.", + "operationId": "CircuitQuery_ProposalMixin109", + "parameters": [ + { + "type": "string", + "format": "uint64", + "description": "proposal_id is the unique ID of a proposal.", + "name": "proposal_id", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.group.v1.QueryProposalResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos/group/v1/proposals/{proposal_id}/tally": { + "get": { + "tags": [ + "Query" + ], + "summary": "TallyResult returns the tally result of a proposal. If the proposal is\nstill in voting period, then this query computes the current tally state,\nwhich might not be final. On the other hand, if the proposal is final,\nthen it simply returns the `final_tally_result` state stored in the\nproposal itself.", + "operationId": "CircuitQuery_TallyResultMixin109", + "parameters": [ + { + "type": "string", + "format": "uint64", + "description": "proposal_id is the unique id of a proposal.", + "name": "proposal_id", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.group.v1.QueryTallyResultResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos/group/v1/proposals_by_group_policy/{address}": { + "get": { + "tags": [ + "Query" + ], + "summary": "ProposalsByGroupPolicy queries proposals based on account address of group policy.", + "operationId": "CircuitQuery_ProposalsByGroupPolicy", + "parameters": [ + { + "type": "string", + "description": "address is the account address of the group policy related to proposals.", + "name": "address", + "in": "path", + "required": true + }, + { + "type": "string", + "format": "byte", + "description": "key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.", + "name": "pagination.key", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.", + "name": "pagination.offset", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.", + "name": "pagination.limit", + "in": "query" + }, + { + "type": "boolean", + "description": "count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.", + "name": "pagination.count_total", + "in": "query" + }, + { + "type": "boolean", + "description": "reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43", + "name": "pagination.reverse", + "in": "query" + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.group.v1.QueryProposalsByGroupPolicyResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos/group/v1/vote_by_proposal_voter/{proposal_id}/{voter}": { + "get": { + "tags": [ + "Query" + ], + "summary": "VoteByProposalVoter queries a vote by proposal id and voter.", + "operationId": "CircuitQuery_VoteByProposalVoter", + "parameters": [ + { + "type": "string", + "format": "uint64", + "description": "proposal_id is the unique ID of a proposal.", + "name": "proposal_id", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "voter is a proposal voter account address.", + "name": "voter", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.group.v1.QueryVoteByProposalVoterResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos/group/v1/votes_by_proposal/{proposal_id}": { + "get": { + "tags": [ + "Query" + ], + "summary": "VotesByProposal queries a vote by proposal id.", + "operationId": "CircuitQuery_VotesByProposal", + "parameters": [ + { + "type": "string", + "format": "uint64", + "description": "proposal_id is the unique ID of a proposal.", + "name": "proposal_id", + "in": "path", + "required": true + }, + { + "type": "string", + "format": "byte", + "description": "key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.", + "name": "pagination.key", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.", + "name": "pagination.offset", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.", + "name": "pagination.limit", + "in": "query" + }, + { + "type": "boolean", + "description": "count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.", + "name": "pagination.count_total", + "in": "query" + }, + { + "type": "boolean", + "description": "reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43", + "name": "pagination.reverse", + "in": "query" + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.group.v1.QueryVotesByProposalResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos/group/v1/votes_by_voter/{voter}": { + "get": { + "tags": [ + "Query" + ], + "summary": "VotesByVoter queries a vote by voter.", + "operationId": "CircuitQuery_VotesByVoter", + "parameters": [ + { + "type": "string", + "description": "voter is a proposal voter account address.", + "name": "voter", + "in": "path", + "required": true + }, + { + "type": "string", + "format": "byte", + "description": "key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.", + "name": "pagination.key", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.", + "name": "pagination.offset", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.", + "name": "pagination.limit", + "in": "query" + }, + { + "type": "boolean", + "description": "count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.", + "name": "pagination.count_total", + "in": "query" + }, + { + "type": "boolean", + "description": "reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43", + "name": "pagination.reverse", + "in": "query" + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.group.v1.QueryVotesByVoterResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos/mint/v1beta1/annual_provisions": { + "get": { + "tags": [ + "Query" + ], + "summary": "AnnualProvisions current minting annual provisions value.", + "operationId": "CircuitQuery_AnnualProvisions", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.mint.v1beta1.QueryAnnualProvisionsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos/mint/v1beta1/inflation": { + "get": { + "tags": [ + "Query" + ], + "summary": "Inflation returns the current minting inflation value.", + "operationId": "CircuitQuery_Inflation", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.mint.v1beta1.QueryInflationResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos/mint/v1beta1/params": { + "get": { + "tags": [ + "Query" + ], + "summary": "Params returns the total set of minting parameters.", + "operationId": "CircuitQuery_ParamsMixin114", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.mint.v1beta1.QueryParamsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos/nft/v1beta1/balance/{owner}/{class_id}": { + "get": { + "tags": [ + "Query" + ], + "summary": "Balance queries the number of NFTs of a given class owned by the owner, same as balanceOf in ERC721", + "operationId": "CircuitQuery_BalanceMixin120", + "parameters": [ + { + "type": "string", + "description": "owner is the owner address of the nft", + "name": "owner", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "class_id associated with the nft", + "name": "class_id", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.nft.v1beta1.QueryBalanceResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos/nft/v1beta1/classes": { + "get": { + "tags": [ + "Query" + ], + "summary": "Classes queries all NFT classes", + "operationId": "CircuitQuery_Classes", + "parameters": [ + { + "type": "string", + "format": "byte", + "description": "key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.", + "name": "pagination.key", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.", + "name": "pagination.offset", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.", + "name": "pagination.limit", + "in": "query" + }, + { + "type": "boolean", + "description": "count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.", + "name": "pagination.count_total", + "in": "query" + }, + { + "type": "boolean", + "description": "reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43", + "name": "pagination.reverse", + "in": "query" + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.nft.v1beta1.QueryClassesResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos/nft/v1beta1/classes/{class_id}": { + "get": { + "tags": [ + "Query" + ], + "summary": "Class queries an NFT class based on its id", + "operationId": "CircuitQuery_Class", + "parameters": [ + { + "type": "string", + "description": "class_id associated with the nft", + "name": "class_id", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.nft.v1beta1.QueryClassResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos/nft/v1beta1/nfts": { + "get": { + "tags": [ + "Query" + ], + "summary": "NFTs queries all NFTs of a given class or owner,choose at least one of the two, similar to tokenByIndex in\nERC721Enumerable", + "operationId": "CircuitQuery_NFTs", + "parameters": [ + { + "type": "string", + "description": "class_id associated with the nft", + "name": "class_id", + "in": "query" + }, + { + "type": "string", + "description": "owner is the owner address of the nft", + "name": "owner", + "in": "query" + }, + { + "type": "string", + "format": "byte", + "description": "key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.", + "name": "pagination.key", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.", + "name": "pagination.offset", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.", + "name": "pagination.limit", + "in": "query" + }, + { + "type": "boolean", + "description": "count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.", + "name": "pagination.count_total", + "in": "query" + }, + { + "type": "boolean", + "description": "reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43", + "name": "pagination.reverse", + "in": "query" + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.nft.v1beta1.QueryNFTsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos/nft/v1beta1/nfts/{class_id}/{id}": { + "get": { + "tags": [ + "Query" + ], + "summary": "NFT queries an NFT based on its class and id.", + "operationId": "CircuitQuery_NFT", + "parameters": [ + { + "type": "string", + "description": "class_id associated with the nft", + "name": "class_id", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "id is a unique identifier of the NFT", + "name": "id", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.nft.v1beta1.QueryNFTResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos/nft/v1beta1/owner/{class_id}/{id}": { + "get": { + "tags": [ + "Query" + ], + "summary": "Owner queries the owner of the NFT based on its class and id, same as ownerOf in ERC721", + "operationId": "CircuitQuery_Owner", + "parameters": [ + { + "type": "string", + "description": "class_id associated with the nft", + "name": "class_id", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "id is a unique identifier of the NFT", + "name": "id", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.nft.v1beta1.QueryOwnerResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos/nft/v1beta1/supply/{class_id}": { + "get": { + "tags": [ + "Query" + ], + "summary": "Supply queries the number of NFTs from the given class, same as totalSupply of ERC721.", + "operationId": "CircuitQuery_Supply", + "parameters": [ + { + "type": "string", + "description": "class_id associated with the nft", + "name": "class_id", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.nft.v1beta1.QuerySupplyResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos/params/v1beta1/params": { + "get": { + "tags": [ + "Query" + ], + "summary": "Params queries a specific parameter of a module, given its subspace and\nkey.", + "operationId": "CircuitQuery_ParamsMixin123", + "parameters": [ + { + "type": "string", + "description": "subspace defines the module to query the parameter for.", + "name": "subspace", + "in": "query" + }, + { + "type": "string", + "description": "key defines the key of the parameter in the subspace.", + "name": "key", + "in": "query" + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.params.v1beta1.QueryParamsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos/params/v1beta1/subspaces": { + "get": { + "description": "Since: cosmos-sdk 0.46", + "tags": [ + "Query" + ], + "summary": "Subspaces queries for all registered subspaces and all keys for a subspace.", + "operationId": "CircuitQuery_Subspaces", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.params.v1beta1.QuerySubspacesResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos/slashing/v1beta1/params": { + "get": { + "tags": [ + "Query" + ], + "summary": "Params queries the parameters of slashing module", + "operationId": "CircuitQuery_ParamsMixin126", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.slashing.v1beta1.QueryParamsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos/slashing/v1beta1/signing_infos": { + "get": { + "tags": [ + "Query" + ], + "summary": "SigningInfos queries signing info of all validators", + "operationId": "CircuitQuery_SigningInfos", + "parameters": [ + { + "type": "string", + "format": "byte", + "description": "key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.", + "name": "pagination.key", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.", + "name": "pagination.offset", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.", + "name": "pagination.limit", + "in": "query" + }, + { + "type": "boolean", + "description": "count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.", + "name": "pagination.count_total", + "in": "query" + }, + { + "type": "boolean", + "description": "reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43", + "name": "pagination.reverse", + "in": "query" + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.slashing.v1beta1.QuerySigningInfosResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos/slashing/v1beta1/signing_infos/{cons_address}": { + "get": { + "tags": [ + "Query" + ], + "summary": "SigningInfo queries the signing info of given cons address", + "operationId": "CircuitQuery_SigningInfo", + "parameters": [ + { + "type": "string", + "description": "cons_address is the address to query signing info of", + "name": "cons_address", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.slashing.v1beta1.QuerySigningInfoResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos/staking/v1beta1/delegations/{delegator_addr}": { + "get": { + "description": "When called from another module, this query might consume a high amount of\ngas if the pagination field is incorrectly set.", + "tags": [ + "Query" + ], + "summary": "DelegatorDelegations queries all delegations of a given delegator address.", + "operationId": "CircuitQuery_DelegatorDelegations", + "parameters": [ + { + "type": "string", + "description": "delegator_addr defines the delegator address to query for.", + "name": "delegator_addr", + "in": "path", + "required": true + }, + { + "type": "string", + "format": "byte", + "description": "key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.", + "name": "pagination.key", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.", + "name": "pagination.offset", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.", + "name": "pagination.limit", + "in": "query" + }, + { + "type": "boolean", + "description": "count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.", + "name": "pagination.count_total", + "in": "query" + }, + { + "type": "boolean", + "description": "reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43", + "name": "pagination.reverse", + "in": "query" + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.staking.v1beta1.QueryDelegatorDelegationsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos/staking/v1beta1/delegators/{delegator_addr}/redelegations": { + "get": { + "description": "When called from another module, this query might consume a high amount of\ngas if the pagination field is incorrectly set.", + "tags": [ + "Query" + ], + "summary": "Redelegations queries redelegations of given address.", + "operationId": "CircuitQuery_Redelegations", + "parameters": [ + { + "type": "string", + "description": "delegator_addr defines the delegator address to query for.", + "name": "delegator_addr", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "src_validator_addr defines the validator address to redelegate from.", + "name": "src_validator_addr", + "in": "query" + }, + { + "type": "string", + "description": "dst_validator_addr defines the validator address to redelegate to.", + "name": "dst_validator_addr", + "in": "query" + }, + { + "type": "string", + "format": "byte", + "description": "key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.", + "name": "pagination.key", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.", + "name": "pagination.offset", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.", + "name": "pagination.limit", + "in": "query" + }, + { + "type": "boolean", + "description": "count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.", + "name": "pagination.count_total", + "in": "query" + }, + { + "type": "boolean", + "description": "reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43", + "name": "pagination.reverse", + "in": "query" + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.staking.v1beta1.QueryRedelegationsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos/staking/v1beta1/delegators/{delegator_addr}/unbonding_delegations": { + "get": { + "description": "When called from another module, this query might consume a high amount of\ngas if the pagination field is incorrectly set.", + "tags": [ + "Query" + ], + "summary": "DelegatorUnbondingDelegations queries all unbonding delegations of a given\ndelegator address.", + "operationId": "CircuitQuery_DelegatorUnbondingDelegations", + "parameters": [ + { + "type": "string", + "description": "delegator_addr defines the delegator address to query for.", + "name": "delegator_addr", + "in": "path", + "required": true + }, + { + "type": "string", + "format": "byte", + "description": "key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.", + "name": "pagination.key", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.", + "name": "pagination.offset", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.", + "name": "pagination.limit", + "in": "query" + }, + { + "type": "boolean", + "description": "count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.", + "name": "pagination.count_total", + "in": "query" + }, + { + "type": "boolean", + "description": "reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43", + "name": "pagination.reverse", + "in": "query" + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.staking.v1beta1.QueryDelegatorUnbondingDelegationsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos/staking/v1beta1/delegators/{delegator_addr}/validators": { + "get": { + "description": "When called from another module, this query might consume a high amount of\ngas if the pagination field is incorrectly set.", + "tags": [ + "Query" + ], + "summary": "DelegatorValidators queries all validators info for given delegator\naddress.", + "operationId": "CircuitQuery_DelegatorValidatorsMixin131", + "parameters": [ + { + "type": "string", + "description": "delegator_addr defines the delegator address to query for.", + "name": "delegator_addr", + "in": "path", + "required": true + }, + { + "type": "string", + "format": "byte", + "description": "key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.", + "name": "pagination.key", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.", + "name": "pagination.offset", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.", + "name": "pagination.limit", + "in": "query" + }, + { + "type": "boolean", + "description": "count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.", + "name": "pagination.count_total", + "in": "query" + }, + { + "type": "boolean", + "description": "reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43", + "name": "pagination.reverse", + "in": "query" + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.staking.v1beta1.QueryDelegatorValidatorsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos/staking/v1beta1/delegators/{delegator_addr}/validators/{validator_addr}": { + "get": { + "tags": [ + "Query" + ], + "summary": "DelegatorValidator queries validator info for given delegator validator\npair.", + "operationId": "CircuitQuery_DelegatorValidator", + "parameters": [ + { + "type": "string", + "description": "delegator_addr defines the delegator address to query for.", + "name": "delegator_addr", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "validator_addr defines the validator address to query for.", + "name": "validator_addr", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.staking.v1beta1.QueryDelegatorValidatorResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos/staking/v1beta1/historical_info/{height}": { + "get": { + "tags": [ + "Query" + ], + "summary": "HistoricalInfo queries the historical info for given height.", + "operationId": "CircuitQuery_HistoricalInfo", + "parameters": [ + { + "type": "string", + "format": "int64", + "description": "height defines at which height to query the historical info.", + "name": "height", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.staking.v1beta1.QueryHistoricalInfoResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos/staking/v1beta1/params": { + "get": { + "tags": [ + "Query" + ], + "summary": "Parameters queries the staking parameters.", + "operationId": "CircuitQuery_ParamsMixin131", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.staking.v1beta1.QueryParamsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos/staking/v1beta1/pool": { + "get": { + "tags": [ + "Query" + ], + "summary": "Pool queries the pool info.", + "operationId": "CircuitQuery_Pool", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.staking.v1beta1.QueryPoolResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos/staking/v1beta1/validators": { + "get": { + "description": "When called from another module, this query might consume a high amount of\ngas if the pagination field is incorrectly set.", + "tags": [ + "Query" + ], + "summary": "Validators queries all validators that match the given status.", + "operationId": "CircuitQuery_Validators", + "parameters": [ + { + "type": "string", + "description": "status enables to query for validators matching a given status.", + "name": "status", + "in": "query" + }, + { + "type": "string", + "format": "byte", + "description": "key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.", + "name": "pagination.key", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.", + "name": "pagination.offset", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.", + "name": "pagination.limit", + "in": "query" + }, + { + "type": "boolean", + "description": "count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.", + "name": "pagination.count_total", + "in": "query" + }, + { + "type": "boolean", + "description": "reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43", + "name": "pagination.reverse", + "in": "query" + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.staking.v1beta1.QueryValidatorsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos/staking/v1beta1/validators/{validator_addr}": { + "get": { + "tags": [ + "Query" + ], + "summary": "Validator queries validator info for given validator address.", + "operationId": "CircuitQuery_Validator", + "parameters": [ + { + "type": "string", + "description": "validator_addr defines the validator address to query for.", + "name": "validator_addr", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.staking.v1beta1.QueryValidatorResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos/staking/v1beta1/validators/{validator_addr}/delegations": { + "get": { + "description": "When called from another module, this query might consume a high amount of\ngas if the pagination field is incorrectly set.", + "tags": [ + "Query" + ], + "summary": "ValidatorDelegations queries delegate info for given validator.", + "operationId": "CircuitQuery_ValidatorDelegations", + "parameters": [ + { + "type": "string", + "description": "validator_addr defines the validator address to query for.", + "name": "validator_addr", + "in": "path", + "required": true + }, + { + "type": "string", + "format": "byte", + "description": "key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.", + "name": "pagination.key", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.", + "name": "pagination.offset", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.", + "name": "pagination.limit", + "in": "query" + }, + { + "type": "boolean", + "description": "count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.", + "name": "pagination.count_total", + "in": "query" + }, + { + "type": "boolean", + "description": "reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43", + "name": "pagination.reverse", + "in": "query" + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.staking.v1beta1.QueryValidatorDelegationsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos/staking/v1beta1/validators/{validator_addr}/delegations/{delegator_addr}": { + "get": { + "tags": [ + "Query" + ], + "summary": "Delegation queries delegate info for given validator delegator pair.", + "operationId": "CircuitQuery_Delegation", + "parameters": [ + { + "type": "string", + "description": "validator_addr defines the validator address to query for.", + "name": "validator_addr", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "delegator_addr defines the delegator address to query for.", + "name": "delegator_addr", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.staking.v1beta1.QueryDelegationResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos/staking/v1beta1/validators/{validator_addr}/delegations/{delegator_addr}/unbonding_delegation": { + "get": { + "tags": [ + "Query" + ], + "summary": "UnbondingDelegation queries unbonding info for given validator delegator\npair.", + "operationId": "CircuitQuery_UnbondingDelegation", + "parameters": [ + { + "type": "string", + "description": "validator_addr defines the validator address to query for.", + "name": "validator_addr", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "delegator_addr defines the delegator address to query for.", + "name": "delegator_addr", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.staking.v1beta1.QueryUnbondingDelegationResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos/staking/v1beta1/validators/{validator_addr}/unbonding_delegations": { + "get": { + "description": "When called from another module, this query might consume a high amount of\ngas if the pagination field is incorrectly set.", + "tags": [ + "Query" + ], + "summary": "ValidatorUnbondingDelegations queries unbonding delegations of a validator.", + "operationId": "CircuitQuery_ValidatorUnbondingDelegations", + "parameters": [ + { + "type": "string", + "description": "validator_addr defines the validator address to query for.", + "name": "validator_addr", + "in": "path", + "required": true + }, + { + "type": "string", + "format": "byte", + "description": "key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.", + "name": "pagination.key", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.", + "name": "pagination.offset", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.", + "name": "pagination.limit", + "in": "query" + }, + { + "type": "boolean", + "description": "count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.", + "name": "pagination.count_total", + "in": "query" + }, + { + "type": "boolean", + "description": "reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43", + "name": "pagination.reverse", + "in": "query" + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.staking.v1beta1.QueryValidatorUnbondingDelegationsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos/tx/v1beta1/decode": { + "post": { + "description": "Since: cosmos-sdk 0.47", + "tags": [ + "Service" + ], + "summary": "TxDecode decodes the transaction.", + "operationId": "CircuitService_TxDecode", + "parameters": [ + { + "description": "TxDecodeRequest is the request type for the Service.TxDecode\nRPC method.\n\nSince: cosmos-sdk 0.47", + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/cosmos.tx.v1beta1.TxDecodeRequest" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.tx.v1beta1.TxDecodeResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos/tx/v1beta1/decode/amino": { + "post": { + "description": "Since: cosmos-sdk 0.47", + "tags": [ + "Service" + ], + "summary": "TxDecodeAmino decodes an Amino transaction from encoded bytes to JSON.", + "operationId": "CircuitService_TxDecodeAmino", + "parameters": [ + { + "description": "TxDecodeAminoRequest is the request type for the Service.TxDecodeAmino\nRPC method.\n\nSince: cosmos-sdk 0.47", + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/cosmos.tx.v1beta1.TxDecodeAminoRequest" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.tx.v1beta1.TxDecodeAminoResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos/tx/v1beta1/encode": { + "post": { + "description": "Since: cosmos-sdk 0.47", + "tags": [ + "Service" + ], + "summary": "TxEncode encodes the transaction.", + "operationId": "CircuitService_TxEncode", + "parameters": [ + { + "description": "TxEncodeRequest is the request type for the Service.TxEncode\nRPC method.\n\nSince: cosmos-sdk 0.47", + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/cosmos.tx.v1beta1.TxEncodeRequest" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.tx.v1beta1.TxEncodeResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos/tx/v1beta1/encode/amino": { + "post": { + "description": "Since: cosmos-sdk 0.47", + "tags": [ + "Service" + ], + "summary": "TxEncodeAmino encodes an Amino transaction from JSON to encoded bytes.", + "operationId": "CircuitService_TxEncodeAmino", + "parameters": [ + { + "description": "TxEncodeAminoRequest is the request type for the Service.TxEncodeAmino\nRPC method.\n\nSince: cosmos-sdk 0.47", + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/cosmos.tx.v1beta1.TxEncodeAminoRequest" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.tx.v1beta1.TxEncodeAminoResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos/tx/v1beta1/simulate": { + "post": { + "tags": [ + "Service" + ], + "summary": "Simulate simulates executing a transaction for estimating gas usage.", + "operationId": "CircuitService_Simulate", + "parameters": [ + { + "description": "SimulateRequest is the request type for the Service.Simulate\nRPC method.", + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/cosmos.tx.v1beta1.SimulateRequest" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.tx.v1beta1.SimulateResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos/tx/v1beta1/txs": { + "get": { + "tags": [ + "Service" + ], + "summary": "GetTxsEvent fetches txs by event.", + "operationId": "CircuitService_GetTxsEvent", + "parameters": [ + { + "type": "array", + "items": { + "type": "string" + }, + "collectionFormat": "multi", + "description": "events is the list of transaction event type.\nDeprecated post v0.47.x: use query instead, which should contain a valid\nevents query.", + "name": "events", + "in": "query" + }, + { + "type": "string", + "format": "byte", + "description": "key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.", + "name": "pagination.key", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.", + "name": "pagination.offset", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.", + "name": "pagination.limit", + "in": "query" + }, + { + "type": "boolean", + "description": "count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.", + "name": "pagination.count_total", + "in": "query" + }, + { + "type": "boolean", + "description": "reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43", + "name": "pagination.reverse", + "in": "query" + }, + { + "enum": [ + "ORDER_BY_UNSPECIFIED", + "ORDER_BY_ASC", + "ORDER_BY_DESC" + ], + "type": "string", + "default": "ORDER_BY_UNSPECIFIED", + "description": " - ORDER_BY_UNSPECIFIED: ORDER_BY_UNSPECIFIED specifies an unknown sorting order. OrderBy defaults\nto ASC in this case.\n - ORDER_BY_ASC: ORDER_BY_ASC defines ascending order\n - ORDER_BY_DESC: ORDER_BY_DESC defines descending order", + "name": "order_by", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "page is the page number to query, starts at 1. If not provided, will\ndefault to first page.", + "name": "page", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.", + "name": "limit", + "in": "query" + }, + { + "type": "string", + "description": "query defines the transaction event query that is proxied to Tendermint's\nTxSearch RPC method. The query must be valid.\n\nSince cosmos-sdk 0.50", + "name": "query", + "in": "query" + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.tx.v1beta1.GetTxsEventResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + }, + "post": { + "tags": [ + "Service" + ], + "summary": "BroadcastTx broadcast transaction.", + "operationId": "CircuitService_BroadcastTx", + "parameters": [ + { + "description": "BroadcastTxRequest is the request type for the Service.BroadcastTxRequest\nRPC method.", + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/cosmos.tx.v1beta1.BroadcastTxRequest" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.tx.v1beta1.BroadcastTxResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos/tx/v1beta1/txs/block/{height}": { + "get": { + "description": "Since: cosmos-sdk 0.45.2", + "tags": [ + "Service" + ], + "summary": "GetBlockWithTxs fetches a block with decoded txs.", + "operationId": "CircuitService_GetBlockWithTxs", + "parameters": [ + { + "type": "string", + "format": "int64", + "description": "height is the height of the block to query.", + "name": "height", + "in": "path", + "required": true + }, + { + "type": "string", + "format": "byte", + "description": "key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.", + "name": "pagination.key", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.", + "name": "pagination.offset", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.", + "name": "pagination.limit", + "in": "query" + }, + { + "type": "boolean", + "description": "count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.", + "name": "pagination.count_total", + "in": "query" + }, + { + "type": "boolean", + "description": "reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43", + "name": "pagination.reverse", + "in": "query" + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.tx.v1beta1.GetBlockWithTxsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos/tx/v1beta1/txs/{hash}": { + "get": { + "tags": [ + "Service" + ], + "summary": "GetTx fetches a tx by hash.", + "operationId": "CircuitService_GetTx", + "parameters": [ + { + "type": "string", + "description": "hash is the tx hash to query, encoded as a hex string.", + "name": "hash", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.tx.v1beta1.GetTxResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos/upgrade/v1beta1/applied_plan/{name}": { + "get": { + "tags": [ + "Query" + ], + "summary": "AppliedPlan queries a previously applied upgrade plan by its name.", + "operationId": "CircuitQuery_AppliedPlan", + "parameters": [ + { + "type": "string", + "description": "name is the name of the applied plan to query for.", + "name": "name", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.upgrade.v1beta1.QueryAppliedPlanResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos/upgrade/v1beta1/authority": { + "get": { + "description": "Since: cosmos-sdk 0.46", + "tags": [ + "Query" + ], + "summary": "Returns the account with authority to conduct upgrades", + "operationId": "CircuitQuery_Authority", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.upgrade.v1beta1.QueryAuthorityResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos/upgrade/v1beta1/current_plan": { + "get": { + "tags": [ + "Query" + ], + "summary": "CurrentPlan queries the current upgrade plan.", + "operationId": "CircuitQuery_CurrentPlan", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.upgrade.v1beta1.QueryCurrentPlanResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos/upgrade/v1beta1/module_versions": { + "get": { + "description": "Since: cosmos-sdk 0.43", + "tags": [ + "Query" + ], + "summary": "ModuleVersions queries the list of module versions from state.", + "operationId": "CircuitQuery_ModuleVersions", + "parameters": [ + { + "type": "string", + "description": "module_name is a field to query a specific module\nconsensus version from state. Leaving this empty will\nfetch the full list of module versions from state", + "name": "module_name", + "in": "query" + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.upgrade.v1beta1.QueryModuleVersionsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/cosmos/upgrade/v1beta1/upgraded_consensus_state/{last_height}": { + "get": { + "tags": [ + "Query" + ], + "summary": "UpgradedConsensusState queries the consensus state that will serve\nas a trusted kernel for the next version of this chain. It will only be\nstored at the last height of this chain.\nUpgradedConsensusState RPC not supported with legacy querier\nThis rpc is deprecated now that IBC has its own replacement\n(https://github.com/cosmos/ibc-go/blob/2c880a22e9f9cc75f62b527ca94aa75ce1106001/proto/ibc/core/client/v1/query.proto#L54)", + "operationId": "CircuitQuery_UpgradedConsensusState", + "parameters": [ + { + "type": "string", + "format": "int64", + "description": "last height of the current chain must be sent in request\nas this is the height under which next consensus state is stored", + "name": "last_height", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/cosmos.upgrade.v1beta1.QueryUpgradedConsensusStateResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/ibc.applications.fee.v1.Msg/PayPacketFee": { + "post": { + "tags": [ + "Msg" + ], + "summary": "PayPacketFee defines a rpc handler method for MsgPayPacketFee\nPayPacketFee is an open callback that may be called by any module/user that wishes to escrow funds in order to\nincentivize the relaying of the packet at the next sequence\nNOTE: This method is intended to be used within a multi msg transaction, where the subsequent msg that follows\ninitiates the lifecycle of the incentivized packet", + "operationId": "FeeMsg_PayPacketFee", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/ibc.applications.fee.v1.MsgPayPacketFee" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/ibc.applications.fee.v1.MsgPayPacketFeeResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/ibc.applications.fee.v1.Msg/PayPacketFeeAsync": { + "post": { + "tags": [ + "Msg" + ], + "summary": "PayPacketFeeAsync defines a rpc handler method for MsgPayPacketFeeAsync\nPayPacketFeeAsync is an open callback that may be called by any module/user that wishes to escrow funds in order to\nincentivize the relaying of a known packet (i.e. at a particular sequence)", + "operationId": "FeeMsg_PayPacketFeeAsync", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/ibc.applications.fee.v1.MsgPayPacketFeeAsync" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/ibc.applications.fee.v1.MsgPayPacketFeeAsyncResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/ibc.applications.fee.v1.Msg/RegisterCounterpartyPayee": { + "post": { + "tags": [ + "Msg" + ], + "summary": "RegisterCounterpartyPayee defines a rpc handler method for MsgRegisterCounterpartyPayee\nRegisterCounterpartyPayee is called by the relayer on each channelEnd and allows them to specify the counterparty\npayee address before relaying. This ensures they will be properly compensated for forward relaying since\nthe destination chain must include the registered counterparty payee address in the acknowledgement. This function\nmay be called more than once by a relayer, in which case, the latest counterparty payee address is always used.", + "operationId": "FeeMsg_RegisterCounterpartyPayee", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/ibc.applications.fee.v1.MsgRegisterCounterpartyPayee" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/ibc.applications.fee.v1.MsgRegisterCounterpartyPayeeResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/ibc.applications.fee.v1.Msg/RegisterPayee": { + "post": { + "tags": [ + "Msg" + ], + "summary": "RegisterPayee defines a rpc handler method for MsgRegisterPayee\nRegisterPayee is called by the relayer on each channelEnd and allows them to set an optional\npayee to which reverse and timeout relayer packet fees will be paid out. The payee should be registered on\nthe source chain from which packets originate as this is where fee distribution takes place. This function may be\ncalled more than once by a relayer, in which case, the latest payee is always used.", + "operationId": "FeeMsg_RegisterPayee", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/ibc.applications.fee.v1.MsgRegisterPayee" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/ibc.applications.fee.v1.MsgRegisterPayeeResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/ibc.applications.interchain_accounts.controller.v1.Msg/RegisterInterchainAccount": { + "post": { + "tags": [ + "Msg" + ], + "summary": "RegisterInterchainAccount defines a rpc handler for MsgRegisterInterchainAccount.", + "operationId": "FeeMsg_RegisterInterchainAccount", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/ibc.applications.interchain_accounts.controller.v1.MsgRegisterInterchainAccount" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/ibc.applications.interchain_accounts.controller.v1.MsgRegisterInterchainAccountResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/ibc.applications.interchain_accounts.controller.v1.Msg/SendTx": { + "post": { + "tags": [ + "Msg" + ], + "summary": "SendTx defines a rpc handler for MsgSendTx.", + "operationId": "FeeMsg_SendTx", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/ibc.applications.interchain_accounts.controller.v1.MsgSendTx" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/ibc.applications.interchain_accounts.controller.v1.MsgSendTxResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/ibc.applications.interchain_accounts.controller.v1.Msg/UpdateParams": { + "post": { + "tags": [ + "Msg" + ], + "summary": "UpdateParams defines a rpc handler for MsgUpdateParams.", + "operationId": "FeeMsg_UpdateParams", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/ibc.applications.interchain_accounts.controller.v1.MsgUpdateParams" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/ibc.applications.interchain_accounts.controller.v1.MsgUpdateParamsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/ibc.applications.interchain_accounts.host.v1.Msg/UpdateParams": { + "post": { + "tags": [ + "Msg" + ], + "summary": "UpdateParams defines a rpc handler for MsgUpdateParams.", + "operationId": "FeeMsg_UpdateParamsMixin172", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/ibc.applications.interchain_accounts.host.v1.MsgUpdateParams" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/ibc.applications.interchain_accounts.host.v1.MsgUpdateParamsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/ibc.applications.transfer.v1.Msg/Transfer": { + "post": { + "tags": [ + "Msg" + ], + "summary": "Transfer defines a rpc handler method for MsgTransfer.", + "operationId": "FeeMsg_Transfer", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/ibc.applications.transfer.v1.MsgTransfer" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/ibc.applications.transfer.v1.MsgTransferResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/ibc.applications.transfer.v1.Msg/UpdateParams": { + "post": { + "tags": [ + "Msg" + ], + "summary": "UpdateParams defines a rpc handler for MsgUpdateParams.", + "operationId": "FeeMsg_UpdateParamsMixin180", + "parameters": [ + { + "description": "MsgUpdateParams is the Msg/UpdateParams request type.", + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/ibc.applications.transfer.v1.MsgUpdateParams" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/ibc.applications.transfer.v1.MsgUpdateParamsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/ibc.core.channel.v1.Msg/Acknowledgement": { + "post": { + "tags": [ + "Msg" + ], + "summary": "Acknowledgement defines a rpc handler method for MsgAcknowledgement.", + "operationId": "FeeMsg_Acknowledgement", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/ibc.core.channel.v1.MsgAcknowledgement" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/ibc.core.channel.v1.MsgAcknowledgementResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/ibc.core.channel.v1.Msg/ChannelCloseConfirm": { + "post": { + "tags": [ + "Msg" + ], + "summary": "ChannelCloseConfirm defines a rpc handler method for\nMsgChannelCloseConfirm.", + "operationId": "FeeMsg_ChannelCloseConfirm", + "parameters": [ + { + "description": "MsgChannelCloseConfirm defines a msg sent by a Relayer to Chain B\nto acknowledge the change of channel state to CLOSED on Chain A.", + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/ibc.core.channel.v1.MsgChannelCloseConfirm" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/ibc.core.channel.v1.MsgChannelCloseConfirmResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/ibc.core.channel.v1.Msg/ChannelCloseInit": { + "post": { + "tags": [ + "Msg" + ], + "summary": "ChannelCloseInit defines a rpc handler method for MsgChannelCloseInit.", + "operationId": "FeeMsg_ChannelCloseInit", + "parameters": [ + { + "description": "MsgChannelCloseInit defines a msg sent by a Relayer to Chain A\nto close a channel with Chain B.", + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/ibc.core.channel.v1.MsgChannelCloseInit" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/ibc.core.channel.v1.MsgChannelCloseInitResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/ibc.core.channel.v1.Msg/ChannelOpenAck": { + "post": { + "tags": [ + "Msg" + ], + "summary": "ChannelOpenAck defines a rpc handler method for MsgChannelOpenAck.", + "operationId": "FeeMsg_ChannelOpenAck", + "parameters": [ + { + "description": "MsgChannelOpenAck defines a msg sent by a Relayer to Chain A to acknowledge\nthe change of channel state to TRYOPEN on Chain B.\nWARNING: a channel upgrade MUST NOT initialize an upgrade for this channel\nin the same block as executing this message otherwise the counterparty will\nbe incapable of opening.", + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/ibc.core.channel.v1.MsgChannelOpenAck" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/ibc.core.channel.v1.MsgChannelOpenAckResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/ibc.core.channel.v1.Msg/ChannelOpenConfirm": { + "post": { + "tags": [ + "Msg" + ], + "summary": "ChannelOpenConfirm defines a rpc handler method for MsgChannelOpenConfirm.", + "operationId": "FeeMsg_ChannelOpenConfirm", + "parameters": [ + { + "description": "MsgChannelOpenConfirm defines a msg sent by a Relayer to Chain B to\nacknowledge the change of channel state to OPEN on Chain A.", + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/ibc.core.channel.v1.MsgChannelOpenConfirm" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/ibc.core.channel.v1.MsgChannelOpenConfirmResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/ibc.core.channel.v1.Msg/ChannelOpenInit": { + "post": { + "tags": [ + "Msg" + ], + "summary": "ChannelOpenInit defines a rpc handler method for MsgChannelOpenInit.", + "operationId": "FeeMsg_ChannelOpenInit", + "parameters": [ + { + "description": "MsgChannelOpenInit defines an sdk.Msg to initialize a channel handshake. It\nis called by a relayer on Chain A.", + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/ibc.core.channel.v1.MsgChannelOpenInit" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/ibc.core.channel.v1.MsgChannelOpenInitResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/ibc.core.channel.v1.Msg/ChannelOpenTry": { + "post": { + "tags": [ + "Msg" + ], + "summary": "ChannelOpenTry defines a rpc handler method for MsgChannelOpenTry.", + "operationId": "FeeMsg_ChannelOpenTry", + "parameters": [ + { + "description": "MsgChannelOpenInit defines a msg sent by a Relayer to try to open a channel\non Chain B. The version field within the Channel field has been deprecated. Its\nvalue will be ignored by core IBC.", + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/ibc.core.channel.v1.MsgChannelOpenTry" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/ibc.core.channel.v1.MsgChannelOpenTryResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/ibc.core.channel.v1.Msg/ChannelUpgradeAck": { + "post": { + "tags": [ + "Msg" + ], + "summary": "ChannelUpgradeAck defines a rpc handler method for MsgChannelUpgradeAck.", + "operationId": "FeeMsg_ChannelUpgradeAck", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/ibc.core.channel.v1.MsgChannelUpgradeAck" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/ibc.core.channel.v1.MsgChannelUpgradeAckResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/ibc.core.channel.v1.Msg/ChannelUpgradeCancel": { + "post": { + "tags": [ + "Msg" + ], + "summary": "ChannelUpgradeCancel defines a rpc handler method for MsgChannelUpgradeCancel.", + "operationId": "FeeMsg_ChannelUpgradeCancel", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/ibc.core.channel.v1.MsgChannelUpgradeCancel" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/ibc.core.channel.v1.MsgChannelUpgradeCancelResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/ibc.core.channel.v1.Msg/ChannelUpgradeConfirm": { + "post": { + "tags": [ + "Msg" + ], + "summary": "ChannelUpgradeConfirm defines a rpc handler method for MsgChannelUpgradeConfirm.", + "operationId": "FeeMsg_ChannelUpgradeConfirm", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/ibc.core.channel.v1.MsgChannelUpgradeConfirm" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/ibc.core.channel.v1.MsgChannelUpgradeConfirmResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/ibc.core.channel.v1.Msg/ChannelUpgradeInit": { + "post": { + "tags": [ + "Msg" + ], + "summary": "ChannelUpgradeInit defines a rpc handler method for MsgChannelUpgradeInit.", + "operationId": "FeeMsg_ChannelUpgradeInit", + "parameters": [ + { + "description": "MsgChannelUpgradeInit defines the request type for the ChannelUpgradeInit rpc\nWARNING: Initializing a channel upgrade in the same block as opening the channel\nmay result in the counterparty being incapable of opening.", + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/ibc.core.channel.v1.MsgChannelUpgradeInit" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/ibc.core.channel.v1.MsgChannelUpgradeInitResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/ibc.core.channel.v1.Msg/ChannelUpgradeOpen": { + "post": { + "tags": [ + "Msg" + ], + "summary": "ChannelUpgradeOpen defines a rpc handler method for MsgChannelUpgradeOpen.", + "operationId": "FeeMsg_ChannelUpgradeOpen", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/ibc.core.channel.v1.MsgChannelUpgradeOpen" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/ibc.core.channel.v1.MsgChannelUpgradeOpenResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/ibc.core.channel.v1.Msg/ChannelUpgradeTimeout": { + "post": { + "tags": [ + "Msg" + ], + "summary": "ChannelUpgradeTimeout defines a rpc handler method for MsgChannelUpgradeTimeout.", + "operationId": "FeeMsg_ChannelUpgradeTimeout", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/ibc.core.channel.v1.MsgChannelUpgradeTimeout" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/ibc.core.channel.v1.MsgChannelUpgradeTimeoutResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/ibc.core.channel.v1.Msg/ChannelUpgradeTry": { + "post": { + "tags": [ + "Msg" + ], + "summary": "ChannelUpgradeTry defines a rpc handler method for MsgChannelUpgradeTry.", + "operationId": "FeeMsg_ChannelUpgradeTry", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/ibc.core.channel.v1.MsgChannelUpgradeTry" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/ibc.core.channel.v1.MsgChannelUpgradeTryResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/ibc.core.channel.v1.Msg/PruneAcknowledgements": { + "post": { + "tags": [ + "Msg" + ], + "summary": "PruneAcknowledgements defines a rpc handler method for MsgPruneAcknowledgements.", + "operationId": "FeeMsg_PruneAcknowledgements", + "parameters": [ + { + "description": "MsgPruneAcknowledgements defines the request type for the PruneAcknowledgements rpc.", + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/ibc.core.channel.v1.MsgPruneAcknowledgements" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/ibc.core.channel.v1.MsgPruneAcknowledgementsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/ibc.core.channel.v1.Msg/RecvPacket": { + "post": { + "tags": [ + "Msg" + ], + "summary": "RecvPacket defines a rpc handler method for MsgRecvPacket.", + "operationId": "FeeMsg_RecvPacket", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/ibc.core.channel.v1.MsgRecvPacket" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/ibc.core.channel.v1.MsgRecvPacketResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/ibc.core.channel.v1.Msg/Timeout": { + "post": { + "tags": [ + "Msg" + ], + "summary": "Timeout defines a rpc handler method for MsgTimeout.", + "operationId": "FeeMsg_Timeout", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/ibc.core.channel.v1.MsgTimeout" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/ibc.core.channel.v1.MsgTimeoutResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/ibc.core.channel.v1.Msg/TimeoutOnClose": { + "post": { + "tags": [ + "Msg" + ], + "summary": "TimeoutOnClose defines a rpc handler method for MsgTimeoutOnClose.", + "operationId": "FeeMsg_TimeoutOnClose", + "parameters": [ + { + "description": "MsgTimeoutOnClose timed-out packet upon counterparty channel closure.", + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/ibc.core.channel.v1.MsgTimeoutOnClose" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/ibc.core.channel.v1.MsgTimeoutOnCloseResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/ibc.core.channel.v1.Msg/UpdateChannelParams": { + "post": { + "tags": [ + "Msg" + ], + "summary": "UpdateChannelParams defines a rpc handler method for MsgUpdateParams.", + "operationId": "FeeMsg_UpdateChannelParams", + "parameters": [ + { + "description": "MsgUpdateParams is the MsgUpdateParams request type.", + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/ibc.core.channel.v1.MsgUpdateParams" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/ibc.core.channel.v1.MsgUpdateParamsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/ibc.core.client.v1.Msg/CreateClient": { + "post": { + "tags": [ + "Msg" + ], + "summary": "CreateClient defines a rpc handler method for MsgCreateClient.", + "operationId": "FeeMsg_CreateClient", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/ibc.core.client.v1.MsgCreateClient" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/ibc.core.client.v1.MsgCreateClientResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/ibc.core.client.v1.Msg/IBCSoftwareUpgrade": { + "post": { + "tags": [ + "Msg" + ], + "summary": "IBCSoftwareUpgrade defines a rpc handler method for MsgIBCSoftwareUpgrade.", + "operationId": "FeeMsg_IBCSoftwareUpgrade", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/ibc.core.client.v1.MsgIBCSoftwareUpgrade" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/ibc.core.client.v1.MsgIBCSoftwareUpgradeResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/ibc.core.client.v1.Msg/RecoverClient": { + "post": { + "tags": [ + "Msg" + ], + "summary": "RecoverClient defines a rpc handler method for MsgRecoverClient.", + "operationId": "FeeMsg_RecoverClient", + "parameters": [ + { + "description": "MsgRecoverClient defines the message used to recover a frozen or expired client.", + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/ibc.core.client.v1.MsgRecoverClient" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/ibc.core.client.v1.MsgRecoverClientResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/ibc.core.client.v1.Msg/SubmitMisbehaviour": { + "post": { + "tags": [ + "Msg" + ], + "summary": "SubmitMisbehaviour defines a rpc handler method for MsgSubmitMisbehaviour.", + "operationId": "FeeMsg_SubmitMisbehaviour", + "parameters": [ + { + "description": "MsgSubmitMisbehaviour defines an sdk.Msg type that submits Evidence for\nlight client misbehaviour.\nThis message has been deprecated. Use MsgUpdateClient instead.", + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/ibc.core.client.v1.MsgSubmitMisbehaviour" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/ibc.core.client.v1.MsgSubmitMisbehaviourResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/ibc.core.client.v1.Msg/UpdateClient": { + "post": { + "tags": [ + "Msg" + ], + "summary": "UpdateClient defines a rpc handler method for MsgUpdateClient.", + "operationId": "FeeMsg_UpdateClient", + "parameters": [ + { + "description": "MsgUpdateClient defines an sdk.Msg to update a IBC client state using\nthe given client message.", + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/ibc.core.client.v1.MsgUpdateClient" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/ibc.core.client.v1.MsgUpdateClientResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/ibc.core.client.v1.Msg/UpdateClientParams": { + "post": { + "tags": [ + "Msg" + ], + "summary": "UpdateClientParams defines a rpc handler method for MsgUpdateParams.", + "operationId": "FeeMsg_UpdateClientParams", + "parameters": [ + { + "description": "MsgUpdateParams defines the sdk.Msg type to update the client parameters.", + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/ibc.core.client.v1.MsgUpdateParams" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/ibc.core.client.v1.MsgUpdateParamsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/ibc.core.client.v1.Msg/UpgradeClient": { + "post": { + "tags": [ + "Msg" + ], + "summary": "UpgradeClient defines a rpc handler method for MsgUpgradeClient.", + "operationId": "FeeMsg_UpgradeClient", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/ibc.core.client.v1.MsgUpgradeClient" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/ibc.core.client.v1.MsgUpgradeClientResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/ibc.core.connection.v1.Msg/ConnectionOpenAck": { + "post": { + "tags": [ + "Msg" + ], + "summary": "ConnectionOpenAck defines a rpc handler method for MsgConnectionOpenAck.", + "operationId": "FeeMsg_ConnectionOpenAck", + "parameters": [ + { + "description": "MsgConnectionOpenAck defines a msg sent by a Relayer to Chain A to\nacknowledge the change of connection state to TRYOPEN on Chain B.", + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/ibc.core.connection.v1.MsgConnectionOpenAck" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/ibc.core.connection.v1.MsgConnectionOpenAckResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/ibc.core.connection.v1.Msg/ConnectionOpenConfirm": { + "post": { + "tags": [ + "Msg" + ], + "summary": "ConnectionOpenConfirm defines a rpc handler method for\nMsgConnectionOpenConfirm.", + "operationId": "FeeMsg_ConnectionOpenConfirm", + "parameters": [ + { + "description": "MsgConnectionOpenConfirm defines a msg sent by a Relayer to Chain B to\nacknowledge the change of connection state to OPEN on Chain A.", + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/ibc.core.connection.v1.MsgConnectionOpenConfirm" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/ibc.core.connection.v1.MsgConnectionOpenConfirmResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/ibc.core.connection.v1.Msg/ConnectionOpenInit": { + "post": { + "tags": [ + "Msg" + ], + "summary": "ConnectionOpenInit defines a rpc handler method for MsgConnectionOpenInit.", + "operationId": "FeeMsg_ConnectionOpenInit", + "parameters": [ + { + "description": "MsgConnectionOpenInit defines the msg sent by an account on Chain A to\ninitialize a connection with Chain B.", + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/ibc.core.connection.v1.MsgConnectionOpenInit" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/ibc.core.connection.v1.MsgConnectionOpenInitResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/ibc.core.connection.v1.Msg/ConnectionOpenTry": { + "post": { + "tags": [ + "Msg" + ], + "summary": "ConnectionOpenTry defines a rpc handler method for MsgConnectionOpenTry.", + "operationId": "FeeMsg_ConnectionOpenTry", + "parameters": [ + { + "description": "MsgConnectionOpenTry defines a msg sent by a Relayer to try to open a\nconnection on Chain B.", + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/ibc.core.connection.v1.MsgConnectionOpenTry" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/ibc.core.connection.v1.MsgConnectionOpenTryResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/ibc.core.connection.v1.Msg/UpdateConnectionParams": { + "post": { + "tags": [ + "Msg" + ], + "summary": "UpdateConnectionParams defines a rpc handler method for\nMsgUpdateParams.", + "operationId": "FeeMsg_UpdateConnectionParams", + "parameters": [ + { + "description": "MsgUpdateParams defines the sdk.Msg type to update the connection parameters.", + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/ibc.core.connection.v1.MsgUpdateParams" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/ibc.core.connection.v1.MsgUpdateParamsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/ibc.lightclients.wasm.v1.Msg/MigrateContract": { + "post": { + "tags": [ + "Msg" + ], + "summary": "MigrateContract defines a rpc handler method for MsgMigrateContract.", + "operationId": "FeeMsg_MigrateContract", + "parameters": [ + { + "description": "MsgMigrateContract defines the request type for the MigrateContract rpc.", + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/ibc.lightclients.wasm.v1.MsgMigrateContract" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/ibc.lightclients.wasm.v1.MsgMigrateContractResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/ibc.lightclients.wasm.v1.Msg/RemoveChecksum": { + "post": { + "tags": [ + "Msg" + ], + "summary": "RemoveChecksum defines a rpc handler method for MsgRemoveChecksum.", + "operationId": "FeeMsg_RemoveChecksum", + "parameters": [ + { + "description": "MsgRemoveChecksum defines the request type for the MsgRemoveChecksum rpc.", + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/ibc.lightclients.wasm.v1.MsgRemoveChecksum" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/ibc.lightclients.wasm.v1.MsgRemoveChecksumResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/ibc.lightclients.wasm.v1.Msg/StoreCode": { + "post": { + "tags": [ + "Msg" + ], + "summary": "StoreCode defines a rpc handler method for MsgStoreCode.", + "operationId": "FeeMsg_StoreCode", + "parameters": [ + { + "description": "MsgStoreCode defines the request type for the StoreCode rpc.", + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/ibc.lightclients.wasm.v1.MsgStoreCode" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/ibc.lightclients.wasm.v1.MsgStoreCodeResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/ibc/apps/fee/v1/channels/{channel_id}/ports/{port_id}/fee_enabled": { + "get": { + "tags": [ + "Query" + ], + "summary": "FeeEnabledChannel returns true if the provided port and channel identifiers belong to a fee enabled channel", + "operationId": "FeeQuery_FeeEnabledChannel", + "parameters": [ + { + "type": "string", + "description": "unique channel identifier", + "name": "channel_id", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "unique port identifier", + "name": "port_id", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/ibc.applications.fee.v1.QueryFeeEnabledChannelResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/ibc/apps/fee/v1/channels/{channel_id}/ports/{port_id}/incentivized_packets": { + "get": { + "tags": [ + "Query" + ], + "summary": "Gets all incentivized packets for a specific channel", + "operationId": "FeeQuery_IncentivizedPacketsForChannel", + "parameters": [ + { + "type": "string", + "name": "channel_id", + "in": "path", + "required": true + }, + { + "type": "string", + "name": "port_id", + "in": "path", + "required": true + }, + { + "type": "string", + "format": "byte", + "description": "key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.", + "name": "pagination.key", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.", + "name": "pagination.offset", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.", + "name": "pagination.limit", + "in": "query" + }, + { + "type": "boolean", + "description": "count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.", + "name": "pagination.count_total", + "in": "query" + }, + { + "type": "boolean", + "description": "reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43", + "name": "pagination.reverse", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "Height to query at", + "name": "query_height", + "in": "query" + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/ibc.applications.fee.v1.QueryIncentivizedPacketsForChannelResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/ibc/apps/fee/v1/channels/{channel_id}/relayers/{relayer}/counterparty_payee": { + "get": { + "tags": [ + "Query" + ], + "summary": "CounterpartyPayee returns the registered counterparty payee for forward relaying", + "operationId": "FeeQuery_CounterpartyPayee", + "parameters": [ + { + "type": "string", + "description": "unique channel identifier", + "name": "channel_id", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "the relayer address to which the counterparty is registered", + "name": "relayer", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/ibc.applications.fee.v1.QueryCounterpartyPayeeResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/ibc/apps/fee/v1/channels/{channel_id}/relayers/{relayer}/payee": { + "get": { + "tags": [ + "Query" + ], + "summary": "Payee returns the registered payee address for a specific channel given the relayer address", + "operationId": "FeeQuery_Payee", + "parameters": [ + { + "type": "string", + "description": "unique channel identifier", + "name": "channel_id", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "the relayer address to which the distribution address is registered", + "name": "relayer", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/ibc.applications.fee.v1.QueryPayeeResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/ibc/apps/fee/v1/channels/{packet_id.channel_id}/ports/{packet_id.port_id}/sequences/{packet_id.sequence}/incentivized_packet": { + "get": { + "tags": [ + "Query" + ], + "summary": "IncentivizedPacket returns all packet fees for a packet given its identifier", + "operationId": "FeeQuery_IncentivizedPacket", + "parameters": [ + { + "type": "string", + "description": "channel unique identifier", + "name": "packet_id.channel_id", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "channel port identifier", + "name": "packet_id.port_id", + "in": "path", + "required": true + }, + { + "type": "string", + "format": "uint64", + "description": "packet sequence", + "name": "packet_id.sequence", + "in": "path", + "required": true + }, + { + "type": "string", + "format": "uint64", + "description": "block height at which to query", + "name": "query_height", + "in": "query" + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/ibc.applications.fee.v1.QueryIncentivizedPacketResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/ibc/apps/fee/v1/channels/{packet_id.channel_id}/ports/{packet_id.port_id}/sequences/{packet_id.sequence}/total_ack_fees": { + "get": { + "tags": [ + "Query" + ], + "summary": "TotalAckFees returns the total acknowledgement fees for a packet given its identifier", + "operationId": "FeeQuery_TotalAckFees", + "parameters": [ + { + "type": "string", + "description": "channel unique identifier", + "name": "packet_id.channel_id", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "channel port identifier", + "name": "packet_id.port_id", + "in": "path", + "required": true + }, + { + "type": "string", + "format": "uint64", + "description": "packet sequence", + "name": "packet_id.sequence", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/ibc.applications.fee.v1.QueryTotalAckFeesResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/ibc/apps/fee/v1/channels/{packet_id.channel_id}/ports/{packet_id.port_id}/sequences/{packet_id.sequence}/total_recv_fees": { + "get": { + "tags": [ + "Query" + ], + "summary": "TotalRecvFees returns the total receive fees for a packet given its identifier", + "operationId": "FeeQuery_TotalRecvFees", + "parameters": [ + { + "type": "string", + "description": "channel unique identifier", + "name": "packet_id.channel_id", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "channel port identifier", + "name": "packet_id.port_id", + "in": "path", + "required": true + }, + { + "type": "string", + "format": "uint64", + "description": "packet sequence", + "name": "packet_id.sequence", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/ibc.applications.fee.v1.QueryTotalRecvFeesResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/ibc/apps/fee/v1/channels/{packet_id.channel_id}/ports/{packet_id.port_id}/sequences/{packet_id.sequence}/total_timeout_fees": { + "get": { + "tags": [ + "Query" + ], + "summary": "TotalTimeoutFees returns the total timeout fees for a packet given its identifier", + "operationId": "FeeQuery_TotalTimeoutFees", + "parameters": [ + { + "type": "string", + "description": "channel unique identifier", + "name": "packet_id.channel_id", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "channel port identifier", + "name": "packet_id.port_id", + "in": "path", + "required": true + }, + { + "type": "string", + "format": "uint64", + "description": "packet sequence", + "name": "packet_id.sequence", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/ibc.applications.fee.v1.QueryTotalTimeoutFeesResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/ibc/apps/fee/v1/fee_enabled": { + "get": { + "tags": [ + "Query" + ], + "summary": "FeeEnabledChannels returns a list of all fee enabled channels", + "operationId": "FeeQuery_FeeEnabledChannels", + "parameters": [ + { + "type": "string", + "format": "byte", + "description": "key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.", + "name": "pagination.key", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.", + "name": "pagination.offset", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.", + "name": "pagination.limit", + "in": "query" + }, + { + "type": "boolean", + "description": "count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.", + "name": "pagination.count_total", + "in": "query" + }, + { + "type": "boolean", + "description": "reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43", + "name": "pagination.reverse", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "block height at which to query", + "name": "query_height", + "in": "query" + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/ibc.applications.fee.v1.QueryFeeEnabledChannelsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/ibc/apps/fee/v1/incentivized_packets": { + "get": { + "tags": [ + "Query" + ], + "summary": "IncentivizedPackets returns all incentivized packets and their associated fees", + "operationId": "FeeQuery_IncentivizedPackets", + "parameters": [ + { + "type": "string", + "format": "byte", + "description": "key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.", + "name": "pagination.key", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.", + "name": "pagination.offset", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.", + "name": "pagination.limit", + "in": "query" + }, + { + "type": "boolean", + "description": "count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.", + "name": "pagination.count_total", + "in": "query" + }, + { + "type": "boolean", + "description": "reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43", + "name": "pagination.reverse", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "block height at which to query", + "name": "query_height", + "in": "query" + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/ibc.applications.fee.v1.QueryIncentivizedPacketsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/ibc/apps/interchain_accounts/controller/v1/owners/{owner}/connections/{connection_id}": { + "get": { + "tags": [ + "Query" + ], + "summary": "InterchainAccount returns the interchain account address for a given owner address on a given connection", + "operationId": "FeeQuery_InterchainAccount", + "parameters": [ + { + "type": "string", + "name": "owner", + "in": "path", + "required": true + }, + { + "type": "string", + "name": "connection_id", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/ibc.applications.interchain_accounts.controller.v1.QueryInterchainAccountResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/ibc/apps/interchain_accounts/controller/v1/params": { + "get": { + "tags": [ + "Query" + ], + "summary": "Params queries all parameters of the ICA controller submodule.", + "operationId": "FeeQuery_Params", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/ibc.applications.interchain_accounts.controller.v1.QueryParamsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/ibc/apps/interchain_accounts/host/v1/params": { + "get": { + "tags": [ + "Query" + ], + "summary": "Params queries all parameters of the ICA host submodule.", + "operationId": "FeeQuery_ParamsMixin171", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/ibc.applications.interchain_accounts.host.v1.QueryParamsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/ibc/apps/transfer/v1/channels/{channel_id}/ports/{port_id}/escrow_address": { + "get": { + "tags": [ + "Query" + ], + "summary": "EscrowAddress returns the escrow address for a particular port and channel id.", + "operationId": "FeeQuery_EscrowAddress", + "parameters": [ + { + "type": "string", + "description": "unique channel identifier", + "name": "channel_id", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "unique port identifier", + "name": "port_id", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/ibc.applications.transfer.v1.QueryEscrowAddressResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/ibc/apps/transfer/v1/denom_hashes/{trace}": { + "get": { + "tags": [ + "Query" + ], + "summary": "DenomHash queries a denomination hash information.", + "operationId": "FeeQuery_DenomHash", + "parameters": [ + { + "pattern": ".+", + "type": "string", + "description": "The denomination trace ([port_id]/[channel_id])+/[denom]", + "name": "trace", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/ibc.applications.transfer.v1.QueryDenomHashResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/ibc/apps/transfer/v1/denom_traces": { + "get": { + "tags": [ + "Query" + ], + "summary": "DenomTraces queries all denomination traces.", + "operationId": "FeeQuery_DenomTraces", + "parameters": [ + { + "type": "string", + "format": "byte", + "description": "key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.", + "name": "pagination.key", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.", + "name": "pagination.offset", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.", + "name": "pagination.limit", + "in": "query" + }, + { + "type": "boolean", + "description": "count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.", + "name": "pagination.count_total", + "in": "query" + }, + { + "type": "boolean", + "description": "reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43", + "name": "pagination.reverse", + "in": "query" + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/ibc.applications.transfer.v1.QueryDenomTracesResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/ibc/apps/transfer/v1/denom_traces/{hash}": { + "get": { + "tags": [ + "Query" + ], + "summary": "DenomTrace queries a denomination trace information.", + "operationId": "FeeQuery_DenomTrace", + "parameters": [ + { + "pattern": ".+", + "type": "string", + "description": "hash (in hex format) or denom (full denom with ibc prefix) of the denomination trace information.", + "name": "hash", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/ibc.applications.transfer.v1.QueryDenomTraceResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/ibc/apps/transfer/v1/denoms/{denom}/total_escrow": { + "get": { + "tags": [ + "Query" + ], + "summary": "TotalEscrowForDenom returns the total amount of tokens in escrow based on the denom.", + "operationId": "FeeQuery_TotalEscrowForDenom", + "parameters": [ + { + "pattern": ".+", + "type": "string", + "name": "denom", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/ibc.applications.transfer.v1.QueryTotalEscrowForDenomResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/ibc/apps/transfer/v1/params": { + "get": { + "tags": [ + "Query" + ], + "summary": "Params queries all parameters of the ibc-transfer module.", + "operationId": "FeeQuery_ParamsMixin178", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/ibc.applications.transfer.v1.QueryParamsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/ibc/core/channel/v1/channels": { + "get": { + "tags": [ + "Query" + ], + "summary": "Channels queries all the IBC channels of a chain.", + "operationId": "FeeQuery_Channels", + "parameters": [ + { + "type": "string", + "format": "byte", + "description": "key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.", + "name": "pagination.key", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.", + "name": "pagination.offset", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.", + "name": "pagination.limit", + "in": "query" + }, + { + "type": "boolean", + "description": "count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.", + "name": "pagination.count_total", + "in": "query" + }, + { + "type": "boolean", + "description": "reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43", + "name": "pagination.reverse", + "in": "query" + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/ibc.core.channel.v1.QueryChannelsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}": { + "get": { + "tags": [ + "Query" + ], + "summary": "Channel queries an IBC Channel.", + "operationId": "FeeQuery_Channel", + "parameters": [ + { + "type": "string", + "description": "channel unique identifier", + "name": "channel_id", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "port unique identifier", + "name": "port_id", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/ibc.core.channel.v1.QueryChannelResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/client_state": { + "get": { + "tags": [ + "Query" + ], + "summary": "ChannelClientState queries for the client state for the channel associated\nwith the provided channel identifiers.", + "operationId": "FeeQuery_ChannelClientState", + "parameters": [ + { + "type": "string", + "description": "channel unique identifier", + "name": "channel_id", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "port unique identifier", + "name": "port_id", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/ibc.core.channel.v1.QueryChannelClientStateResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/consensus_state/revision/{revision_number}/height/{revision_height}": { + "get": { + "tags": [ + "Query" + ], + "summary": "ChannelConsensusState queries for the consensus state for the channel\nassociated with the provided channel identifiers.", + "operationId": "FeeQuery_ChannelConsensusState", + "parameters": [ + { + "type": "string", + "description": "channel unique identifier", + "name": "channel_id", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "port unique identifier", + "name": "port_id", + "in": "path", + "required": true + }, + { + "type": "string", + "format": "uint64", + "description": "revision number of the consensus state", + "name": "revision_number", + "in": "path", + "required": true + }, + { + "type": "string", + "format": "uint64", + "description": "revision height of the consensus state", + "name": "revision_height", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/ibc.core.channel.v1.QueryChannelConsensusStateResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/next_sequence": { + "get": { + "tags": [ + "Query" + ], + "summary": "NextSequenceReceive returns the next receive sequence for a given channel.", + "operationId": "FeeQuery_NextSequenceReceive", + "parameters": [ + { + "type": "string", + "description": "channel unique identifier", + "name": "channel_id", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "port unique identifier", + "name": "port_id", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/ibc.core.channel.v1.QueryNextSequenceReceiveResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/next_sequence_send": { + "get": { + "tags": [ + "Query" + ], + "summary": "NextSequenceSend returns the next send sequence for a given channel.", + "operationId": "FeeQuery_NextSequenceSend", + "parameters": [ + { + "type": "string", + "description": "channel unique identifier", + "name": "channel_id", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "port unique identifier", + "name": "port_id", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/ibc.core.channel.v1.QueryNextSequenceSendResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/packet_acknowledgements": { + "get": { + "tags": [ + "Query" + ], + "summary": "PacketAcknowledgements returns all the packet acknowledgements associated\nwith a channel.", + "operationId": "FeeQuery_PacketAcknowledgements", + "parameters": [ + { + "type": "string", + "description": "channel unique identifier", + "name": "channel_id", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "port unique identifier", + "name": "port_id", + "in": "path", + "required": true + }, + { + "type": "string", + "format": "byte", + "description": "key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.", + "name": "pagination.key", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.", + "name": "pagination.offset", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.", + "name": "pagination.limit", + "in": "query" + }, + { + "type": "boolean", + "description": "count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.", + "name": "pagination.count_total", + "in": "query" + }, + { + "type": "boolean", + "description": "reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43", + "name": "pagination.reverse", + "in": "query" + }, + { + "type": "array", + "items": { + "type": "string", + "format": "uint64" + }, + "collectionFormat": "multi", + "description": "list of packet sequences", + "name": "packet_commitment_sequences", + "in": "query" + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/ibc.core.channel.v1.QueryPacketAcknowledgementsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/packet_acks/{sequence}": { + "get": { + "tags": [ + "Query" + ], + "summary": "PacketAcknowledgement queries a stored packet acknowledgement hash.", + "operationId": "FeeQuery_PacketAcknowledgement", + "parameters": [ + { + "type": "string", + "description": "channel unique identifier", + "name": "channel_id", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "port unique identifier", + "name": "port_id", + "in": "path", + "required": true + }, + { + "type": "string", + "format": "uint64", + "description": "packet sequence", + "name": "sequence", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/ibc.core.channel.v1.QueryPacketAcknowledgementResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/packet_commitments": { + "get": { + "tags": [ + "Query" + ], + "summary": "PacketCommitments returns all the packet commitments hashes associated\nwith a channel.", + "operationId": "FeeQuery_PacketCommitments", + "parameters": [ + { + "type": "string", + "description": "channel unique identifier", + "name": "channel_id", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "port unique identifier", + "name": "port_id", + "in": "path", + "required": true + }, + { + "type": "string", + "format": "byte", + "description": "key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.", + "name": "pagination.key", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.", + "name": "pagination.offset", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.", + "name": "pagination.limit", + "in": "query" + }, + { + "type": "boolean", + "description": "count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.", + "name": "pagination.count_total", + "in": "query" + }, + { + "type": "boolean", + "description": "reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43", + "name": "pagination.reverse", + "in": "query" + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/ibc.core.channel.v1.QueryPacketCommitmentsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/packet_commitments/{packet_ack_sequences}/unreceived_acks": { + "get": { + "tags": [ + "Query" + ], + "summary": "UnreceivedAcks returns all the unreceived IBC acknowledgements associated\nwith a channel and sequences.", + "operationId": "FeeQuery_UnreceivedAcks", + "parameters": [ + { + "type": "string", + "description": "channel unique identifier", + "name": "channel_id", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "port unique identifier", + "name": "port_id", + "in": "path", + "required": true + }, + { + "minItems": 1, + "type": "array", + "items": { + "type": "string", + "format": "uint64" + }, + "collectionFormat": "csv", + "description": "list of acknowledgement sequences", + "name": "packet_ack_sequences", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/ibc.core.channel.v1.QueryUnreceivedAcksResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/packet_commitments/{packet_commitment_sequences}/unreceived_packets": { + "get": { + "tags": [ + "Query" + ], + "summary": "UnreceivedPackets returns all the unreceived IBC packets associated with a\nchannel and sequences.", + "operationId": "FeeQuery_UnreceivedPackets", + "parameters": [ + { + "type": "string", + "description": "channel unique identifier", + "name": "channel_id", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "port unique identifier", + "name": "port_id", + "in": "path", + "required": true + }, + { + "minItems": 1, + "type": "array", + "items": { + "type": "string", + "format": "uint64" + }, + "collectionFormat": "csv", + "description": "list of packet sequences", + "name": "packet_commitment_sequences", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/ibc.core.channel.v1.QueryUnreceivedPacketsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/packet_commitments/{sequence}": { + "get": { + "tags": [ + "Query" + ], + "summary": "PacketCommitment queries a stored packet commitment hash.", + "operationId": "FeeQuery_PacketCommitment", + "parameters": [ + { + "type": "string", + "description": "channel unique identifier", + "name": "channel_id", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "port unique identifier", + "name": "port_id", + "in": "path", + "required": true + }, + { + "type": "string", + "format": "uint64", + "description": "packet sequence", + "name": "sequence", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/ibc.core.channel.v1.QueryPacketCommitmentResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/packet_receipts/{sequence}": { + "get": { + "tags": [ + "Query" + ], + "summary": "PacketReceipt queries if a given packet sequence has been received on the\nqueried chain", + "operationId": "FeeQuery_PacketReceipt", + "parameters": [ + { + "type": "string", + "description": "channel unique identifier", + "name": "channel_id", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "port unique identifier", + "name": "port_id", + "in": "path", + "required": true + }, + { + "type": "string", + "format": "uint64", + "description": "packet sequence", + "name": "sequence", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/ibc.core.channel.v1.QueryPacketReceiptResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/upgrade": { + "get": { + "tags": [ + "Query" + ], + "summary": "Upgrade returns the upgrade for a given port and channel id.", + "operationId": "FeeQuery_Upgrade", + "parameters": [ + { + "type": "string", + "name": "channel_id", + "in": "path", + "required": true + }, + { + "type": "string", + "name": "port_id", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/ibc.core.channel.v1.QueryUpgradeResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/upgrade_error": { + "get": { + "tags": [ + "Query" + ], + "summary": "UpgradeError returns the error receipt if the upgrade handshake failed.", + "operationId": "FeeQuery_UpgradeError", + "parameters": [ + { + "type": "string", + "name": "channel_id", + "in": "path", + "required": true + }, + { + "type": "string", + "name": "port_id", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/ibc.core.channel.v1.QueryUpgradeErrorResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/ibc/core/channel/v1/connections/{connection}/channels": { + "get": { + "tags": [ + "Query" + ], + "summary": "ConnectionChannels queries all the channels associated with a connection\nend.", + "operationId": "FeeQuery_ConnectionChannels", + "parameters": [ + { + "type": "string", + "description": "connection unique identifier", + "name": "connection", + "in": "path", + "required": true + }, + { + "type": "string", + "format": "byte", + "description": "key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.", + "name": "pagination.key", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.", + "name": "pagination.offset", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.", + "name": "pagination.limit", + "in": "query" + }, + { + "type": "boolean", + "description": "count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.", + "name": "pagination.count_total", + "in": "query" + }, + { + "type": "boolean", + "description": "reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43", + "name": "pagination.reverse", + "in": "query" + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/ibc.core.channel.v1.QueryConnectionChannelsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/ibc/core/channel/v1/params": { + "get": { + "tags": [ + "Query" + ], + "summary": "ChannelParams queries all parameters of the ibc channel submodule.", + "operationId": "FeeQuery_ChannelParams", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/ibc.core.channel.v1.QueryChannelParamsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/ibc/core/client/v1/client_states": { + "get": { + "tags": [ + "Query" + ], + "summary": "ClientStates queries all the IBC light clients of a chain.", + "operationId": "FeeQuery_ClientStates", + "parameters": [ + { + "type": "string", + "format": "byte", + "description": "key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.", + "name": "pagination.key", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.", + "name": "pagination.offset", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.", + "name": "pagination.limit", + "in": "query" + }, + { + "type": "boolean", + "description": "count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.", + "name": "pagination.count_total", + "in": "query" + }, + { + "type": "boolean", + "description": "reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43", + "name": "pagination.reverse", + "in": "query" + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/ibc.core.client.v1.QueryClientStatesResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/ibc/core/client/v1/client_states/{client_id}": { + "get": { + "tags": [ + "Query" + ], + "summary": "ClientState queries an IBC light client.", + "operationId": "FeeQuery_ClientState", + "parameters": [ + { + "type": "string", + "description": "client state unique identifier", + "name": "client_id", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/ibc.core.client.v1.QueryClientStateResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/ibc/core/client/v1/client_status/{client_id}": { + "get": { + "tags": [ + "Query" + ], + "summary": "Status queries the status of an IBC client.", + "operationId": "FeeQuery_ClientStatus", + "parameters": [ + { + "type": "string", + "description": "client unique identifier", + "name": "client_id", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/ibc.core.client.v1.QueryClientStatusResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/ibc/core/client/v1/consensus_states/{client_id}": { + "get": { + "tags": [ + "Query" + ], + "summary": "ConsensusStates queries all the consensus state associated with a given\nclient.", + "operationId": "FeeQuery_ConsensusStates", + "parameters": [ + { + "type": "string", + "description": "client identifier", + "name": "client_id", + "in": "path", + "required": true + }, + { + "type": "string", + "format": "byte", + "description": "key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.", + "name": "pagination.key", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.", + "name": "pagination.offset", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.", + "name": "pagination.limit", + "in": "query" + }, + { + "type": "boolean", + "description": "count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.", + "name": "pagination.count_total", + "in": "query" + }, + { + "type": "boolean", + "description": "reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43", + "name": "pagination.reverse", + "in": "query" + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/ibc.core.client.v1.QueryConsensusStatesResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/ibc/core/client/v1/consensus_states/{client_id}/heights": { + "get": { + "tags": [ + "Query" + ], + "summary": "ConsensusStateHeights queries the height of every consensus states associated with a given client.", + "operationId": "FeeQuery_ConsensusStateHeights", + "parameters": [ + { + "type": "string", + "description": "client identifier", + "name": "client_id", + "in": "path", + "required": true + }, + { + "type": "string", + "format": "byte", + "description": "key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.", + "name": "pagination.key", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.", + "name": "pagination.offset", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.", + "name": "pagination.limit", + "in": "query" + }, + { + "type": "boolean", + "description": "count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.", + "name": "pagination.count_total", + "in": "query" + }, + { + "type": "boolean", + "description": "reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43", + "name": "pagination.reverse", + "in": "query" + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/ibc.core.client.v1.QueryConsensusStateHeightsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/ibc/core/client/v1/consensus_states/{client_id}/revision/{revision_number}/height/{revision_height}": { + "get": { + "tags": [ + "Query" + ], + "summary": "ConsensusState queries a consensus state associated with a client state at\na given height.", + "operationId": "FeeQuery_ConsensusState", + "parameters": [ + { + "type": "string", + "description": "client identifier", + "name": "client_id", + "in": "path", + "required": true + }, + { + "type": "string", + "format": "uint64", + "description": "consensus state revision number", + "name": "revision_number", + "in": "path", + "required": true + }, + { + "type": "string", + "format": "uint64", + "description": "consensus state revision height", + "name": "revision_height", + "in": "path", + "required": true + }, + { + "type": "boolean", + "description": "latest_height overrrides the height field and queries the latest stored\nConsensusState", + "name": "latest_height", + "in": "query" + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/ibc.core.client.v1.QueryConsensusStateResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/ibc/core/client/v1/params": { + "get": { + "tags": [ + "Query" + ], + "summary": "ClientParams queries all parameters of the ibc client submodule.", + "operationId": "FeeQuery_ClientParams", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/ibc.core.client.v1.QueryClientParamsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/ibc/core/client/v1/upgraded_client_states": { + "get": { + "tags": [ + "Query" + ], + "summary": "UpgradedClientState queries an Upgraded IBC light client.", + "operationId": "FeeQuery_UpgradedClientState", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/ibc.core.client.v1.QueryUpgradedClientStateResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/ibc/core/client/v1/upgraded_consensus_states": { + "get": { + "tags": [ + "Query" + ], + "summary": "UpgradedConsensusState queries an Upgraded IBC consensus state.", + "operationId": "FeeQuery_UpgradedConsensusState", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/ibc.core.client.v1.QueryUpgradedConsensusStateResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/ibc/core/connection/v1/client_connections/{client_id}": { + "get": { + "tags": [ + "Query" + ], + "summary": "ClientConnections queries the connection paths associated with a client\nstate.", + "operationId": "FeeQuery_ClientConnections", + "parameters": [ + { + "type": "string", + "description": "client identifier associated with a connection", + "name": "client_id", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/ibc.core.connection.v1.QueryClientConnectionsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/ibc/core/connection/v1/connections": { + "get": { + "tags": [ + "Query" + ], + "summary": "Connections queries all the IBC connections of a chain.", + "operationId": "FeeQuery_Connections", + "parameters": [ + { + "type": "string", + "format": "byte", + "description": "key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.", + "name": "pagination.key", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.", + "name": "pagination.offset", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.", + "name": "pagination.limit", + "in": "query" + }, + { + "type": "boolean", + "description": "count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.", + "name": "pagination.count_total", + "in": "query" + }, + { + "type": "boolean", + "description": "reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43", + "name": "pagination.reverse", + "in": "query" + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/ibc.core.connection.v1.QueryConnectionsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/ibc/core/connection/v1/connections/{connection_id}": { + "get": { + "tags": [ + "Query" + ], + "summary": "Connection queries an IBC connection end.", + "operationId": "FeeQuery_Connection", + "parameters": [ + { + "type": "string", + "description": "connection unique identifier", + "name": "connection_id", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/ibc.core.connection.v1.QueryConnectionResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/ibc/core/connection/v1/connections/{connection_id}/client_state": { + "get": { + "tags": [ + "Query" + ], + "summary": "ConnectionClientState queries the client state associated with the\nconnection.", + "operationId": "FeeQuery_ConnectionClientState", + "parameters": [ + { + "type": "string", + "description": "connection identifier", + "name": "connection_id", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/ibc.core.connection.v1.QueryConnectionClientStateResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/ibc/core/connection/v1/connections/{connection_id}/consensus_state/revision/{revision_number}/height/{revision_height}": { + "get": { + "tags": [ + "Query" + ], + "summary": "ConnectionConsensusState queries the consensus state associated with the\nconnection.", + "operationId": "FeeQuery_ConnectionConsensusState", + "parameters": [ + { + "type": "string", + "description": "connection identifier", + "name": "connection_id", + "in": "path", + "required": true + }, + { + "type": "string", + "format": "uint64", + "name": "revision_number", + "in": "path", + "required": true + }, + { + "type": "string", + "format": "uint64", + "name": "revision_height", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/ibc.core.connection.v1.QueryConnectionConsensusStateResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/ibc/core/connection/v1/params": { + "get": { + "tags": [ + "Query" + ], + "summary": "ConnectionParams queries all parameters of the ibc connection submodule.", + "operationId": "FeeQuery_ConnectionParams", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/ibc.core.connection.v1.QueryConnectionParamsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/ibc/lightclients/wasm/v1/checksums": { + "get": { + "tags": [ + "Query" + ], + "summary": "Get all Wasm checksums", + "operationId": "FeeQuery_Checksums", + "parameters": [ + { + "type": "string", + "format": "byte", + "description": "key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.", + "name": "pagination.key", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.", + "name": "pagination.offset", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.", + "name": "pagination.limit", + "in": "query" + }, + { + "type": "boolean", + "description": "count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.", + "name": "pagination.count_total", + "in": "query" + }, + { + "type": "boolean", + "description": "reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43", + "name": "pagination.reverse", + "in": "query" + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/ibc.lightclients.wasm.v1.QueryChecksumsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/ibc/lightclients/wasm/v1/checksums/{checksum}/code": { + "get": { + "tags": [ + "Query" + ], + "summary": "Get Wasm code for given checksum", + "operationId": "FeeQuery_Code", + "parameters": [ + { + "type": "string", + "description": "checksum is a hex encoded string of the code stored.", + "name": "checksum", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/ibc.lightclients.wasm.v1.QueryCodeResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/pokt-network/poktroll/application/application": { + "get": { + "tags": [ + "Query" + ], + "operationId": "GithubCompoktNetworkpoktrollQuery_AllApplications", + "parameters": [ + { + "type": "string", + "format": "byte", + "description": "key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.", + "name": "pagination.key", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.", + "name": "pagination.offset", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.", + "name": "pagination.limit", + "in": "query" + }, + { + "type": "boolean", + "description": "count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.", + "name": "pagination.count_total", + "in": "query" + }, + { + "type": "boolean", + "description": "reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43", + "name": "pagination.reverse", + "in": "query" + }, + { + "type": "string", + "description": "TODO_MAINNET(@adshmh): rename this field to `gateway_address_delegated_to`\ndelegatee_gateway_address, if specified, filters the application list to only include those with delegation to the specified gateway address.", + "name": "delegatee_gateway_address", + "in": "query" + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/poktroll.application.QueryAllApplicationsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/pokt-network/poktroll/application/application/{address}": { + "get": { + "tags": [ + "Query" + ], + "summary": "Queries a list of Application items.", + "operationId": "GithubCompoktNetworkpoktrollQuery_Application", + "parameters": [ + { + "type": "string", + "name": "address", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/poktroll.application.QueryGetApplicationResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/pokt-network/poktroll/application/params": { + "get": { + "tags": [ + "Query" + ], + "summary": "Parameters queries the parameters of the module.", + "operationId": "GithubCompoktNetworkpoktrollQuery_Params", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/poktroll.application.QueryParamsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/pokt-network/poktroll/gateway/gateway": { + "get": { + "tags": [ + "Query" + ], + "operationId": "GithubCompoktNetworkpoktrollQuery_AllGateways", + "parameters": [ + { + "type": "string", + "format": "byte", + "description": "key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.", + "name": "pagination.key", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.", + "name": "pagination.offset", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.", + "name": "pagination.limit", + "in": "query" + }, + { + "type": "boolean", + "description": "count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.", + "name": "pagination.count_total", + "in": "query" + }, + { + "type": "boolean", + "description": "reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43", + "name": "pagination.reverse", + "in": "query" + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/poktroll.gateway.QueryAllGatewaysResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/pokt-network/poktroll/gateway/gateway/{address}": { + "get": { + "tags": [ + "Query" + ], + "summary": "Queries a list of Gateway items.", + "operationId": "GithubCompoktNetworkpoktrollQuery_Gateway", + "parameters": [ + { + "type": "string", + "name": "address", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/poktroll.gateway.QueryGetGatewayResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/pokt-network/poktroll/gateway/params": { + "get": { + "tags": [ + "Query" + ], + "summary": "Parameters queries the parameters of the module.", + "operationId": "GithubCompoktNetworkpoktrollQuery_ParamsMixin9", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/poktroll.gateway.QueryParamsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/pokt-network/poktroll/proof/claim": { + "get": { + "tags": [ + "Query" + ], + "operationId": "GithubCompoktNetworkpoktrollQuery_AllClaims", + "parameters": [ + { + "type": "string", + "format": "byte", + "description": "key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.", + "name": "pagination.key", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.", + "name": "pagination.offset", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.", + "name": "pagination.limit", + "in": "query" + }, + { + "type": "boolean", + "description": "count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.", + "name": "pagination.count_total", + "in": "query" + }, + { + "type": "boolean", + "description": "reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43", + "name": "pagination.reverse", + "in": "query" + }, + { + "type": "string", + "name": "supplier_operator_address", + "in": "query" + }, + { + "type": "string", + "name": "session_id", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "name": "session_end_height", + "in": "query" + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/poktroll.proof.QueryAllClaimsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/pokt-network/poktroll/proof/claim/{session_id}/{supplier_operator_address}": { + "get": { + "tags": [ + "Query" + ], + "summary": "Queries a list of Claim items.", + "operationId": "GithubCompoktNetworkpoktrollQuery_Claim", + "parameters": [ + { + "type": "string", + "name": "session_id", + "in": "path", + "required": true + }, + { + "type": "string", + "name": "supplier_operator_address", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/poktroll.proof.QueryGetClaimResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/pokt-network/poktroll/proof/params": { + "get": { + "tags": [ + "Query" + ], + "summary": "Parameters queries the parameters of the module.", + "operationId": "GithubCompoktNetworkpoktrollQuery_ParamsMixin15", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/poktroll.proof.QueryParamsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/pokt-network/poktroll/proof/proof": { + "get": { + "tags": [ + "Query" + ], + "operationId": "GithubCompoktNetworkpoktrollQuery_AllProofs", + "parameters": [ + { + "type": "string", + "format": "byte", + "description": "key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.", + "name": "pagination.key", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.", + "name": "pagination.offset", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.", + "name": "pagination.limit", + "in": "query" + }, + { + "type": "boolean", + "description": "count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.", + "name": "pagination.count_total", + "in": "query" + }, + { + "type": "boolean", + "description": "reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43", + "name": "pagination.reverse", + "in": "query" + }, + { + "type": "string", + "name": "supplier_operator_address", + "in": "query" + }, + { + "type": "string", + "name": "session_id", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "name": "session_end_height", + "in": "query" + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/poktroll.proof.QueryAllProofsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/pokt-network/poktroll/proof/proof/{session_id}/{supplier_operator_address}": { + "get": { + "tags": [ + "Query" + ], + "summary": "Queries a list of Proof items.", + "operationId": "GithubCompoktNetworkpoktrollQuery_Proof", + "parameters": [ + { + "type": "string", + "name": "session_id", + "in": "path", + "required": true + }, + { + "type": "string", + "name": "supplier_operator_address", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/poktroll.proof.QueryGetProofResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/pokt-network/poktroll/service/params": { + "get": { + "tags": [ + "Query" + ], + "summary": "Parameters queries the parameters of the module.", + "operationId": "GithubCompoktNetworkpoktrollQuery_ParamsMixin21", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/poktroll.service.QueryParamsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/pokt-network/poktroll/service/relay_mining_difficulty": { + "get": { + "tags": [ + "Query" + ], + "operationId": "GithubCompoktNetworkpoktrollQuery_RelayMiningDifficultyAll", + "parameters": [ + { + "type": "string", + "format": "byte", + "description": "key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.", + "name": "pagination.key", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.", + "name": "pagination.offset", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.", + "name": "pagination.limit", + "in": "query" + }, + { + "type": "boolean", + "description": "count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.", + "name": "pagination.count_total", + "in": "query" + }, + { + "type": "boolean", + "description": "reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43", + "name": "pagination.reverse", + "in": "query" + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/poktroll.service.QueryAllRelayMiningDifficultyResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/pokt-network/poktroll/service/relay_mining_difficulty/{serviceId}": { + "get": { + "tags": [ + "Query" + ], + "summary": "Queries a list of RelayMiningDifficulty items.", + "operationId": "GithubCompoktNetworkpoktrollQuery_RelayMiningDifficulty", + "parameters": [ + { + "type": "string", + "name": "serviceId", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/poktroll.service.QueryGetRelayMiningDifficultyResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/pokt-network/poktroll/service/service": { + "get": { + "tags": [ + "Query" + ], + "operationId": "GithubCompoktNetworkpoktrollQuery_AllServices", + "parameters": [ + { + "type": "string", + "format": "byte", + "description": "key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.", + "name": "pagination.key", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.", + "name": "pagination.offset", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.", + "name": "pagination.limit", + "in": "query" + }, + { + "type": "boolean", + "description": "count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.", + "name": "pagination.count_total", + "in": "query" + }, + { + "type": "boolean", + "description": "reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43", + "name": "pagination.reverse", + "in": "query" + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/poktroll.service.QueryAllServicesResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/pokt-network/poktroll/service/service/{id}": { + "get": { + "tags": [ + "Query" + ], + "summary": "Queries a list of Service items.", + "operationId": "GithubCompoktNetworkpoktrollQuery_Service", + "parameters": [ + { + "type": "string", + "description": "TODO_IMPROVE: We could support getting services by name.", + "name": "id", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/poktroll.service.QueryGetServiceResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/pokt-network/poktroll/session/get_session": { + "get": { + "tags": [ + "Query" + ], + "summary": "Queries the session given app_address, service and block_height.", + "operationId": "GithubCompoktNetworkpoktrollQuery_GetSession", + "parameters": [ + { + "type": "string", + "description": "The Bech32 address of the application.", + "name": "application_address", + "in": "query" + }, + { + "type": "string", + "description": "The service ID to query the session for", + "name": "service_id", + "in": "query" + }, + { + "type": "string", + "format": "int64", + "description": "The block height to query the session for", + "name": "block_height", + "in": "query" + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/poktroll.session.QueryGetSessionResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/pokt-network/poktroll/session/params": { + "get": { + "tags": [ + "Query" + ], + "summary": "Parameters queries the parameters of the module.", + "operationId": "GithubCompoktNetworkpoktrollQuery_ParamsMixin27", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/poktroll.session.QueryParamsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/pokt-network/poktroll/shared/params": { + "get": { + "tags": [ + "Query" + ], + "summary": "Parameters queries the parameters of the module.", + "operationId": "GithubCompoktNetworkpoktrollQuery_ParamsMixin32", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/poktroll.shared.QueryParamsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/pokt-network/poktroll/supplier/params": { + "get": { + "tags": [ + "Query" + ], + "summary": "Parameters queries the parameters of the module.", + "operationId": "GithubCompoktNetworkpoktrollQuery_ParamsMixin39", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/poktroll.supplier.QueryParamsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/pokt-network/poktroll/supplier/supplier": { + "get": { + "tags": [ + "Query" + ], + "operationId": "GithubCompoktNetworkpoktrollQuery_AllSuppliers", + "parameters": [ + { + "type": "string", + "format": "byte", + "description": "key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.", + "name": "pagination.key", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.", + "name": "pagination.offset", + "in": "query" + }, + { + "type": "string", + "format": "uint64", + "description": "limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.", + "name": "pagination.limit", + "in": "query" + }, + { + "type": "boolean", + "description": "count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.", + "name": "pagination.count_total", + "in": "query" + }, + { + "type": "boolean", + "description": "reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43", + "name": "pagination.reverse", + "in": "query" + }, + { + "type": "string", + "description": "unique service identifier to filter by", + "name": "service_id", + "in": "query" + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/poktroll.supplier.QueryAllSuppliersResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/pokt-network/poktroll/supplier/supplier/{operator_address}": { + "get": { + "tags": [ + "Query" + ], + "summary": "Queries a list of Supplier items.", + "operationId": "GithubCompoktNetworkpoktrollQuery_Supplier", + "parameters": [ + { + "type": "string", + "description": "TODO_TECHDEBT: Add the ability to query for a supplier by owner_id", + "name": "operator_address", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/poktroll.supplier.QueryGetSupplierResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/pokt-network/poktroll/tokenomics/params": { + "get": { + "tags": [ + "Query" + ], + "summary": "Parameters queries the parameters of the module.", + "operationId": "GithubCompoktNetworkpoktrollQuery_ParamsMixin44", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/poktroll.tokenomics.QueryParamsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/poktroll.application.Msg/DelegateToGateway": { + "post": { + "tags": [ + "Msg" + ], + "operationId": "GithubCompoktNetworkpoktrollMsg_DelegateToGateway", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/poktroll.application.MsgDelegateToGateway" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/poktroll.application.MsgDelegateToGatewayResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/poktroll.application.Msg/StakeApplication": { + "post": { + "tags": [ + "Msg" + ], + "operationId": "GithubCompoktNetworkpoktrollMsg_StakeApplication", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/poktroll.application.MsgStakeApplication" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/poktroll.application.MsgStakeApplicationResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/poktroll.application.Msg/TransferApplication": { + "post": { + "tags": [ + "Msg" + ], + "operationId": "GithubCompoktNetworkpoktrollMsg_TransferApplication", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/poktroll.application.MsgTransferApplication" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/poktroll.application.MsgTransferApplicationResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/poktroll.application.Msg/UndelegateFromGateway": { + "post": { + "tags": [ + "Msg" + ], + "operationId": "GithubCompoktNetworkpoktrollMsg_UndelegateFromGateway", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/poktroll.application.MsgUndelegateFromGateway" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/poktroll.application.MsgUndelegateFromGatewayResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/poktroll.application.Msg/UnstakeApplication": { + "post": { + "tags": [ + "Msg" + ], + "operationId": "GithubCompoktNetworkpoktrollMsg_UnstakeApplication", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/poktroll.application.MsgUnstakeApplication" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/poktroll.application.MsgUnstakeApplicationResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/poktroll.application.Msg/UpdateParam": { + "post": { + "tags": [ + "Msg" + ], + "operationId": "GithubCompoktNetworkpoktrollMsg_UpdateParam", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/poktroll.application.MsgUpdateParam" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/poktroll.application.MsgUpdateParamResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/poktroll.application.Msg/UpdateParams": { + "post": { + "tags": [ + "Msg" + ], + "summary": "UpdateParams defines a (governance) operation for updating the module\nparameters. The authority defaults to the x/gov module account.", + "operationId": "GithubCompoktNetworkpoktrollMsg_UpdateParams", + "parameters": [ + { + "description": "MsgUpdateParams is the Msg/UpdateParams request type.", + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/poktroll.application.MsgUpdateParams" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/poktroll.application.MsgUpdateParamsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/poktroll.gateway.Msg/StakeGateway": { + "post": { + "tags": [ + "Msg" + ], + "operationId": "GithubCompoktNetworkpoktrollMsg_StakeGateway", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/poktroll.gateway.MsgStakeGateway" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/poktroll.gateway.MsgStakeGatewayResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/poktroll.gateway.Msg/UnstakeGateway": { + "post": { + "tags": [ + "Msg" + ], + "operationId": "GithubCompoktNetworkpoktrollMsg_UnstakeGateway", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/poktroll.gateway.MsgUnstakeGateway" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/poktroll.gateway.MsgUnstakeGatewayResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/poktroll.gateway.Msg/UpdateParam": { + "post": { + "tags": [ + "Msg" + ], + "operationId": "GithubCompoktNetworkpoktrollMsg_UpdateParamMixin10", + "parameters": [ + { + "description": "MsgUpdateParam is the Msg/UpdateParam request type to update a single param.", + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/poktroll.gateway.MsgUpdateParam" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/poktroll.gateway.MsgUpdateParamResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/poktroll.gateway.Msg/UpdateParams": { + "post": { + "tags": [ + "Msg" + ], + "summary": "UpdateParams defines a (governance) operation for updating the module\nparameters. The authority defaults to the x/gov module account.", + "operationId": "GithubCompoktNetworkpoktrollMsg_UpdateParamsMixin10", + "parameters": [ + { + "description": "MsgUpdateParams is the Msg/UpdateParams request type.", + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/poktroll.gateway.MsgUpdateParams" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/poktroll.gateway.MsgUpdateParamsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/poktroll.proof.Msg/CreateClaim": { + "post": { + "tags": [ + "Msg" + ], + "operationId": "GithubCompoktNetworkpoktrollMsg_CreateClaim", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/poktroll.proof.MsgCreateClaim" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/poktroll.proof.MsgCreateClaimResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/poktroll.proof.Msg/SubmitProof": { + "post": { + "tags": [ + "Msg" + ], + "operationId": "GithubCompoktNetworkpoktrollMsg_SubmitProof", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/poktroll.proof.MsgSubmitProof" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/poktroll.proof.MsgSubmitProofResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/poktroll.proof.Msg/UpdateParam": { + "post": { + "tags": [ + "Msg" + ], + "operationId": "GithubCompoktNetworkpoktrollMsg_UpdateParamMixin16", + "parameters": [ + { + "description": "MsgUpdateParam is the Msg/UpdateParam request type to update a single param.", + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/poktroll.proof.MsgUpdateParam" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/poktroll.proof.MsgUpdateParamResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/poktroll.proof.Msg/UpdateParams": { + "post": { + "tags": [ + "Msg" + ], + "summary": "UpdateParams defines a (governance) operation for updating the module\nparameters. The authority defaults to the x/gov module account.", + "operationId": "GithubCompoktNetworkpoktrollMsg_UpdateParamsMixin16", + "parameters": [ + { + "description": "MsgUpdateParams is the Msg/UpdateParams request type to update all params at once.", + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/poktroll.proof.MsgUpdateParams" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/poktroll.proof.MsgUpdateParamsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/poktroll.service.Msg/AddService": { + "post": { + "tags": [ + "Msg" + ], + "operationId": "GithubCompoktNetworkpoktrollMsg_AddService", + "parameters": [ + { + "description": "MsgAddService defines a message for adding a new message to the network.\nServices can be added by any actor in the network making them truly\npermissionless.", + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/poktroll.service.MsgAddService" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/poktroll.service.MsgAddServiceResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/poktroll.service.Msg/UpdateParam": { + "post": { + "tags": [ + "Msg" + ], + "operationId": "GithubCompoktNetworkpoktrollMsg_UpdateParamMixin24", + "parameters": [ + { + "description": "MsgUpdateParam is the Msg/UpdateParam request type to update a single param.", + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/poktroll.service.MsgUpdateParam" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/poktroll.service.MsgUpdateParamResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/poktroll.service.Msg/UpdateParams": { + "post": { + "tags": [ + "Msg" + ], + "summary": "UpdateParams defines a (governance) operation for updating the module\nparameters. The authority defaults to the x/gov module account.", + "operationId": "GithubCompoktNetworkpoktrollMsg_UpdateParamsMixin24", + "parameters": [ + { + "description": "MsgUpdateParams is the Msg/UpdateParams request type.", + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/poktroll.service.MsgUpdateParams" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/poktroll.service.MsgUpdateParamsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/poktroll.session.Msg/UpdateParam": { + "post": { + "tags": [ + "Msg" + ], + "operationId": "GithubCompoktNetworkpoktrollMsg_UpdateParamMixin28", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/poktroll.session.MsgUpdateParam" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/poktroll.session.MsgUpdateParamResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/poktroll.session.Msg/UpdateParams": { + "post": { + "tags": [ + "Msg" + ], + "summary": "UpdateParams defines a (governance) operation for updating the module\nparameters. The authority defaults to the x/gov module account.", + "operationId": "GithubCompoktNetworkpoktrollMsg_UpdateParamsMixin28", + "parameters": [ + { + "description": "MsgUpdateParams is the Msg/UpdateParams request type.", + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/poktroll.session.MsgUpdateParams" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/poktroll.session.MsgUpdateParamsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/poktroll.shared.Msg/UpdateParam": { + "post": { + "tags": [ + "Msg" + ], + "operationId": "GithubCompoktNetworkpoktrollMsg_UpdateParamMixin35", + "parameters": [ + { + "description": "MsgUpdateParam is the Msg/UpdateParam request type to update a single param.", + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/poktroll.shared.MsgUpdateParam" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/poktroll.shared.MsgUpdateParamResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/poktroll.shared.Msg/UpdateParams": { + "post": { + "tags": [ + "Msg" + ], + "summary": "UpdateParams defines a (governance) operation for updating the module\nparameters. The authority defaults to the x/gov module account.", + "operationId": "GithubCompoktNetworkpoktrollMsg_UpdateParamsMixin35", + "parameters": [ + { + "description": "MsgUpdateParams is the Msg/UpdateParams request type.", + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/poktroll.shared.MsgUpdateParams" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/poktroll.shared.MsgUpdateParamsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/poktroll.supplier.Msg/StakeSupplier": { + "post": { + "tags": [ + "Msg" + ], + "operationId": "GithubCompoktNetworkpoktrollMsg_StakeSupplier", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/poktroll.supplier.MsgStakeSupplier" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/poktroll.supplier.MsgStakeSupplierResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/poktroll.supplier.Msg/UnstakeSupplier": { + "post": { + "tags": [ + "Msg" + ], + "operationId": "GithubCompoktNetworkpoktrollMsg_UnstakeSupplier", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/poktroll.supplier.MsgUnstakeSupplier" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/poktroll.supplier.MsgUnstakeSupplierResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/poktroll.supplier.Msg/UpdateParam": { + "post": { + "tags": [ + "Msg" + ], + "operationId": "GithubCompoktNetworkpoktrollMsg_UpdateParamMixin40", + "parameters": [ + { + "description": "MsgUpdateParam is the Msg/UpdateParam request type to update a single param.", + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/poktroll.supplier.MsgUpdateParam" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/poktroll.supplier.MsgUpdateParamResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/poktroll.supplier.Msg/UpdateParams": { + "post": { + "tags": [ + "Msg" + ], + "summary": "UpdateParams defines a (governance) operation for updating the module\nparameters. The authority defaults to the x/gov module account.", + "operationId": "GithubCompoktNetworkpoktrollMsg_UpdateParamsMixin40", + "parameters": [ + { + "description": "MsgUpdateParams is the Msg/UpdateParams request type.", + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/poktroll.supplier.MsgUpdateParams" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/poktroll.supplier.MsgUpdateParamsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/poktroll.tokenomics.Msg/UpdateParam": { + "post": { + "tags": [ + "Msg" + ], + "operationId": "GithubCompoktNetworkpoktrollMsg_UpdateParamMixin45", + "parameters": [ + { + "description": "MsgUpdateParam is the Msg/UpdateParam request type to update a single param.", + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/poktroll.tokenomics.MsgUpdateParam" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/poktroll.tokenomics.MsgUpdateParamResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/poktroll.tokenomics.Msg/UpdateParams": { + "post": { + "tags": [ + "Msg" + ], + "summary": "UpdateParams defines a (governance) operation for updating the module\nparameters. The authority defaults to the x/gov module account.", + "operationId": "GithubCompoktNetworkpoktrollMsg_UpdateParamsMixin45", + "parameters": [ + { + "description": "MsgUpdateParams is the Msg/UpdateParams request type to update all params at once.", + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/poktroll.tokenomics.MsgUpdateParams" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/poktroll.tokenomics.MsgUpdateParamsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/tendermint.abci.ABCI/ApplySnapshotChunk": { + "post": { + "tags": [ + "ABCI" + ], + "operationId": "CircuitABCI_ApplySnapshotChunk", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/tendermint.abci.RequestApplySnapshotChunk" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/tendermint.abci.ResponseApplySnapshotChunk" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/tendermint.abci.ABCI/CheckTx": { + "post": { + "tags": [ + "ABCI" + ], + "operationId": "CircuitABCI_CheckTx", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/tendermint.abci.RequestCheckTx" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/tendermint.abci.ResponseCheckTx" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/tendermint.abci.ABCI/Commit": { + "post": { + "tags": [ + "ABCI" + ], + "operationId": "CircuitABCI_Commit", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/tendermint.abci.RequestCommit" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/tendermint.abci.ResponseCommit" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/tendermint.abci.ABCI/Echo": { + "post": { + "tags": [ + "ABCI" + ], + "operationId": "CircuitABCI_Echo", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/tendermint.abci.RequestEcho" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/tendermint.abci.ResponseEcho" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/tendermint.abci.ABCI/ExtendVote": { + "post": { + "tags": [ + "ABCI" + ], + "operationId": "CircuitABCI_ExtendVote", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/tendermint.abci.RequestExtendVote" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/tendermint.abci.ResponseExtendVote" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/tendermint.abci.ABCI/FinalizeBlock": { + "post": { + "tags": [ + "ABCI" + ], + "operationId": "CircuitABCI_FinalizeBlock", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/tendermint.abci.RequestFinalizeBlock" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/tendermint.abci.ResponseFinalizeBlock" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/tendermint.abci.ABCI/Flush": { + "post": { + "tags": [ + "ABCI" + ], + "operationId": "CircuitABCI_Flush", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/tendermint.abci.RequestFlush" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/tendermint.abci.ResponseFlush" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/tendermint.abci.ABCI/Info": { + "post": { + "tags": [ + "ABCI" + ], + "operationId": "CircuitABCI_Info", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/tendermint.abci.RequestInfo" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/tendermint.abci.ResponseInfo" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/tendermint.abci.ABCI/InitChain": { + "post": { + "tags": [ + "ABCI" + ], + "operationId": "CircuitABCI_InitChain", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/tendermint.abci.RequestInitChain" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/tendermint.abci.ResponseInitChain" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/tendermint.abci.ABCI/ListSnapshots": { + "post": { + "tags": [ + "ABCI" + ], + "operationId": "CircuitABCI_ListSnapshots", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/tendermint.abci.RequestListSnapshots" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/tendermint.abci.ResponseListSnapshots" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/tendermint.abci.ABCI/LoadSnapshotChunk": { + "post": { + "tags": [ + "ABCI" + ], + "operationId": "CircuitABCI_LoadSnapshotChunk", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/tendermint.abci.RequestLoadSnapshotChunk" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/tendermint.abci.ResponseLoadSnapshotChunk" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/tendermint.abci.ABCI/OfferSnapshot": { + "post": { + "tags": [ + "ABCI" + ], + "operationId": "CircuitABCI_OfferSnapshot", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/tendermint.abci.RequestOfferSnapshot" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/tendermint.abci.ResponseOfferSnapshot" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/tendermint.abci.ABCI/PrepareProposal": { + "post": { + "tags": [ + "ABCI" + ], + "operationId": "CircuitABCI_PrepareProposal", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/tendermint.abci.RequestPrepareProposal" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/tendermint.abci.ResponsePrepareProposal" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/tendermint.abci.ABCI/ProcessProposal": { + "post": { + "tags": [ + "ABCI" + ], + "operationId": "CircuitABCI_ProcessProposal", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/tendermint.abci.RequestProcessProposal" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/tendermint.abci.ResponseProcessProposal" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/tendermint.abci.ABCI/Query": { + "post": { + "tags": [ + "ABCI" + ], + "operationId": "CircuitABCI_Query", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/tendermint.abci.RequestQuery" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/tendermint.abci.ResponseQuery" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + }, + "/tendermint.abci.ABCI/VerifyVoteExtension": { + "post": { + "tags": [ + "ABCI" + ], + "operationId": "CircuitABCI_VerifyVoteExtension", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/tendermint.abci.RequestVerifyVoteExtension" + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/tendermint.abci.ResponseVerifyVoteExtension" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + } + } + } + }, + "definitions": { + "cosmos.auth.v1beta1.AddressBytesToStringResponse": { + "description": "AddressBytesToStringResponse is the response type for AddressString rpc method.\n\nSince: cosmos-sdk 0.46", + "type": "object", + "properties": { + "address_string": { + "type": "string" + } + } + }, + "cosmos.auth.v1beta1.AddressStringToBytesResponse": { + "description": "AddressStringToBytesResponse is the response type for AddressBytes rpc method.\n\nSince: cosmos-sdk 0.46", + "type": "object", + "properties": { + "address_bytes": { + "type": "string", + "format": "byte" + } + } + }, + "cosmos.auth.v1beta1.BaseAccount": { + "description": "BaseAccount defines a base account type. It contains all the necessary fields\nfor basic account functionality. Any custom account type should extend this\ntype for additional functionality (e.g. vesting).", + "type": "object", + "properties": { + "account_number": { + "type": "string", + "format": "uint64" + }, + "address": { + "type": "string" + }, + "pub_key": { + "$ref": "#/definitions/google.protobuf.Any" + }, + "sequence": { + "type": "string", + "format": "uint64" + } + } + }, + "cosmos.auth.v1beta1.Bech32PrefixResponse": { + "description": "Bech32PrefixResponse is the response type for Bech32Prefix rpc method.\n\nSince: cosmos-sdk 0.46", + "type": "object", + "properties": { + "bech32_prefix": { + "type": "string" + } + } + }, + "cosmos.auth.v1beta1.MsgUpdateParams": { + "description": "MsgUpdateParams is the Msg/UpdateParams request type.\n\nSince: cosmos-sdk 0.47", + "type": "object", + "properties": { + "authority": { + "description": "authority is the address that controls the module (defaults to x/gov unless overwritten).", + "type": "string" + }, + "params": { + "description": "params defines the x/auth parameters to update.\n\nNOTE: All parameters must be supplied.", + "$ref": "#/definitions/cosmos.auth.v1beta1.Params" + } + } + }, + "cosmos.auth.v1beta1.MsgUpdateParamsResponse": { + "description": "MsgUpdateParamsResponse defines the response structure for executing a\nMsgUpdateParams message.\n\nSince: cosmos-sdk 0.47", + "type": "object" + }, + "cosmos.auth.v1beta1.Params": { + "description": "Params defines the parameters for the auth module.", + "type": "object", + "properties": { + "max_memo_characters": { + "type": "string", + "format": "uint64" + }, + "sig_verify_cost_ed25519": { + "type": "string", + "format": "uint64" + }, + "sig_verify_cost_secp256k1": { + "type": "string", + "format": "uint64" + }, + "tx_sig_limit": { + "type": "string", + "format": "uint64" + }, + "tx_size_cost_per_byte": { + "type": "string", + "format": "uint64" + } + } + }, + "cosmos.auth.v1beta1.QueryAccountAddressByIDResponse": { + "description": "Since: cosmos-sdk 0.46.2", + "type": "object", + "title": "QueryAccountAddressByIDResponse is the response type for AccountAddressByID rpc method", + "properties": { + "account_address": { + "type": "string" + } + } + }, + "cosmos.auth.v1beta1.QueryAccountInfoResponse": { + "description": "QueryAccountInfoResponse is the Query/AccountInfo response type.\n\nSince: cosmos-sdk 0.47", + "type": "object", + "properties": { + "info": { + "description": "info is the account info which is represented by BaseAccount.", + "$ref": "#/definitions/cosmos.auth.v1beta1.BaseAccount" + } + } + }, + "cosmos.auth.v1beta1.QueryAccountResponse": { + "description": "QueryAccountResponse is the response type for the Query/Account RPC method.", + "type": "object", + "properties": { + "account": { + "description": "account defines the account of the corresponding address.", + "$ref": "#/definitions/google.protobuf.Any" + } + } + }, + "cosmos.auth.v1beta1.QueryAccountsResponse": { + "description": "QueryAccountsResponse is the response type for the Query/Accounts RPC method.\n\nSince: cosmos-sdk 0.43", + "type": "object", + "properties": { + "accounts": { + "type": "array", + "title": "accounts are the existing accounts", + "items": { + "type": "object", + "$ref": "#/definitions/google.protobuf.Any" + } + }, + "pagination": { + "description": "pagination defines the pagination in the response.", + "$ref": "#/definitions/cosmos.base.query.v1beta1.PageResponse" + } + } + }, + "cosmos.auth.v1beta1.QueryModuleAccountByNameResponse": { + "description": "QueryModuleAccountByNameResponse is the response type for the Query/ModuleAccountByName RPC method.", + "type": "object", + "properties": { + "account": { + "$ref": "#/definitions/google.protobuf.Any" + } + } + }, + "cosmos.auth.v1beta1.QueryModuleAccountsResponse": { + "description": "QueryModuleAccountsResponse is the response type for the Query/ModuleAccounts RPC method.\n\nSince: cosmos-sdk 0.46", + "type": "object", + "properties": { + "accounts": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/google.protobuf.Any" + } + } + } + }, + "cosmos.auth.v1beta1.QueryParamsResponse": { + "description": "QueryParamsResponse is the response type for the Query/Params RPC method.", + "type": "object", + "properties": { + "params": { + "description": "params defines the parameters of the module.", + "$ref": "#/definitions/cosmos.auth.v1beta1.Params" + } + } + }, + "cosmos.authz.v1beta1.Grant": { + "description": "Grant gives permissions to execute\nthe provide method with expiration time.", + "type": "object", + "properties": { + "authorization": { + "$ref": "#/definitions/google.protobuf.Any" + }, + "expiration": { + "type": "string", + "format": "date-time", + "title": "time when the grant will expire and will be pruned. If null, then the grant\ndoesn't have a time expiration (other conditions in `authorization`\nmay apply to invalidate the grant)" + } + } + }, + "cosmos.authz.v1beta1.GrantAuthorization": { + "type": "object", + "title": "GrantAuthorization extends a grant with both the addresses of the grantee and granter.\nIt is used in genesis.proto and query.proto", + "properties": { + "authorization": { + "$ref": "#/definitions/google.protobuf.Any" + }, + "expiration": { + "type": "string", + "format": "date-time" + }, + "grantee": { + "type": "string" + }, + "granter": { + "type": "string" + } + } + }, + "cosmos.authz.v1beta1.MsgExec": { + "description": "MsgExec attempts to execute the provided messages using\nauthorizations granted to the grantee. Each message should have only\none signer corresponding to the granter of the authorization.", + "type": "object", + "properties": { + "grantee": { + "type": "string" + }, + "msgs": { + "description": "Execute Msg.\nThe x/authz will try to find a grant matching (msg.signers[0], grantee, MsgTypeURL(msg))\ntriple and validate it.", + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/google.protobuf.Any" + } + } + } + }, + "cosmos.authz.v1beta1.MsgExecResponse": { + "description": "MsgExecResponse defines the Msg/MsgExecResponse response type.", + "type": "object", + "properties": { + "results": { + "type": "array", + "items": { + "type": "string", + "format": "byte" + } + } + } + }, + "cosmos.authz.v1beta1.MsgGrant": { + "description": "MsgGrant is a request type for Grant method. It declares authorization to the grantee\non behalf of the granter with the provided expiration time.", + "type": "object", + "properties": { + "grant": { + "$ref": "#/definitions/cosmos.authz.v1beta1.Grant" + }, + "grantee": { + "type": "string" + }, + "granter": { + "type": "string" + } + } + }, + "cosmos.authz.v1beta1.MsgGrantResponse": { + "description": "MsgGrantResponse defines the Msg/MsgGrant response type.", + "type": "object" + }, + "cosmos.authz.v1beta1.MsgRevoke": { + "description": "MsgRevoke revokes any authorization with the provided sdk.Msg type on the\ngranter's account with that has been granted to the grantee.", + "type": "object", + "properties": { + "grantee": { + "type": "string" + }, + "granter": { + "type": "string" + }, + "msg_type_url": { + "type": "string" + } + } + }, + "cosmos.authz.v1beta1.MsgRevokeResponse": { + "description": "MsgRevokeResponse defines the Msg/MsgRevokeResponse response type.", + "type": "object" + }, + "cosmos.authz.v1beta1.QueryGranteeGrantsResponse": { + "description": "QueryGranteeGrantsResponse is the response type for the Query/GranteeGrants RPC method.", + "type": "object", + "properties": { + "grants": { + "description": "grants is a list of grants granted to the grantee.", + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/cosmos.authz.v1beta1.GrantAuthorization" + } + }, + "pagination": { + "description": "pagination defines an pagination for the response.", + "$ref": "#/definitions/cosmos.base.query.v1beta1.PageResponse" + } + } + }, + "cosmos.authz.v1beta1.QueryGranterGrantsResponse": { + "description": "QueryGranterGrantsResponse is the response type for the Query/GranterGrants RPC method.", + "type": "object", + "properties": { + "grants": { + "description": "grants is a list of grants granted by the granter.", + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/cosmos.authz.v1beta1.GrantAuthorization" + } + }, + "pagination": { + "description": "pagination defines an pagination for the response.", + "$ref": "#/definitions/cosmos.base.query.v1beta1.PageResponse" + } + } + }, + "cosmos.authz.v1beta1.QueryGrantsResponse": { + "description": "QueryGrantsResponse is the response type for the Query/Authorizations RPC method.", + "type": "object", + "properties": { + "grants": { + "description": "authorizations is a list of grants granted for grantee by granter.", + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/cosmos.authz.v1beta1.Grant" + } + }, + "pagination": { + "description": "pagination defines an pagination for the response.", + "$ref": "#/definitions/cosmos.base.query.v1beta1.PageResponse" + } + } + }, + "cosmos.autocli.v1.AppOptionsRequest": { + "description": "AppOptionsRequest is the RemoteInfoService/AppOptions request type.", + "type": "object" + }, + "cosmos.autocli.v1.AppOptionsResponse": { + "description": "AppOptionsResponse is the RemoteInfoService/AppOptions response type.", + "type": "object", + "properties": { + "module_options": { + "description": "module_options is a map of module name to autocli module options.", + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/cosmos.autocli.v1.ModuleOptions" + } + } + } + }, + "cosmos.autocli.v1.FlagOptions": { + "description": "FlagOptions are options for flags generated from rpc request fields.\nBy default, all request fields are configured as flags based on the\nkebab-case name of the field. Fields can be turned into positional arguments\ninstead by using RpcCommandOptions.positional_args.", + "type": "object", + "properties": { + "default_value": { + "description": "default_value is the default value as text.", + "type": "string" + }, + "deprecated": { + "description": "deprecated is the usage text to show if this flag is deprecated.", + "type": "string" + }, + "hidden": { + "type": "boolean", + "title": "hidden hides the flag from help/usage text" + }, + "name": { + "description": "name is an alternate name to use for the field flag.", + "type": "string" + }, + "shorthand": { + "description": "shorthand is a one-letter abbreviated flag.", + "type": "string" + }, + "shorthand_deprecated": { + "description": "shorthand_deprecated is the usage text to show if the shorthand of this flag is deprecated.", + "type": "string" + }, + "usage": { + "description": "usage is the help message.", + "type": "string" + } + } + }, + "cosmos.autocli.v1.ModuleOptions": { + "description": "ModuleOptions describes the CLI options for a Cosmos SDK module.", + "type": "object", + "properties": { + "query": { + "description": "query describes the queries commands for the module.", + "$ref": "#/definitions/cosmos.autocli.v1.ServiceCommandDescriptor" + }, + "tx": { + "description": "tx describes the tx commands for the module.", + "$ref": "#/definitions/cosmos.autocli.v1.ServiceCommandDescriptor" + } + } + }, + "cosmos.autocli.v1.PositionalArgDescriptor": { + "description": "PositionalArgDescriptor describes a positional argument.", + "type": "object", + "properties": { + "proto_field": { + "description": "proto_field specifies the proto field to use as the positional arg. Any\nfields used as positional args will not have a flag generated.", + "type": "string" + }, + "varargs": { + "description": "varargs makes a positional parameter a varargs parameter. This can only be\napplied to last positional parameter and the proto_field must a repeated\nfield.", + "type": "boolean" + } + } + }, + "cosmos.autocli.v1.RpcCommandOptions": { + "description": "RpcCommandOptions specifies options for commands generated from protobuf\nrpc methods.", + "type": "object", + "properties": { + "alias": { + "description": "alias is an array of aliases that can be used instead of the first word in Use.", + "type": "array", + "items": { + "type": "string" + } + }, + "deprecated": { + "description": "deprecated defines, if this command is deprecated and should print this string when used.", + "type": "string" + }, + "example": { + "description": "example is examples of how to use the command.", + "type": "string" + }, + "flag_options": { + "description": "flag_options are options for flags generated from rpc request fields.\nBy default all request fields are configured as flags. They can\nalso be configured as positional args instead using positional_args.", + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/cosmos.autocli.v1.FlagOptions" + } + }, + "long": { + "description": "long is the long message shown in the 'help ' output.", + "type": "string" + }, + "positional_args": { + "description": "positional_args specifies positional arguments for the command.", + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/cosmos.autocli.v1.PositionalArgDescriptor" + } + }, + "rpc_method": { + "description": "rpc_method is short name of the protobuf rpc method that this command is\ngenerated from.", + "type": "string" + }, + "short": { + "description": "short is the short description shown in the 'help' output.", + "type": "string" + }, + "skip": { + "description": "skip specifies whether to skip this rpc method when generating commands.", + "type": "boolean" + }, + "suggest_for": { + "description": "suggest_for is an array of command names for which this command will be suggested -\nsimilar to aliases but only suggests.", + "type": "array", + "items": { + "type": "string" + } + }, + "use": { + "description": "use is the one-line usage method. It also allows specifying an alternate\nname for the command as the first word of the usage text.\n\nBy default the name of an rpc command is the kebab-case short name of the\nrpc method.", + "type": "string" + }, + "version": { + "description": "version defines the version for this command. If this value is non-empty and the command does not\ndefine a \"version\" flag, a \"version\" boolean flag will be added to the command and, if specified,\nwill print content of the \"Version\" variable. A shorthand \"v\" flag will also be added if the\ncommand does not define one.", + "type": "string" + } + } + }, + "cosmos.autocli.v1.ServiceCommandDescriptor": { + "description": "ServiceCommandDescriptor describes a CLI command based on a protobuf service.", + "type": "object", + "properties": { + "rpc_command_options": { + "description": "rpc_command_options are options for commands generated from rpc methods.\nIf no options are specified for a given rpc method on the service, a\ncommand will be generated for that method with the default options.", + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/cosmos.autocli.v1.RpcCommandOptions" + } + }, + "service": { + "description": "service is the fully qualified name of the protobuf service to build\nthe command from. It can be left empty if sub_commands are used instead\nwhich may be the case if a module provides multiple tx and/or query services.", + "type": "string" + }, + "sub_commands": { + "description": "sub_commands is a map of optional sub-commands for this command based on\ndifferent protobuf services. The map key is used as the name of the\nsub-command.", + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/cosmos.autocli.v1.ServiceCommandDescriptor" + } + } + } + }, + "cosmos.bank.v1beta1.DenomOwner": { + "description": "DenomOwner defines structure representing an account that owns or holds a\nparticular denominated token. It contains the account address and account\nbalance of the denominated token.\n\nSince: cosmos-sdk 0.46", + "type": "object", + "properties": { + "address": { + "description": "address defines the address that owns a particular denomination.", + "type": "string" + }, + "balance": { + "description": "balance is the balance of the denominated coin for an account.", + "$ref": "#/definitions/cosmos.base.v1beta1.Coin" + } + } + }, + "cosmos.bank.v1beta1.DenomUnit": { + "description": "DenomUnit represents a struct that describes a given\ndenomination unit of the basic token.", + "type": "object", + "properties": { + "aliases": { + "type": "array", + "title": "aliases is a list of string aliases for the given denom", + "items": { + "type": "string" + } + }, + "denom": { + "description": "denom represents the string name of the given denom unit (e.g uatom).", + "type": "string" + }, + "exponent": { + "description": "exponent represents power of 10 exponent that one must\nraise the base_denom to in order to equal the given DenomUnit's denom\n1 denom = 10^exponent base_denom\n(e.g. with a base_denom of uatom, one can create a DenomUnit of 'atom' with\nexponent = 6, thus: 1 atom = 10^6 uatom).", + "type": "integer", + "format": "int64" + } + } + }, + "cosmos.bank.v1beta1.Input": { + "description": "Input models transaction input.", + "type": "object", + "properties": { + "address": { + "type": "string" + }, + "coins": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/cosmos.base.v1beta1.Coin" + } + } + } + }, + "cosmos.bank.v1beta1.Metadata": { + "description": "Metadata represents a struct that describes\na basic token.", + "type": "object", + "properties": { + "base": { + "description": "base represents the base denom (should be the DenomUnit with exponent = 0).", + "type": "string" + }, + "denom_units": { + "type": "array", + "title": "denom_units represents the list of DenomUnit's for a given coin", + "items": { + "type": "object", + "$ref": "#/definitions/cosmos.bank.v1beta1.DenomUnit" + } + }, + "description": { + "type": "string" + }, + "display": { + "description": "display indicates the suggested denom that should be\ndisplayed in clients.", + "type": "string" + }, + "name": { + "description": "Since: cosmos-sdk 0.43", + "type": "string", + "title": "name defines the name of the token (eg: Cosmos Atom)" + }, + "symbol": { + "description": "symbol is the token symbol usually shown on exchanges (eg: ATOM). This can\nbe the same as the display.\n\nSince: cosmos-sdk 0.43", + "type": "string" + }, + "uri": { + "description": "URI to a document (on or off-chain) that contains additional information. Optional.\n\nSince: cosmos-sdk 0.46", + "type": "string" + }, + "uri_hash": { + "description": "URIHash is a sha256 hash of a document pointed by URI. It's used to verify that\nthe document didn't change. Optional.\n\nSince: cosmos-sdk 0.46", + "type": "string" + } + } + }, + "cosmos.bank.v1beta1.MsgMultiSend": { + "description": "MsgMultiSend represents an arbitrary multi-in, multi-out send message.", + "type": "object", + "properties": { + "inputs": { + "description": "Inputs, despite being `repeated`, only allows one sender input. This is\nchecked in MsgMultiSend's ValidateBasic.", + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/cosmos.bank.v1beta1.Input" + } + }, + "outputs": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/cosmos.bank.v1beta1.Output" + } + } + } + }, + "cosmos.bank.v1beta1.MsgMultiSendResponse": { + "description": "MsgMultiSendResponse defines the Msg/MultiSend response type.", + "type": "object" + }, + "cosmos.bank.v1beta1.MsgSend": { + "description": "MsgSend represents a message to send coins from one account to another.", + "type": "object", + "properties": { + "amount": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/cosmos.base.v1beta1.Coin" + } + }, + "from_address": { + "type": "string" + }, + "to_address": { + "type": "string" + } + } + }, + "cosmos.bank.v1beta1.MsgSendResponse": { + "description": "MsgSendResponse defines the Msg/Send response type.", + "type": "object" + }, + "cosmos.bank.v1beta1.MsgSetSendEnabled": { + "description": "MsgSetSendEnabled is the Msg/SetSendEnabled request type.\n\nOnly entries to add/update/delete need to be included.\nExisting SendEnabled entries that are not included in this\nmessage are left unchanged.\n\nSince: cosmos-sdk 0.47", + "type": "object", + "properties": { + "authority": { + "description": "authority is the address that controls the module.", + "type": "string" + }, + "send_enabled": { + "description": "send_enabled is the list of entries to add or update.", + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/cosmos.bank.v1beta1.SendEnabled" + } + }, + "use_default_for": { + "description": "use_default_for is a list of denoms that should use the params.default_send_enabled value.\nDenoms listed here will have their SendEnabled entries deleted.\nIf a denom is included that doesn't have a SendEnabled entry,\nit will be ignored.", + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "cosmos.bank.v1beta1.MsgSetSendEnabledResponse": { + "description": "MsgSetSendEnabledResponse defines the Msg/SetSendEnabled response type.\n\nSince: cosmos-sdk 0.47", + "type": "object" + }, + "cosmos.bank.v1beta1.MsgUpdateParams": { + "description": "MsgUpdateParams is the Msg/UpdateParams request type.\n\nSince: cosmos-sdk 0.47", + "type": "object", + "properties": { + "authority": { + "description": "authority is the address that controls the module (defaults to x/gov unless overwritten).", + "type": "string" + }, + "params": { + "description": "params defines the x/bank parameters to update.\n\nNOTE: All parameters must be supplied.", + "$ref": "#/definitions/cosmos.bank.v1beta1.Params" + } + } + }, + "cosmos.bank.v1beta1.MsgUpdateParamsResponse": { + "description": "MsgUpdateParamsResponse defines the response structure for executing a\nMsgUpdateParams message.\n\nSince: cosmos-sdk 0.47", + "type": "object" + }, + "cosmos.bank.v1beta1.Output": { + "description": "Output models transaction outputs.", + "type": "object", + "properties": { + "address": { + "type": "string" + }, + "coins": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/cosmos.base.v1beta1.Coin" + } + } + } + }, + "cosmos.bank.v1beta1.Params": { + "description": "Params defines the parameters for the bank module.", + "type": "object", + "properties": { + "default_send_enabled": { + "type": "boolean" + }, + "send_enabled": { + "description": "Deprecated: Use of SendEnabled in params is deprecated.\nFor genesis, use the newly added send_enabled field in the genesis object.\nStorage, lookup, and manipulation of this information is now in the keeper.\n\nAs of cosmos-sdk 0.47, this only exists for backwards compatibility of genesis files.", + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/cosmos.bank.v1beta1.SendEnabled" + } + } + } + }, + "cosmos.bank.v1beta1.QueryAllBalancesResponse": { + "description": "QueryAllBalancesResponse is the response type for the Query/AllBalances RPC\nmethod.", + "type": "object", + "properties": { + "balances": { + "description": "balances is the balances of all the coins.", + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/cosmos.base.v1beta1.Coin" + } + }, + "pagination": { + "description": "pagination defines the pagination in the response.", + "$ref": "#/definitions/cosmos.base.query.v1beta1.PageResponse" + } + } + }, + "cosmos.bank.v1beta1.QueryBalanceResponse": { + "description": "QueryBalanceResponse is the response type for the Query/Balance RPC method.", + "type": "object", + "properties": { + "balance": { + "description": "balance is the balance of the coin.", + "$ref": "#/definitions/cosmos.base.v1beta1.Coin" + } + } + }, + "cosmos.bank.v1beta1.QueryDenomMetadataByQueryStringResponse": { + "description": "QueryDenomMetadataByQueryStringResponse is the response type for the Query/DenomMetadata RPC\nmethod. Identical with QueryDenomMetadataResponse but receives denom as query string in request.", + "type": "object", + "properties": { + "metadata": { + "description": "metadata describes and provides all the client information for the requested token.", + "$ref": "#/definitions/cosmos.bank.v1beta1.Metadata" + } + } + }, + "cosmos.bank.v1beta1.QueryDenomMetadataResponse": { + "description": "QueryDenomMetadataResponse is the response type for the Query/DenomMetadata RPC\nmethod.", + "type": "object", + "properties": { + "metadata": { + "description": "metadata describes and provides all the client information for the requested token.", + "$ref": "#/definitions/cosmos.bank.v1beta1.Metadata" + } + } + }, + "cosmos.bank.v1beta1.QueryDenomOwnersByQueryResponse": { + "description": "QueryDenomOwnersByQueryResponse defines the RPC response of a DenomOwnersByQuery RPC query.\n\nSince: cosmos-sdk 0.50.3", + "type": "object", + "properties": { + "denom_owners": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/cosmos.bank.v1beta1.DenomOwner" + } + }, + "pagination": { + "description": "pagination defines the pagination in the response.", + "$ref": "#/definitions/cosmos.base.query.v1beta1.PageResponse" + } + } + }, + "cosmos.bank.v1beta1.QueryDenomOwnersResponse": { + "description": "QueryDenomOwnersResponse defines the RPC response of a DenomOwners RPC query.\n\nSince: cosmos-sdk 0.46", + "type": "object", + "properties": { + "denom_owners": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/cosmos.bank.v1beta1.DenomOwner" + } + }, + "pagination": { + "description": "pagination defines the pagination in the response.", + "$ref": "#/definitions/cosmos.base.query.v1beta1.PageResponse" + } + } + }, + "cosmos.bank.v1beta1.QueryDenomsMetadataResponse": { + "description": "QueryDenomsMetadataResponse is the response type for the Query/DenomsMetadata RPC\nmethod.", + "type": "object", + "properties": { + "metadatas": { + "description": "metadata provides the client information for all the registered tokens.", + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/cosmos.bank.v1beta1.Metadata" + } + }, + "pagination": { + "description": "pagination defines the pagination in the response.", + "$ref": "#/definitions/cosmos.base.query.v1beta1.PageResponse" + } + } + }, + "cosmos.bank.v1beta1.QueryParamsResponse": { + "description": "QueryParamsResponse defines the response type for querying x/bank parameters.", + "type": "object", + "properties": { + "params": { + "description": "params provides the parameters of the bank module.", + "$ref": "#/definitions/cosmos.bank.v1beta1.Params" + } + } + }, + "cosmos.bank.v1beta1.QuerySendEnabledResponse": { + "description": "QuerySendEnabledResponse defines the RPC response of a SendEnable query.\n\nSince: cosmos-sdk 0.47", + "type": "object", + "properties": { + "pagination": { + "description": "pagination defines the pagination in the response. This field is only\npopulated if the denoms field in the request is empty.", + "$ref": "#/definitions/cosmos.base.query.v1beta1.PageResponse" + }, + "send_enabled": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/cosmos.bank.v1beta1.SendEnabled" + } + } + } + }, + "cosmos.bank.v1beta1.QuerySpendableBalanceByDenomResponse": { + "description": "QuerySpendableBalanceByDenomResponse defines the gRPC response structure for\nquerying an account's spendable balance for a specific denom.\n\nSince: cosmos-sdk 0.47", + "type": "object", + "properties": { + "balance": { + "description": "balance is the balance of the coin.", + "$ref": "#/definitions/cosmos.base.v1beta1.Coin" + } + } + }, + "cosmos.bank.v1beta1.QuerySpendableBalancesResponse": { + "description": "QuerySpendableBalancesResponse defines the gRPC response structure for querying\nan account's spendable balances.\n\nSince: cosmos-sdk 0.46", + "type": "object", + "properties": { + "balances": { + "description": "balances is the spendable balances of all the coins.", + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/cosmos.base.v1beta1.Coin" + } + }, + "pagination": { + "description": "pagination defines the pagination in the response.", + "$ref": "#/definitions/cosmos.base.query.v1beta1.PageResponse" + } + } + }, + "cosmos.bank.v1beta1.QuerySupplyOfResponse": { + "description": "QuerySupplyOfResponse is the response type for the Query/SupplyOf RPC method.", + "type": "object", + "properties": { + "amount": { + "description": "amount is the supply of the coin.", + "$ref": "#/definitions/cosmos.base.v1beta1.Coin" + } + } + }, + "cosmos.bank.v1beta1.QueryTotalSupplyResponse": { + "type": "object", + "title": "QueryTotalSupplyResponse is the response type for the Query/TotalSupply RPC\nmethod", + "properties": { + "pagination": { + "description": "pagination defines the pagination in the response.\n\nSince: cosmos-sdk 0.43", + "$ref": "#/definitions/cosmos.base.query.v1beta1.PageResponse" + }, + "supply": { + "type": "array", + "title": "supply is the supply of the coins", + "items": { + "type": "object", + "$ref": "#/definitions/cosmos.base.v1beta1.Coin" + } + } + } + }, + "cosmos.bank.v1beta1.SendEnabled": { + "description": "SendEnabled maps coin denom to a send_enabled status (whether a denom is\nsendable).", + "type": "object", + "properties": { + "denom": { + "type": "string" + }, + "enabled": { + "type": "boolean" + } + } + }, + "cosmos.base.abci.v1beta1.ABCIMessageLog": { + "description": "ABCIMessageLog defines a structure containing an indexed tx ABCI message log.", + "type": "object", + "properties": { + "events": { + "description": "Events contains a slice of Event objects that were emitted during some\nexecution.", + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/cosmos.base.abci.v1beta1.StringEvent" + } + }, + "log": { + "type": "string" + }, + "msg_index": { + "type": "integer", + "format": "int64" + } + } + }, + "cosmos.base.abci.v1beta1.Attribute": { + "description": "Attribute defines an attribute wrapper where the key and value are\nstrings instead of raw bytes.", + "type": "object", + "properties": { + "key": { + "type": "string" + }, + "value": { + "type": "string" + } + } + }, + "cosmos.base.abci.v1beta1.GasInfo": { + "description": "GasInfo defines tx execution gas context.", + "type": "object", + "properties": { + "gas_used": { + "description": "GasUsed is the amount of gas actually consumed.", + "type": "string", + "format": "uint64" + }, + "gas_wanted": { + "description": "GasWanted is the maximum units of work we allow this tx to perform.", + "type": "string", + "format": "uint64" + } + } + }, + "cosmos.base.abci.v1beta1.Result": { + "description": "Result is the union of ResponseFormat and ResponseCheckTx.", + "type": "object", + "properties": { + "data": { + "description": "Data is any data returned from message or handler execution. It MUST be\nlength prefixed in order to separate data from multiple message executions.\nDeprecated. This field is still populated, but prefer msg_response instead\nbecause it also contains the Msg response typeURL.", + "type": "string", + "format": "byte" + }, + "events": { + "description": "Events contains a slice of Event objects that were emitted during message\nor handler execution.", + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/tendermint.abci.Event" + } + }, + "log": { + "description": "Log contains the log information from message or handler execution.", + "type": "string" + }, + "msg_responses": { + "description": "msg_responses contains the Msg handler responses type packed in Anys.\n\nSince: cosmos-sdk 0.46", + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/google.protobuf.Any" + } + } + } + }, + "cosmos.base.abci.v1beta1.StringEvent": { + "description": "StringEvent defines en Event object wrapper where all the attributes\ncontain key/value pairs that are strings instead of raw bytes.", + "type": "object", + "properties": { + "attributes": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/cosmos.base.abci.v1beta1.Attribute" + } + }, + "type": { + "type": "string" + } + } + }, + "cosmos.base.abci.v1beta1.TxResponse": { + "description": "TxResponse defines a structure containing relevant tx data and metadata. The\ntags are stringified and the log is JSON decoded.", + "type": "object", + "properties": { + "code": { + "description": "Response code.", + "type": "integer", + "format": "int64" + }, + "codespace": { + "type": "string", + "title": "Namespace for the Code" + }, + "data": { + "description": "Result bytes, if any.", + "type": "string" + }, + "events": { + "description": "Events defines all the events emitted by processing a transaction. Note,\nthese events include those emitted by processing all the messages and those\nemitted from the ante. Whereas Logs contains the events, with\nadditional metadata, emitted only by processing the messages.\n\nSince: cosmos-sdk 0.42.11, 0.44.5, 0.45", + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/tendermint.abci.Event" + } + }, + "gas_used": { + "description": "Amount of gas consumed by transaction.", + "type": "string", + "format": "int64" + }, + "gas_wanted": { + "description": "Amount of gas requested for transaction.", + "type": "string", + "format": "int64" + }, + "height": { + "type": "string", + "format": "int64", + "title": "The block height" + }, + "info": { + "description": "Additional information. May be non-deterministic.", + "type": "string" + }, + "logs": { + "description": "The output of the application's logger (typed). May be non-deterministic.", + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/cosmos.base.abci.v1beta1.ABCIMessageLog" + } + }, + "raw_log": { + "description": "The output of the application's logger (raw string). May be\nnon-deterministic.", + "type": "string" + }, + "timestamp": { + "description": "Time of the previous block. For heights > 1, it's the weighted median of\nthe timestamps of the valid votes in the block.LastCommit. For height == 1,\nit's genesis time.", + "type": "string" + }, + "tx": { + "description": "The request transaction bytes.", + "$ref": "#/definitions/google.protobuf.Any" + }, + "txhash": { + "description": "The transaction hash.", + "type": "string" + } + } + }, + "cosmos.base.node.v1beta1.ConfigResponse": { + "description": "ConfigResponse defines the response structure for the Config gRPC query.", + "type": "object", + "properties": { + "halt_height": { + "type": "string", + "format": "uint64" + }, + "minimum_gas_price": { + "type": "string" + }, + "pruning_interval": { + "type": "string" + }, + "pruning_keep_recent": { + "type": "string" + } + } + }, + "cosmos.base.node.v1beta1.StatusResponse": { + "description": "StateResponse defines the response structure for the status of a node.", + "type": "object", + "properties": { + "app_hash": { + "type": "string", + "format": "byte", + "title": "app hash of the current block" + }, + "earliest_store_height": { + "type": "string", + "format": "uint64", + "title": "earliest block height available in the store" + }, + "height": { + "type": "string", + "format": "uint64", + "title": "current block height" + }, + "timestamp": { + "type": "string", + "format": "date-time", + "title": "block height timestamp" + }, + "validator_hash": { + "type": "string", + "format": "byte", + "title": "validator hash provided by the consensus header" + } + } + }, + "cosmos.base.query.v1beta1.PageRequest": { + "description": "message SomeRequest {\n Foo some_parameter = 1;\n PageRequest pagination = 2;\n }", + "type": "object", + "title": "PageRequest is to be embedded in gRPC request messages for efficient\npagination. Ex:", + "properties": { + "count_total": { + "description": "count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.", + "type": "boolean" + }, + "key": { + "description": "key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.", + "type": "string", + "format": "byte" + }, + "limit": { + "description": "limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.", + "type": "string", + "format": "uint64" + }, + "offset": { + "description": "offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.", + "type": "string", + "format": "uint64" + }, + "reverse": { + "description": "reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43", + "type": "boolean" + } + } + }, + "cosmos.base.query.v1beta1.PageResponse": { + "description": "PageResponse is to be embedded in gRPC response messages where the\ncorresponding request message has used PageRequest.\n\n message SomeResponse {\n repeated Bar results = 1;\n PageResponse page = 2;\n }", + "type": "object", + "properties": { + "next_key": { + "description": "next_key is the key to be passed to PageRequest.key to\nquery the next page most efficiently. It will be empty if\nthere are no more results.", + "type": "string", + "format": "byte" + }, + "total": { + "type": "string", + "format": "uint64", + "title": "total is total number of results available if PageRequest.count_total\nwas set, its value is undefined otherwise" + } + } + }, + "cosmos.base.reflection.v1beta1.ListAllInterfacesResponse": { + "description": "ListAllInterfacesResponse is the response type of the ListAllInterfaces RPC.", + "type": "object", + "properties": { + "interface_names": { + "description": "interface_names is an array of all the registered interfaces.", + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "cosmos.base.reflection.v1beta1.ListImplementationsResponse": { + "description": "ListImplementationsResponse is the response type of the ListImplementations\nRPC.", + "type": "object", + "properties": { + "implementation_message_names": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "cosmos.base.reflection.v2alpha1.AuthnDescriptor": { + "type": "object", + "title": "AuthnDescriptor provides information on how to sign transactions without relying\non the online RPCs GetTxMetadata and CombineUnsignedTxAndSignatures", + "properties": { + "sign_modes": { + "type": "array", + "title": "sign_modes defines the supported signature algorithm", + "items": { + "type": "object", + "$ref": "#/definitions/cosmos.base.reflection.v2alpha1.SigningModeDescriptor" + } + } + } + }, + "cosmos.base.reflection.v2alpha1.ChainDescriptor": { + "type": "object", + "title": "ChainDescriptor describes chain information of the application", + "properties": { + "id": { + "type": "string", + "title": "id is the chain id" + } + } + }, + "cosmos.base.reflection.v2alpha1.CodecDescriptor": { + "type": "object", + "title": "CodecDescriptor describes the registered interfaces and provides metadata information on the types", + "properties": { + "interfaces": { + "type": "array", + "title": "interfaces is a list of the registerted interfaces descriptors", + "items": { + "type": "object", + "$ref": "#/definitions/cosmos.base.reflection.v2alpha1.InterfaceDescriptor" + } + } + } + }, + "cosmos.base.reflection.v2alpha1.ConfigurationDescriptor": { + "type": "object", + "title": "ConfigurationDescriptor contains metadata information on the sdk.Config", + "properties": { + "bech32_account_address_prefix": { + "type": "string", + "title": "bech32_account_address_prefix is the account address prefix" + } + } + }, + "cosmos.base.reflection.v2alpha1.GetAuthnDescriptorResponse": { + "type": "object", + "title": "GetAuthnDescriptorResponse is the response returned by the GetAuthnDescriptor RPC", + "properties": { + "authn": { + "title": "authn describes how to authenticate to the application when sending transactions", + "$ref": "#/definitions/cosmos.base.reflection.v2alpha1.AuthnDescriptor" + } + } + }, + "cosmos.base.reflection.v2alpha1.GetChainDescriptorResponse": { + "type": "object", + "title": "GetChainDescriptorResponse is the response returned by the GetChainDescriptor RPC", + "properties": { + "chain": { + "title": "chain describes application chain information", + "$ref": "#/definitions/cosmos.base.reflection.v2alpha1.ChainDescriptor" + } + } + }, + "cosmos.base.reflection.v2alpha1.GetCodecDescriptorResponse": { + "type": "object", + "title": "GetCodecDescriptorResponse is the response returned by the GetCodecDescriptor RPC", + "properties": { + "codec": { + "title": "codec describes the application codec such as registered interfaces and implementations", + "$ref": "#/definitions/cosmos.base.reflection.v2alpha1.CodecDescriptor" + } + } + }, + "cosmos.base.reflection.v2alpha1.GetConfigurationDescriptorResponse": { + "type": "object", + "title": "GetConfigurationDescriptorResponse is the response returned by the GetConfigurationDescriptor RPC", + "properties": { + "config": { + "title": "config describes the application's sdk.Config", + "$ref": "#/definitions/cosmos.base.reflection.v2alpha1.ConfigurationDescriptor" + } + } + }, + "cosmos.base.reflection.v2alpha1.GetQueryServicesDescriptorResponse": { + "type": "object", + "title": "GetQueryServicesDescriptorResponse is the response returned by the GetQueryServicesDescriptor RPC", + "properties": { + "queries": { + "title": "queries provides information on the available queryable services", + "$ref": "#/definitions/cosmos.base.reflection.v2alpha1.QueryServicesDescriptor" + } + } + }, + "cosmos.base.reflection.v2alpha1.GetTxDescriptorResponse": { + "type": "object", + "title": "GetTxDescriptorResponse is the response returned by the GetTxDescriptor RPC", + "properties": { + "tx": { + "title": "tx provides information on msgs that can be forwarded to the application\nalongside the accepted transaction protobuf type", + "$ref": "#/definitions/cosmos.base.reflection.v2alpha1.TxDescriptor" + } + } + }, + "cosmos.base.reflection.v2alpha1.InterfaceAcceptingMessageDescriptor": { + "type": "object", + "title": "InterfaceAcceptingMessageDescriptor describes a protobuf message which contains\nan interface represented as a google.protobuf.Any", + "properties": { + "field_descriptor_names": { + "type": "array", + "title": "field_descriptor_names is a list of the protobuf name (not fullname) of the field\nwhich contains the interface as google.protobuf.Any (the interface is the same, but\nit can be in multiple fields of the same proto message)", + "items": { + "type": "string" + } + }, + "fullname": { + "type": "string", + "title": "fullname is the protobuf fullname of the type containing the interface" + } + } + }, + "cosmos.base.reflection.v2alpha1.InterfaceDescriptor": { + "type": "object", + "title": "InterfaceDescriptor describes the implementation of an interface", + "properties": { + "fullname": { + "type": "string", + "title": "fullname is the name of the interface" + }, + "interface_accepting_messages": { + "type": "array", + "title": "interface_accepting_messages contains information regarding the proto messages which contain the interface as\ngoogle.protobuf.Any field", + "items": { + "type": "object", + "$ref": "#/definitions/cosmos.base.reflection.v2alpha1.InterfaceAcceptingMessageDescriptor" + } + }, + "interface_implementers": { + "type": "array", + "title": "interface_implementers is a list of the descriptors of the interface implementers", + "items": { + "type": "object", + "$ref": "#/definitions/cosmos.base.reflection.v2alpha1.InterfaceImplementerDescriptor" + } + } + } + }, + "cosmos.base.reflection.v2alpha1.InterfaceImplementerDescriptor": { + "type": "object", + "title": "InterfaceImplementerDescriptor describes an interface implementer", + "properties": { + "fullname": { + "type": "string", + "title": "fullname is the protobuf queryable name of the interface implementer" + }, + "type_url": { + "type": "string", + "title": "type_url defines the type URL used when marshalling the type as any\nthis is required so we can provide type safe google.protobuf.Any marshalling and\nunmarshalling, making sure that we don't accept just 'any' type\nin our interface fields" + } + } + }, + "cosmos.base.reflection.v2alpha1.MsgDescriptor": { + "type": "object", + "title": "MsgDescriptor describes a cosmos-sdk message that can be delivered with a transaction", + "properties": { + "msg_type_url": { + "description": "msg_type_url contains the TypeURL of a sdk.Msg.", + "type": "string" + } + } + }, + "cosmos.base.reflection.v2alpha1.QueryMethodDescriptor": { + "type": "object", + "title": "QueryMethodDescriptor describes a queryable method of a query service\nno other info is provided beside method name and tendermint queryable path\nbecause it would be redundant with the grpc reflection service", + "properties": { + "full_query_path": { + "type": "string", + "title": "full_query_path is the path that can be used to query\nthis method via tendermint abci.Query" + }, + "name": { + "type": "string", + "title": "name is the protobuf name (not fullname) of the method" + } + } + }, + "cosmos.base.reflection.v2alpha1.QueryServiceDescriptor": { + "type": "object", + "title": "QueryServiceDescriptor describes a cosmos-sdk queryable service", + "properties": { + "fullname": { + "type": "string", + "title": "fullname is the protobuf fullname of the service descriptor" + }, + "is_module": { + "type": "boolean", + "title": "is_module describes if this service is actually exposed by an application's module" + }, + "methods": { + "type": "array", + "title": "methods provides a list of query service methods", + "items": { + "type": "object", + "$ref": "#/definitions/cosmos.base.reflection.v2alpha1.QueryMethodDescriptor" + } + } + } + }, + "cosmos.base.reflection.v2alpha1.QueryServicesDescriptor": { + "type": "object", + "title": "QueryServicesDescriptor contains the list of cosmos-sdk queriable services", + "properties": { + "query_services": { + "type": "array", + "title": "query_services is a list of cosmos-sdk QueryServiceDescriptor", + "items": { + "type": "object", + "$ref": "#/definitions/cosmos.base.reflection.v2alpha1.QueryServiceDescriptor" + } + } + } + }, + "cosmos.base.reflection.v2alpha1.SigningModeDescriptor": { + "type": "object", + "title": "SigningModeDescriptor provides information on a signing flow of the application\nNOTE(fdymylja): here we could go as far as providing an entire flow on how\nto sign a message given a SigningModeDescriptor, but it's better to think about\nthis another time", + "properties": { + "authn_info_provider_method_fullname": { + "type": "string", + "title": "authn_info_provider_method_fullname defines the fullname of the method to call to get\nthe metadata required to authenticate using the provided sign_modes" + }, + "name": { + "type": "string", + "title": "name defines the unique name of the signing mode" + }, + "number": { + "type": "integer", + "format": "int32", + "title": "number is the unique int32 identifier for the sign_mode enum" + } + } + }, + "cosmos.base.reflection.v2alpha1.TxDescriptor": { + "type": "object", + "title": "TxDescriptor describes the accepted transaction type", + "properties": { + "fullname": { + "description": "fullname is the protobuf fullname of the raw transaction type (for instance the tx.Tx type)\nit is not meant to support polymorphism of transaction types, it is supposed to be used by\nreflection clients to understand if they can handle a specific transaction type in an application.", + "type": "string" + }, + "msgs": { + "type": "array", + "title": "msgs lists the accepted application messages (sdk.Msg)", + "items": { + "type": "object", + "$ref": "#/definitions/cosmos.base.reflection.v2alpha1.MsgDescriptor" + } + } + } + }, + "cosmos.base.tendermint.v1beta1.ABCIQueryResponse": { + "description": "ABCIQueryResponse defines the response structure for the ABCIQuery gRPC query.\n\nNote: This type is a duplicate of the ResponseQuery proto type defined in\nTendermint.", + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "codespace": { + "type": "string" + }, + "height": { + "type": "string", + "format": "int64" + }, + "index": { + "type": "string", + "format": "int64" + }, + "info": { + "type": "string", + "title": "nondeterministic" + }, + "key": { + "type": "string", + "format": "byte" + }, + "log": { + "type": "string", + "title": "nondeterministic" + }, + "proof_ops": { + "$ref": "#/definitions/cosmos.base.tendermint.v1beta1.ProofOps" + }, + "value": { + "type": "string", + "format": "byte" + } + } + }, + "cosmos.base.tendermint.v1beta1.Block": { + "description": "Block is tendermint type Block, with the Header proposer address\nfield converted to bech32 string.", + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/tendermint.types.Data" + }, + "evidence": { + "$ref": "#/definitions/tendermint.types.EvidenceList" + }, + "header": { + "$ref": "#/definitions/cosmos.base.tendermint.v1beta1.Header" + }, + "last_commit": { + "$ref": "#/definitions/tendermint.types.Commit" + } + } + }, + "cosmos.base.tendermint.v1beta1.GetBlockByHeightResponse": { + "description": "GetBlockByHeightResponse is the response type for the Query/GetBlockByHeight RPC method.", + "type": "object", + "properties": { + "block": { + "title": "Deprecated: please use `sdk_block` instead", + "$ref": "#/definitions/tendermint.types.Block" + }, + "block_id": { + "$ref": "#/definitions/tendermint.types.BlockID" + }, + "sdk_block": { + "title": "Since: cosmos-sdk 0.47", + "$ref": "#/definitions/cosmos.base.tendermint.v1beta1.Block" + } + } + }, + "cosmos.base.tendermint.v1beta1.GetLatestBlockResponse": { + "description": "GetLatestBlockResponse is the response type for the Query/GetLatestBlock RPC method.", + "type": "object", + "properties": { + "block": { + "title": "Deprecated: please use `sdk_block` instead", + "$ref": "#/definitions/tendermint.types.Block" + }, + "block_id": { + "$ref": "#/definitions/tendermint.types.BlockID" + }, + "sdk_block": { + "title": "Since: cosmos-sdk 0.47", + "$ref": "#/definitions/cosmos.base.tendermint.v1beta1.Block" + } + } + }, + "cosmos.base.tendermint.v1beta1.GetLatestValidatorSetResponse": { + "description": "GetLatestValidatorSetResponse is the response type for the Query/GetValidatorSetByHeight RPC method.", + "type": "object", + "properties": { + "block_height": { + "type": "string", + "format": "int64" + }, + "pagination": { + "description": "pagination defines an pagination for the response.", + "$ref": "#/definitions/cosmos.base.query.v1beta1.PageResponse" + }, + "validators": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/cosmos.base.tendermint.v1beta1.Validator" + } + } + } + }, + "cosmos.base.tendermint.v1beta1.GetNodeInfoResponse": { + "description": "GetNodeInfoResponse is the response type for the Query/GetNodeInfo RPC method.", + "type": "object", + "properties": { + "application_version": { + "$ref": "#/definitions/cosmos.base.tendermint.v1beta1.VersionInfo" + }, + "default_node_info": { + "$ref": "#/definitions/tendermint.p2p.DefaultNodeInfo" + } + } + }, + "cosmos.base.tendermint.v1beta1.GetSyncingResponse": { + "description": "GetSyncingResponse is the response type for the Query/GetSyncing RPC method.", + "type": "object", + "properties": { + "syncing": { + "type": "boolean" + } + } + }, + "cosmos.base.tendermint.v1beta1.GetValidatorSetByHeightResponse": { + "description": "GetValidatorSetByHeightResponse is the response type for the Query/GetValidatorSetByHeight RPC method.", + "type": "object", + "properties": { + "block_height": { + "type": "string", + "format": "int64" + }, + "pagination": { + "description": "pagination defines an pagination for the response.", + "$ref": "#/definitions/cosmos.base.query.v1beta1.PageResponse" + }, + "validators": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/cosmos.base.tendermint.v1beta1.Validator" + } + } + } + }, + "cosmos.base.tendermint.v1beta1.Header": { + "description": "Header defines the structure of a Tendermint block header.", + "type": "object", + "properties": { + "app_hash": { + "type": "string", + "format": "byte", + "title": "state after txs from the previous block" + }, + "chain_id": { + "type": "string" + }, + "consensus_hash": { + "type": "string", + "format": "byte", + "title": "consensus params for current block" + }, + "data_hash": { + "type": "string", + "format": "byte", + "title": "transactions" + }, + "evidence_hash": { + "description": "evidence included in the block", + "type": "string", + "format": "byte", + "title": "consensus info" + }, + "height": { + "type": "string", + "format": "int64" + }, + "last_block_id": { + "title": "prev block info", + "$ref": "#/definitions/tendermint.types.BlockID" + }, + "last_commit_hash": { + "description": "commit from validators from the last block", + "type": "string", + "format": "byte", + "title": "hashes of block data" + }, + "last_results_hash": { + "type": "string", + "format": "byte", + "title": "root hash of all results from the txs from the previous block" + }, + "next_validators_hash": { + "type": "string", + "format": "byte", + "title": "validators for the next block" + }, + "proposer_address": { + "description": "proposer_address is the original block proposer address, formatted as a Bech32 string.\nIn Tendermint, this type is `bytes`, but in the SDK, we convert it to a Bech32 string\nfor better UX.\n\noriginal proposer of the block", + "type": "string" + }, + "time": { + "type": "string", + "format": "date-time" + }, + "validators_hash": { + "description": "validators for the current block", + "type": "string", + "format": "byte", + "title": "hashes from the app output from the prev block" + }, + "version": { + "title": "basic block info", + "$ref": "#/definitions/tendermint.version.Consensus" + } + } + }, + "cosmos.base.tendermint.v1beta1.Module": { + "type": "object", + "title": "Module is the type for VersionInfo", + "properties": { + "path": { + "type": "string", + "title": "module path" + }, + "sum": { + "type": "string", + "title": "checksum" + }, + "version": { + "type": "string", + "title": "module version" + } + } + }, + "cosmos.base.tendermint.v1beta1.ProofOp": { + "description": "ProofOp defines an operation used for calculating Merkle root. The data could\nbe arbitrary format, providing necessary data for example neighbouring node\nhash.\n\nNote: This type is a duplicate of the ProofOp proto type defined in Tendermint.", + "type": "object", + "properties": { + "data": { + "type": "string", + "format": "byte" + }, + "key": { + "type": "string", + "format": "byte" + }, + "type": { + "type": "string" + } + } + }, + "cosmos.base.tendermint.v1beta1.ProofOps": { + "description": "ProofOps is Merkle proof defined by the list of ProofOps.\n\nNote: This type is a duplicate of the ProofOps proto type defined in Tendermint.", + "type": "object", + "properties": { + "ops": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/cosmos.base.tendermint.v1beta1.ProofOp" + } + } + } + }, + "cosmos.base.tendermint.v1beta1.Validator": { + "description": "Validator is the type for the validator-set.", + "type": "object", + "properties": { + "address": { + "type": "string" + }, + "proposer_priority": { + "type": "string", + "format": "int64" + }, + "pub_key": { + "$ref": "#/definitions/google.protobuf.Any" + }, + "voting_power": { + "type": "string", + "format": "int64" + } + } + }, + "cosmos.base.tendermint.v1beta1.VersionInfo": { + "description": "VersionInfo is the type for the GetNodeInfoResponse message.", + "type": "object", + "properties": { + "app_name": { + "type": "string" + }, + "build_deps": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/cosmos.base.tendermint.v1beta1.Module" + } + }, + "build_tags": { + "type": "string" + }, + "cosmos_sdk_version": { + "type": "string", + "title": "Since: cosmos-sdk 0.43" + }, + "git_commit": { + "type": "string" + }, + "go_version": { + "type": "string" + }, + "name": { + "type": "string" + }, + "version": { + "type": "string" + } + } + }, + "cosmos.base.v1beta1.Coin": { + "description": "Coin defines a token with a denomination and an amount.\n\nNOTE: The amount field is an Int which implements the custom method\nsignatures required by gogoproto.", + "type": "object", + "properties": { + "amount": { + "type": "string" + }, + "denom": { + "type": "string" + } + } + }, + "cosmos.base.v1beta1.DecCoin": { + "description": "DecCoin defines a token with a denomination and a decimal amount.\n\nNOTE: The amount field is an Dec which implements the custom method\nsignatures required by gogoproto.", + "type": "object", + "properties": { + "amount": { + "type": "string" + }, + "denom": { + "type": "string" + } + } + }, + "cosmos.circuit.v1.AccountResponse": { + "description": "AccountResponse is the response type for the Query/Account RPC method.", + "type": "object", + "properties": { + "permission": { + "$ref": "#/definitions/cosmos.circuit.v1.Permissions" + } + } + }, + "cosmos.circuit.v1.AccountsResponse": { + "description": "AccountsResponse is the response type for the Query/Accounts RPC method.", + "type": "object", + "properties": { + "accounts": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/cosmos.circuit.v1.GenesisAccountPermissions" + } + }, + "pagination": { + "description": "pagination defines the pagination in the response.", + "$ref": "#/definitions/cosmos.base.query.v1beta1.PageResponse" + } + } + }, + "cosmos.circuit.v1.DisabledListResponse": { + "description": "DisabledListResponse is the response type for the Query/DisabledList RPC method.", + "type": "object", + "properties": { + "disabled_list": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "cosmos.circuit.v1.GenesisAccountPermissions": { + "type": "object", + "title": "GenesisAccountPermissions is the account permissions for the circuit breaker in genesis", + "properties": { + "address": { + "type": "string" + }, + "permissions": { + "$ref": "#/definitions/cosmos.circuit.v1.Permissions" + } + } + }, + "cosmos.circuit.v1.MsgAuthorizeCircuitBreaker": { + "description": "MsgAuthorizeCircuitBreaker defines the Msg/AuthorizeCircuitBreaker request type.", + "type": "object", + "properties": { + "grantee": { + "description": "grantee is the account authorized with the provided permissions.", + "type": "string" + }, + "granter": { + "description": "granter is the granter of the circuit breaker permissions and must have\nLEVEL_SUPER_ADMIN.", + "type": "string" + }, + "permissions": { + "description": "permissions are the circuit breaker permissions that the grantee receives.\nThese will overwrite any existing permissions. LEVEL_NONE_UNSPECIFIED can\nbe specified to revoke all permissions.", + "$ref": "#/definitions/cosmos.circuit.v1.Permissions" + } + } + }, + "cosmos.circuit.v1.MsgAuthorizeCircuitBreakerResponse": { + "description": "MsgAuthorizeCircuitBreakerResponse defines the Msg/AuthorizeCircuitBreaker response type.", + "type": "object", + "properties": { + "success": { + "type": "boolean" + } + } + }, + "cosmos.circuit.v1.MsgResetCircuitBreaker": { + "description": "MsgResetCircuitBreaker defines the Msg/ResetCircuitBreaker request type.", + "type": "object", + "properties": { + "authority": { + "description": "authority is the account authorized to trip or reset the circuit breaker.", + "type": "string" + }, + "msg_type_urls": { + "description": "msg_type_urls specifies a list of Msg type URLs to resume processing. If\nit is left empty all Msg processing for type URLs that the account is\nauthorized to trip will resume.", + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "cosmos.circuit.v1.MsgResetCircuitBreakerResponse": { + "description": "MsgResetCircuitBreakerResponse defines the Msg/ResetCircuitBreaker response type.", + "type": "object", + "properties": { + "success": { + "type": "boolean" + } + } + }, + "cosmos.circuit.v1.MsgTripCircuitBreaker": { + "description": "MsgTripCircuitBreaker defines the Msg/TripCircuitBreaker request type.", + "type": "object", + "properties": { + "authority": { + "description": "authority is the account authorized to trip the circuit breaker.", + "type": "string" + }, + "msg_type_urls": { + "description": "msg_type_urls specifies a list of type URLs to immediately stop processing.\nIF IT IS LEFT EMPTY, ALL MSG PROCESSING WILL STOP IMMEDIATELY.\nThis value is validated against the authority's permissions and if the\nauthority does not have permissions to trip the specified msg type URLs\n(or all URLs), the operation will fail.", + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "cosmos.circuit.v1.MsgTripCircuitBreakerResponse": { + "description": "MsgTripCircuitBreakerResponse defines the Msg/TripCircuitBreaker response type.", + "type": "object", + "properties": { + "success": { + "type": "boolean" + } + } + }, + "cosmos.circuit.v1.Permissions": { + "description": "Permissions are the permissions that an account has to trip\nor reset the circuit breaker.", + "type": "object", + "properties": { + "level": { + "description": "level is the level of permissions granted to this account.", + "$ref": "#/definitions/cosmos.circuit.v1.Permissions.Level" + }, + "limit_type_urls": { + "description": "limit_type_urls is used with LEVEL_SOME_MSGS to limit the lists of Msg type\nURLs that the account can trip. It is an error to use limit_type_urls with\na level other than LEVEL_SOME_MSGS.", + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "cosmos.circuit.v1.Permissions.Level": { + "description": "Level is the permission level.\n\n - LEVEL_NONE_UNSPECIFIED: LEVEL_NONE_UNSPECIFIED indicates that the account will have no circuit\nbreaker permissions.\n - LEVEL_SOME_MSGS: LEVEL_SOME_MSGS indicates that the account will have permission to\ntrip or reset the circuit breaker for some Msg type URLs. If this level\nis chosen, a non-empty list of Msg type URLs must be provided in\nlimit_type_urls.\n - LEVEL_ALL_MSGS: LEVEL_ALL_MSGS indicates that the account can trip or reset the circuit\nbreaker for Msg's of all type URLs.\n - LEVEL_SUPER_ADMIN: LEVEL_SUPER_ADMIN indicates that the account can take all circuit breaker\nactions and can grant permissions to other accounts.", + "type": "string", + "default": "LEVEL_NONE_UNSPECIFIED", + "enum": [ + "LEVEL_NONE_UNSPECIFIED", + "LEVEL_SOME_MSGS", + "LEVEL_ALL_MSGS", + "LEVEL_SUPER_ADMIN" + ] + }, + "cosmos.consensus.v1.MsgUpdateParams": { + "description": "MsgUpdateParams is the Msg/UpdateParams request type.", + "type": "object", + "properties": { + "abci": { + "title": "Since: cosmos-sdk 0.50", + "$ref": "#/definitions/tendermint.types.ABCIParams" + }, + "authority": { + "description": "authority is the address that controls the module (defaults to x/gov unless overwritten).", + "type": "string" + }, + "block": { + "description": "params defines the x/consensus parameters to update.\nVersionsParams is not included in this Msg because it is tracked\nsepararately in x/upgrade.\n\nNOTE: All parameters must be supplied.", + "$ref": "#/definitions/tendermint.types.BlockParams" + }, + "evidence": { + "$ref": "#/definitions/tendermint.types.EvidenceParams" + }, + "validator": { + "$ref": "#/definitions/tendermint.types.ValidatorParams" + } + } + }, + "cosmos.consensus.v1.MsgUpdateParamsResponse": { + "description": "MsgUpdateParamsResponse defines the response structure for executing a\nMsgUpdateParams message.", + "type": "object" + }, + "cosmos.consensus.v1.QueryParamsResponse": { + "description": "QueryParamsResponse defines the response type for querying x/consensus parameters.", + "type": "object", + "properties": { + "params": { + "description": "params are the tendermint consensus params stored in the consensus module.\nPlease note that `params.version` is not populated in this response, it is\ntracked separately in the x/upgrade module.", + "$ref": "#/definitions/tendermint.types.ConsensusParams" + } + } + }, + "cosmos.crisis.v1beta1.MsgUpdateParams": { + "description": "MsgUpdateParams is the Msg/UpdateParams request type.\n\nSince: cosmos-sdk 0.47", + "type": "object", + "properties": { + "authority": { + "description": "authority is the address that controls the module (defaults to x/gov unless overwritten).", + "type": "string" + }, + "constant_fee": { + "description": "constant_fee defines the x/crisis parameter.", + "$ref": "#/definitions/cosmos.base.v1beta1.Coin" + } + } + }, + "cosmos.crisis.v1beta1.MsgUpdateParamsResponse": { + "description": "MsgUpdateParamsResponse defines the response structure for executing a\nMsgUpdateParams message.\n\nSince: cosmos-sdk 0.47", + "type": "object" + }, + "cosmos.crisis.v1beta1.MsgVerifyInvariant": { + "description": "MsgVerifyInvariant represents a message to verify a particular invariance.", + "type": "object", + "properties": { + "invariant_module_name": { + "description": "name of the invariant module.", + "type": "string" + }, + "invariant_route": { + "description": "invariant_route is the msg's invariant route.", + "type": "string" + }, + "sender": { + "description": "sender is the account address of private key to send coins to fee collector account.", + "type": "string" + } + } + }, + "cosmos.crisis.v1beta1.MsgVerifyInvariantResponse": { + "description": "MsgVerifyInvariantResponse defines the Msg/VerifyInvariant response type.", + "type": "object" + }, + "cosmos.crypto.multisig.v1beta1.CompactBitArray": { + "description": "CompactBitArray is an implementation of a space efficient bit array.\nThis is used to ensure that the encoded data takes up a minimal amount of\nspace after proto encoding.\nThis is not thread safe, and is not intended for concurrent usage.", + "type": "object", + "properties": { + "elems": { + "type": "string", + "format": "byte" + }, + "extra_bits_stored": { + "type": "integer", + "format": "int64" + } + } + }, + "cosmos.distribution.v1beta1.DelegationDelegatorReward": { + "description": "DelegationDelegatorReward represents the properties\nof a delegator's delegation reward.", + "type": "object", + "properties": { + "reward": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/cosmos.base.v1beta1.DecCoin" + } + }, + "validator_address": { + "type": "string" + } + } + }, + "cosmos.distribution.v1beta1.MsgCommunityPoolSpend": { + "description": "MsgCommunityPoolSpend defines a message for sending tokens from the community\npool to another account. This message is typically executed via a governance\nproposal with the governance module being the executing authority.\n\nSince: cosmos-sdk 0.47", + "type": "object", + "properties": { + "amount": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/cosmos.base.v1beta1.Coin" + } + }, + "authority": { + "description": "authority is the address that controls the module (defaults to x/gov unless overwritten).", + "type": "string" + }, + "recipient": { + "type": "string" + } + } + }, + "cosmos.distribution.v1beta1.MsgCommunityPoolSpendResponse": { + "description": "MsgCommunityPoolSpendResponse defines the response to executing a\nMsgCommunityPoolSpend message.\n\nSince: cosmos-sdk 0.47", + "type": "object" + }, + "cosmos.distribution.v1beta1.MsgDepositValidatorRewardsPool": { + "description": "DepositValidatorRewardsPool defines the request structure to provide\nadditional rewards to delegators from a specific validator.\n\nSince: cosmos-sdk 0.50", + "type": "object", + "properties": { + "amount": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/cosmos.base.v1beta1.Coin" + } + }, + "depositor": { + "type": "string" + }, + "validator_address": { + "type": "string" + } + } + }, + "cosmos.distribution.v1beta1.MsgDepositValidatorRewardsPoolResponse": { + "description": "MsgDepositValidatorRewardsPoolResponse defines the response to executing a\nMsgDepositValidatorRewardsPool message.\n\nSince: cosmos-sdk 0.50", + "type": "object" + }, + "cosmos.distribution.v1beta1.MsgFundCommunityPool": { + "description": "MsgFundCommunityPool allows an account to directly\nfund the community pool.", + "type": "object", + "properties": { + "amount": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/cosmos.base.v1beta1.Coin" + } + }, + "depositor": { + "type": "string" + } + } + }, + "cosmos.distribution.v1beta1.MsgFundCommunityPoolResponse": { + "description": "MsgFundCommunityPoolResponse defines the Msg/FundCommunityPool response type.", + "type": "object" + }, + "cosmos.distribution.v1beta1.MsgSetWithdrawAddress": { + "description": "MsgSetWithdrawAddress sets the withdraw address for\na delegator (or validator self-delegation).", + "type": "object", + "properties": { + "delegator_address": { + "type": "string" + }, + "withdraw_address": { + "type": "string" + } + } + }, + "cosmos.distribution.v1beta1.MsgSetWithdrawAddressResponse": { + "description": "MsgSetWithdrawAddressResponse defines the Msg/SetWithdrawAddress response\ntype.", + "type": "object" + }, + "cosmos.distribution.v1beta1.MsgUpdateParams": { + "description": "MsgUpdateParams is the Msg/UpdateParams request type.\n\nSince: cosmos-sdk 0.47", + "type": "object", + "properties": { + "authority": { + "description": "authority is the address that controls the module (defaults to x/gov unless overwritten).", + "type": "string" + }, + "params": { + "description": "params defines the x/distribution parameters to update.\n\nNOTE: All parameters must be supplied.", + "$ref": "#/definitions/cosmos.distribution.v1beta1.Params" + } + } + }, + "cosmos.distribution.v1beta1.MsgUpdateParamsResponse": { + "description": "MsgUpdateParamsResponse defines the response structure for executing a\nMsgUpdateParams message.\n\nSince: cosmos-sdk 0.47", + "type": "object" + }, + "cosmos.distribution.v1beta1.MsgWithdrawDelegatorReward": { + "description": "MsgWithdrawDelegatorReward represents delegation withdrawal to a delegator\nfrom a single validator.", + "type": "object", + "properties": { + "delegator_address": { + "type": "string" + }, + "validator_address": { + "type": "string" + } + } + }, + "cosmos.distribution.v1beta1.MsgWithdrawDelegatorRewardResponse": { + "description": "MsgWithdrawDelegatorRewardResponse defines the Msg/WithdrawDelegatorReward\nresponse type.", + "type": "object", + "properties": { + "amount": { + "type": "array", + "title": "Since: cosmos-sdk 0.46", + "items": { + "type": "object", + "$ref": "#/definitions/cosmos.base.v1beta1.Coin" + } + } + } + }, + "cosmos.distribution.v1beta1.MsgWithdrawValidatorCommission": { + "description": "MsgWithdrawValidatorCommission withdraws the full commission to the validator\naddress.", + "type": "object", + "properties": { + "validator_address": { + "type": "string" + } + } + }, + "cosmos.distribution.v1beta1.MsgWithdrawValidatorCommissionResponse": { + "description": "MsgWithdrawValidatorCommissionResponse defines the\nMsg/WithdrawValidatorCommission response type.", + "type": "object", + "properties": { + "amount": { + "type": "array", + "title": "Since: cosmos-sdk 0.46", + "items": { + "type": "object", + "$ref": "#/definitions/cosmos.base.v1beta1.Coin" + } + } + } + }, + "cosmos.distribution.v1beta1.Params": { + "description": "Params defines the set of params for the distribution module.", + "type": "object", + "properties": { + "base_proposer_reward": { + "description": "Deprecated: The base_proposer_reward field is deprecated and is no longer used\nin the x/distribution module's reward mechanism.", + "type": "string" + }, + "bonus_proposer_reward": { + "description": "Deprecated: The bonus_proposer_reward field is deprecated and is no longer used\nin the x/distribution module's reward mechanism.", + "type": "string" + }, + "community_tax": { + "type": "string" + }, + "withdraw_addr_enabled": { + "type": "boolean" + } + } + }, + "cosmos.distribution.v1beta1.QueryCommunityPoolResponse": { + "description": "QueryCommunityPoolResponse is the response type for the Query/CommunityPool\nRPC method.", + "type": "object", + "properties": { + "pool": { + "description": "pool defines community pool's coins.", + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/cosmos.base.v1beta1.DecCoin" + } + } + } + }, + "cosmos.distribution.v1beta1.QueryDelegationRewardsResponse": { + "description": "QueryDelegationRewardsResponse is the response type for the\nQuery/DelegationRewards RPC method.", + "type": "object", + "properties": { + "rewards": { + "description": "rewards defines the rewards accrued by a delegation.", + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/cosmos.base.v1beta1.DecCoin" + } + } + } + }, + "cosmos.distribution.v1beta1.QueryDelegationTotalRewardsResponse": { + "description": "QueryDelegationTotalRewardsResponse is the response type for the\nQuery/DelegationTotalRewards RPC method.", + "type": "object", + "properties": { + "rewards": { + "description": "rewards defines all the rewards accrued by a delegator.", + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/cosmos.distribution.v1beta1.DelegationDelegatorReward" + } + }, + "total": { + "description": "total defines the sum of all the rewards.", + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/cosmos.base.v1beta1.DecCoin" + } + } + } + }, + "cosmos.distribution.v1beta1.QueryDelegatorValidatorsResponse": { + "description": "QueryDelegatorValidatorsResponse is the response type for the\nQuery/DelegatorValidators RPC method.", + "type": "object", + "properties": { + "validators": { + "description": "validators defines the validators a delegator is delegating for.", + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "cosmos.distribution.v1beta1.QueryDelegatorWithdrawAddressResponse": { + "description": "QueryDelegatorWithdrawAddressResponse is the response type for the\nQuery/DelegatorWithdrawAddress RPC method.", + "type": "object", + "properties": { + "withdraw_address": { + "description": "withdraw_address defines the delegator address to query for.", + "type": "string" + } + } + }, + "cosmos.distribution.v1beta1.QueryParamsResponse": { + "description": "QueryParamsResponse is the response type for the Query/Params RPC method.", + "type": "object", + "properties": { + "params": { + "description": "params defines the parameters of the module.", + "$ref": "#/definitions/cosmos.distribution.v1beta1.Params" + } + } + }, + "cosmos.distribution.v1beta1.QueryValidatorCommissionResponse": { + "type": "object", + "title": "QueryValidatorCommissionResponse is the response type for the\nQuery/ValidatorCommission RPC method", + "properties": { + "commission": { + "description": "commission defines the commission the validator received.", + "$ref": "#/definitions/cosmos.distribution.v1beta1.ValidatorAccumulatedCommission" + } + } + }, + "cosmos.distribution.v1beta1.QueryValidatorDistributionInfoResponse": { + "description": "QueryValidatorDistributionInfoResponse is the response type for the Query/ValidatorDistributionInfo RPC method.", + "type": "object", + "properties": { + "commission": { + "description": "commission defines the commission the validator received.", + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/cosmos.base.v1beta1.DecCoin" + } + }, + "operator_address": { + "description": "operator_address defines the validator operator address.", + "type": "string" + }, + "self_bond_rewards": { + "description": "self_bond_rewards defines the self delegations rewards.", + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/cosmos.base.v1beta1.DecCoin" + } + } + } + }, + "cosmos.distribution.v1beta1.QueryValidatorOutstandingRewardsResponse": { + "description": "QueryValidatorOutstandingRewardsResponse is the response type for the\nQuery/ValidatorOutstandingRewards RPC method.", + "type": "object", + "properties": { + "rewards": { + "$ref": "#/definitions/cosmos.distribution.v1beta1.ValidatorOutstandingRewards" + } + } + }, + "cosmos.distribution.v1beta1.QueryValidatorSlashesResponse": { + "description": "QueryValidatorSlashesResponse is the response type for the\nQuery/ValidatorSlashes RPC method.", + "type": "object", + "properties": { + "pagination": { + "description": "pagination defines the pagination in the response.", + "$ref": "#/definitions/cosmos.base.query.v1beta1.PageResponse" + }, + "slashes": { + "description": "slashes defines the slashes the validator received.", + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/cosmos.distribution.v1beta1.ValidatorSlashEvent" + } + } + } + }, + "cosmos.distribution.v1beta1.ValidatorAccumulatedCommission": { + "description": "ValidatorAccumulatedCommission represents accumulated commission\nfor a validator kept as a running counter, can be withdrawn at any time.", + "type": "object", + "properties": { + "commission": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/cosmos.base.v1beta1.DecCoin" + } + } + } + }, + "cosmos.distribution.v1beta1.ValidatorOutstandingRewards": { + "description": "ValidatorOutstandingRewards represents outstanding (un-withdrawn) rewards\nfor a validator inexpensive to track, allows simple sanity checks.", + "type": "object", + "properties": { + "rewards": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/cosmos.base.v1beta1.DecCoin" + } + } + } + }, + "cosmos.distribution.v1beta1.ValidatorSlashEvent": { + "description": "ValidatorSlashEvent represents a validator slash event.\nHeight is implicit within the store key.\nThis is needed to calculate appropriate amount of staking tokens\nfor delegations which are withdrawn after a slash has occurred.", + "type": "object", + "properties": { + "fraction": { + "type": "string" + }, + "validator_period": { + "type": "string", + "format": "uint64" + } + } + }, + "cosmos.evidence.v1beta1.MsgSubmitEvidence": { + "description": "MsgSubmitEvidence represents a message that supports submitting arbitrary\nEvidence of misbehavior such as equivocation or counterfactual signing.", + "type": "object", + "properties": { + "evidence": { + "description": "evidence defines the evidence of misbehavior.", + "$ref": "#/definitions/google.protobuf.Any" + }, + "submitter": { + "description": "submitter is the signer account address of evidence.", + "type": "string" + } + } + }, + "cosmos.evidence.v1beta1.MsgSubmitEvidenceResponse": { + "description": "MsgSubmitEvidenceResponse defines the Msg/SubmitEvidence response type.", + "type": "object", + "properties": { + "hash": { + "description": "hash defines the hash of the evidence.", + "type": "string", + "format": "byte" + } + } + }, + "cosmos.evidence.v1beta1.QueryAllEvidenceResponse": { + "description": "QueryAllEvidenceResponse is the response type for the Query/AllEvidence RPC\nmethod.", + "type": "object", + "properties": { + "evidence": { + "description": "evidence returns all evidences.", + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/google.protobuf.Any" + } + }, + "pagination": { + "description": "pagination defines the pagination in the response.", + "$ref": "#/definitions/cosmos.base.query.v1beta1.PageResponse" + } + } + }, + "cosmos.evidence.v1beta1.QueryEvidenceResponse": { + "description": "QueryEvidenceResponse is the response type for the Query/Evidence RPC method.", + "type": "object", + "properties": { + "evidence": { + "description": "evidence returns the requested evidence.", + "$ref": "#/definitions/google.protobuf.Any" + } + } + }, + "cosmos.feegrant.v1beta1.Grant": { + "type": "object", + "title": "Grant is stored in the KVStore to record a grant with full context", + "properties": { + "allowance": { + "description": "allowance can be any of basic, periodic, allowed fee allowance.", + "$ref": "#/definitions/google.protobuf.Any" + }, + "grantee": { + "description": "grantee is the address of the user being granted an allowance of another user's funds.", + "type": "string" + }, + "granter": { + "description": "granter is the address of the user granting an allowance of their funds.", + "type": "string" + } + } + }, + "cosmos.feegrant.v1beta1.MsgGrantAllowance": { + "description": "MsgGrantAllowance adds permission for Grantee to spend up to Allowance\nof fees from the account of Granter.", + "type": "object", + "properties": { + "allowance": { + "description": "allowance can be any of basic, periodic, allowed fee allowance.", + "$ref": "#/definitions/google.protobuf.Any" + }, + "grantee": { + "description": "grantee is the address of the user being granted an allowance of another user's funds.", + "type": "string" + }, + "granter": { + "description": "granter is the address of the user granting an allowance of their funds.", + "type": "string" + } + } + }, + "cosmos.feegrant.v1beta1.MsgGrantAllowanceResponse": { + "description": "MsgGrantAllowanceResponse defines the Msg/GrantAllowanceResponse response type.", + "type": "object" + }, + "cosmos.feegrant.v1beta1.MsgPruneAllowances": { + "description": "MsgPruneAllowances prunes expired fee allowances.\n\nSince cosmos-sdk 0.50", + "type": "object", + "properties": { + "pruner": { + "description": "pruner is the address of the user pruning expired allowances.", + "type": "string" + } + } + }, + "cosmos.feegrant.v1beta1.MsgPruneAllowancesResponse": { + "description": "MsgPruneAllowancesResponse defines the Msg/PruneAllowancesResponse response type.\n\nSince cosmos-sdk 0.50", + "type": "object" + }, + "cosmos.feegrant.v1beta1.MsgRevokeAllowance": { + "description": "MsgRevokeAllowance removes any existing Allowance from Granter to Grantee.", + "type": "object", + "properties": { + "grantee": { + "description": "grantee is the address of the user being granted an allowance of another user's funds.", + "type": "string" + }, + "granter": { + "description": "granter is the address of the user granting an allowance of their funds.", + "type": "string" + } + } + }, + "cosmos.feegrant.v1beta1.MsgRevokeAllowanceResponse": { + "description": "MsgRevokeAllowanceResponse defines the Msg/RevokeAllowanceResponse response type.", + "type": "object" + }, + "cosmos.feegrant.v1beta1.QueryAllowanceResponse": { + "description": "QueryAllowanceResponse is the response type for the Query/Allowance RPC method.", + "type": "object", + "properties": { + "allowance": { + "description": "allowance is a allowance granted for grantee by granter.", + "$ref": "#/definitions/cosmos.feegrant.v1beta1.Grant" + } + } + }, + "cosmos.feegrant.v1beta1.QueryAllowancesByGranterResponse": { + "description": "QueryAllowancesByGranterResponse is the response type for the Query/AllowancesByGranter RPC method.\n\nSince: cosmos-sdk 0.46", + "type": "object", + "properties": { + "allowances": { + "description": "allowances that have been issued by the granter.", + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/cosmos.feegrant.v1beta1.Grant" + } + }, + "pagination": { + "description": "pagination defines an pagination for the response.", + "$ref": "#/definitions/cosmos.base.query.v1beta1.PageResponse" + } + } + }, + "cosmos.feegrant.v1beta1.QueryAllowancesResponse": { + "description": "QueryAllowancesResponse is the response type for the Query/Allowances RPC method.", + "type": "object", + "properties": { + "allowances": { + "description": "allowances are allowance's granted for grantee by granter.", + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/cosmos.feegrant.v1beta1.Grant" + } + }, + "pagination": { + "description": "pagination defines an pagination for the response.", + "$ref": "#/definitions/cosmos.base.query.v1beta1.PageResponse" + } + } + }, + "cosmos.gov.v1.Deposit": { + "description": "Deposit defines an amount deposited by an account address to an active\nproposal.", + "type": "object", + "properties": { + "amount": { + "description": "amount to be deposited by depositor.", + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/cosmos.base.v1beta1.Coin" + } + }, + "depositor": { + "description": "depositor defines the deposit addresses from the proposals.", + "type": "string" + }, + "proposal_id": { + "description": "proposal_id defines the unique id of the proposal.", + "type": "string", + "format": "uint64" + } + } + }, + "cosmos.gov.v1.DepositParams": { + "description": "DepositParams defines the params for deposits on governance proposals.", + "type": "object", + "properties": { + "max_deposit_period": { + "description": "Maximum period for Atom holders to deposit on a proposal. Initial value: 2\nmonths.", + "type": "string" + }, + "min_deposit": { + "description": "Minimum deposit for a proposal to enter voting period.", + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/cosmos.base.v1beta1.Coin" + } + } + } + }, + "cosmos.gov.v1.MsgCancelProposal": { + "description": "MsgCancelProposal is the Msg/CancelProposal request type.\n\nSince: cosmos-sdk 0.50", + "type": "object", + "properties": { + "proposal_id": { + "description": "proposal_id defines the unique id of the proposal.", + "type": "string", + "format": "uint64" + }, + "proposer": { + "description": "proposer is the account address of the proposer.", + "type": "string" + } + } + }, + "cosmos.gov.v1.MsgCancelProposalResponse": { + "description": "MsgCancelProposalResponse defines the response structure for executing a\nMsgCancelProposal message.\n\nSince: cosmos-sdk 0.50", + "type": "object", + "properties": { + "canceled_height": { + "description": "canceled_height defines the block height at which the proposal is canceled.", + "type": "string", + "format": "uint64" + }, + "canceled_time": { + "description": "canceled_time is the time when proposal is canceled.", + "type": "string", + "format": "date-time" + }, + "proposal_id": { + "description": "proposal_id defines the unique id of the proposal.", + "type": "string", + "format": "uint64" + } + } + }, + "cosmos.gov.v1.MsgDeposit": { + "description": "MsgDeposit defines a message to submit a deposit to an existing proposal.", + "type": "object", + "properties": { + "amount": { + "description": "amount to be deposited by depositor.", + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/cosmos.base.v1beta1.Coin" + } + }, + "depositor": { + "description": "depositor defines the deposit addresses from the proposals.", + "type": "string" + }, + "proposal_id": { + "description": "proposal_id defines the unique id of the proposal.", + "type": "string", + "format": "uint64" + } + } + }, + "cosmos.gov.v1.MsgDepositResponse": { + "description": "MsgDepositResponse defines the Msg/Deposit response type.", + "type": "object" + }, + "cosmos.gov.v1.MsgExecLegacyContent": { + "description": "MsgExecLegacyContent is used to wrap the legacy content field into a message.\nThis ensures backwards compatibility with v1beta1.MsgSubmitProposal.", + "type": "object", + "properties": { + "authority": { + "description": "authority must be the gov module address.", + "type": "string" + }, + "content": { + "description": "content is the proposal's content.", + "$ref": "#/definitions/google.protobuf.Any" + } + } + }, + "cosmos.gov.v1.MsgExecLegacyContentResponse": { + "description": "MsgExecLegacyContentResponse defines the Msg/ExecLegacyContent response type.", + "type": "object" + }, + "cosmos.gov.v1.MsgSubmitProposal": { + "description": "MsgSubmitProposal defines an sdk.Msg type that supports submitting arbitrary\nproposal Content.", + "type": "object", + "properties": { + "expedited": { + "description": "Since: cosmos-sdk 0.50", + "type": "boolean", + "title": "expedited defines if the proposal is expedited or not" + }, + "initial_deposit": { + "description": "initial_deposit is the deposit value that must be paid at proposal submission.", + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/cosmos.base.v1beta1.Coin" + } + }, + "messages": { + "description": "messages are the arbitrary messages to be executed if proposal passes.", + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/google.protobuf.Any" + } + }, + "metadata": { + "description": "metadata is any arbitrary metadata attached to the proposal.", + "type": "string" + }, + "proposer": { + "description": "proposer is the account address of the proposer.", + "type": "string" + }, + "summary": { + "description": "Since: cosmos-sdk 0.47", + "type": "string", + "title": "summary is the summary of the proposal" + }, + "title": { + "description": "title is the title of the proposal.\n\nSince: cosmos-sdk 0.47", + "type": "string" + } + } + }, + "cosmos.gov.v1.MsgSubmitProposalResponse": { + "description": "MsgSubmitProposalResponse defines the Msg/SubmitProposal response type.", + "type": "object", + "properties": { + "proposal_id": { + "description": "proposal_id defines the unique id of the proposal.", + "type": "string", + "format": "uint64" + } + } + }, + "cosmos.gov.v1.MsgUpdateParams": { + "description": "MsgUpdateParams is the Msg/UpdateParams request type.\n\nSince: cosmos-sdk 0.47", + "type": "object", + "properties": { + "authority": { + "description": "authority is the address that controls the module (defaults to x/gov unless overwritten).", + "type": "string" + }, + "params": { + "description": "params defines the x/gov parameters to update.\n\nNOTE: All parameters must be supplied.", + "$ref": "#/definitions/cosmos.gov.v1.Params" + } + } + }, + "cosmos.gov.v1.MsgUpdateParamsResponse": { + "description": "MsgUpdateParamsResponse defines the response structure for executing a\nMsgUpdateParams message.\n\nSince: cosmos-sdk 0.47", + "type": "object" + }, + "cosmos.gov.v1.MsgVote": { + "description": "MsgVote defines a message to cast a vote.", + "type": "object", + "properties": { + "metadata": { + "description": "metadata is any arbitrary metadata attached to the Vote.", + "type": "string" + }, + "option": { + "description": "option defines the vote option.", + "$ref": "#/definitions/cosmos.gov.v1.VoteOption" + }, + "proposal_id": { + "description": "proposal_id defines the unique id of the proposal.", + "type": "string", + "format": "uint64" + }, + "voter": { + "description": "voter is the voter address for the proposal.", + "type": "string" + } + } + }, + "cosmos.gov.v1.MsgVoteResponse": { + "description": "MsgVoteResponse defines the Msg/Vote response type.", + "type": "object" + }, + "cosmos.gov.v1.MsgVoteWeighted": { + "description": "MsgVoteWeighted defines a message to cast a vote.", + "type": "object", + "properties": { + "metadata": { + "description": "metadata is any arbitrary metadata attached to the VoteWeighted.", + "type": "string" + }, + "options": { + "description": "options defines the weighted vote options.", + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/cosmos.gov.v1.WeightedVoteOption" + } + }, + "proposal_id": { + "description": "proposal_id defines the unique id of the proposal.", + "type": "string", + "format": "uint64" + }, + "voter": { + "description": "voter is the voter address for the proposal.", + "type": "string" + } + } + }, + "cosmos.gov.v1.MsgVoteWeightedResponse": { + "description": "MsgVoteWeightedResponse defines the Msg/VoteWeighted response type.", + "type": "object" + }, + "cosmos.gov.v1.Params": { + "description": "Params defines the parameters for the x/gov module.\n\nSince: cosmos-sdk 0.47", + "type": "object", + "properties": { + "burn_proposal_deposit_prevote": { + "type": "boolean", + "title": "burn deposits if the proposal does not enter voting period" + }, + "burn_vote_quorum": { + "type": "boolean", + "title": "burn deposits if a proposal does not meet quorum" + }, + "burn_vote_veto": { + "type": "boolean", + "title": "burn deposits if quorum with vote type no_veto is met" + }, + "expedited_min_deposit": { + "description": "Minimum expedited deposit for a proposal to enter voting period.", + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/cosmos.base.v1beta1.Coin" + } + }, + "expedited_threshold": { + "description": "Minimum proportion of Yes votes for proposal to pass. Default value: 0.67.\n\nSince: cosmos-sdk 0.50", + "type": "string" + }, + "expedited_voting_period": { + "description": "Duration of the voting period of an expedited proposal.\n\nSince: cosmos-sdk 0.50", + "type": "string" + }, + "max_deposit_period": { + "description": "Maximum period for Atom holders to deposit on a proposal. Initial value: 2\nmonths.", + "type": "string" + }, + "min_deposit": { + "description": "Minimum deposit for a proposal to enter voting period.", + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/cosmos.base.v1beta1.Coin" + } + }, + "min_deposit_ratio": { + "description": "The ratio representing the proportion of the deposit value minimum that must be met when making a deposit.\nDefault value: 0.01. Meaning that for a chain with a min_deposit of 100stake, a deposit of 1stake would be\nrequired.\n\nSince: cosmos-sdk 0.50", + "type": "string" + }, + "min_initial_deposit_ratio": { + "description": "The ratio representing the proportion of the deposit value that must be paid at proposal submission.", + "type": "string" + }, + "proposal_cancel_dest": { + "description": "The address which will receive (proposal_cancel_ratio * deposit) proposal deposits.\nIf empty, the (proposal_cancel_ratio * deposit) proposal deposits will be burned.\n\nSince: cosmos-sdk 0.50", + "type": "string" + }, + "proposal_cancel_ratio": { + "description": "The cancel ratio which will not be returned back to the depositors when a proposal is cancelled.\n\nSince: cosmos-sdk 0.50", + "type": "string" + }, + "quorum": { + "description": "Minimum percentage of total stake needed to vote for a result to be\n considered valid.", + "type": "string" + }, + "threshold": { + "description": "Minimum proportion of Yes votes for proposal to pass. Default value: 0.5.", + "type": "string" + }, + "veto_threshold": { + "description": "Minimum value of Veto votes to Total votes ratio for proposal to be\n vetoed. Default value: 1/3.", + "type": "string" + }, + "voting_period": { + "description": "Duration of the voting period.", + "type": "string" + } + } + }, + "cosmos.gov.v1.Proposal": { + "description": "Proposal defines the core field members of a governance proposal.", + "type": "object", + "properties": { + "deposit_end_time": { + "description": "deposit_end_time is the end time for deposition.", + "type": "string", + "format": "date-time" + }, + "expedited": { + "description": "Since: cosmos-sdk 0.50", + "type": "boolean", + "title": "expedited defines if the proposal is expedited" + }, + "failed_reason": { + "description": "Since: cosmos-sdk 0.50", + "type": "string", + "title": "failed_reason defines the reason why the proposal failed" + }, + "final_tally_result": { + "description": "final_tally_result is the final tally result of the proposal. When\nquerying a proposal via gRPC, this field is not populated until the\nproposal's voting period has ended.", + "$ref": "#/definitions/cosmos.gov.v1.TallyResult" + }, + "id": { + "description": "id defines the unique id of the proposal.", + "type": "string", + "format": "uint64" + }, + "messages": { + "description": "messages are the arbitrary messages to be executed if the proposal passes.", + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/google.protobuf.Any" + } + }, + "metadata": { + "type": "string", + "title": "metadata is any arbitrary metadata attached to the proposal.\nthe recommended format of the metadata is to be found here:\nhttps://docs.cosmos.network/v0.47/modules/gov#proposal-3" + }, + "proposer": { + "description": "Since: cosmos-sdk 0.47", + "type": "string", + "title": "proposer is the address of the proposal sumbitter" + }, + "status": { + "description": "status defines the proposal status.", + "$ref": "#/definitions/cosmos.gov.v1.ProposalStatus" + }, + "submit_time": { + "description": "submit_time is the time of proposal submission.", + "type": "string", + "format": "date-time" + }, + "summary": { + "description": "Since: cosmos-sdk 0.47", + "type": "string", + "title": "summary is a short summary of the proposal" + }, + "title": { + "description": "Since: cosmos-sdk 0.47", + "type": "string", + "title": "title is the title of the proposal" + }, + "total_deposit": { + "description": "total_deposit is the total deposit on the proposal.", + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/cosmos.base.v1beta1.Coin" + } + }, + "voting_end_time": { + "description": "voting_end_time is the end time of voting on a proposal.", + "type": "string", + "format": "date-time" + }, + "voting_start_time": { + "description": "voting_start_time is the starting time to vote on a proposal.", + "type": "string", + "format": "date-time" + } + } + }, + "cosmos.gov.v1.ProposalStatus": { + "description": "ProposalStatus enumerates the valid statuses of a proposal.\n\n - PROPOSAL_STATUS_UNSPECIFIED: PROPOSAL_STATUS_UNSPECIFIED defines the default proposal status.\n - PROPOSAL_STATUS_DEPOSIT_PERIOD: PROPOSAL_STATUS_DEPOSIT_PERIOD defines a proposal status during the deposit\nperiod.\n - PROPOSAL_STATUS_VOTING_PERIOD: PROPOSAL_STATUS_VOTING_PERIOD defines a proposal status during the voting\nperiod.\n - PROPOSAL_STATUS_PASSED: PROPOSAL_STATUS_PASSED defines a proposal status of a proposal that has\npassed.\n - PROPOSAL_STATUS_REJECTED: PROPOSAL_STATUS_REJECTED defines a proposal status of a proposal that has\nbeen rejected.\n - PROPOSAL_STATUS_FAILED: PROPOSAL_STATUS_FAILED defines a proposal status of a proposal that has\nfailed.", + "type": "string", + "default": "PROPOSAL_STATUS_UNSPECIFIED", + "enum": [ + "PROPOSAL_STATUS_UNSPECIFIED", + "PROPOSAL_STATUS_DEPOSIT_PERIOD", + "PROPOSAL_STATUS_VOTING_PERIOD", + "PROPOSAL_STATUS_PASSED", + "PROPOSAL_STATUS_REJECTED", + "PROPOSAL_STATUS_FAILED" + ] + }, + "cosmos.gov.v1.QueryConstitutionResponse": { + "type": "object", + "title": "QueryConstitutionResponse is the response type for the Query/Constitution RPC method", + "properties": { + "constitution": { + "type": "string" + } + } + }, + "cosmos.gov.v1.QueryDepositResponse": { + "description": "QueryDepositResponse is the response type for the Query/Deposit RPC method.", + "type": "object", + "properties": { + "deposit": { + "description": "deposit defines the requested deposit.", + "$ref": "#/definitions/cosmos.gov.v1.Deposit" + } + } + }, + "cosmos.gov.v1.QueryDepositsResponse": { + "description": "QueryDepositsResponse is the response type for the Query/Deposits RPC method.", + "type": "object", + "properties": { + "deposits": { + "description": "deposits defines the requested deposits.", + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/cosmos.gov.v1.Deposit" + } + }, + "pagination": { + "description": "pagination defines the pagination in the response.", + "$ref": "#/definitions/cosmos.base.query.v1beta1.PageResponse" + } + } + }, + "cosmos.gov.v1.QueryParamsResponse": { + "description": "QueryParamsResponse is the response type for the Query/Params RPC method.", + "type": "object", + "properties": { + "deposit_params": { + "description": "Deprecated: Prefer to use `params` instead.\ndeposit_params defines the parameters related to deposit.", + "$ref": "#/definitions/cosmos.gov.v1.DepositParams" + }, + "params": { + "description": "params defines all the paramaters of x/gov module.\n\nSince: cosmos-sdk 0.47", + "$ref": "#/definitions/cosmos.gov.v1.Params" + }, + "tally_params": { + "description": "Deprecated: Prefer to use `params` instead.\ntally_params defines the parameters related to tally.", + "$ref": "#/definitions/cosmos.gov.v1.TallyParams" + }, + "voting_params": { + "description": "Deprecated: Prefer to use `params` instead.\nvoting_params defines the parameters related to voting.", + "$ref": "#/definitions/cosmos.gov.v1.VotingParams" + } + } + }, + "cosmos.gov.v1.QueryProposalResponse": { + "description": "QueryProposalResponse is the response type for the Query/Proposal RPC method.", + "type": "object", + "properties": { + "proposal": { + "description": "proposal is the requested governance proposal.", + "$ref": "#/definitions/cosmos.gov.v1.Proposal" + } + } + }, + "cosmos.gov.v1.QueryProposalsResponse": { + "description": "QueryProposalsResponse is the response type for the Query/Proposals RPC\nmethod.", + "type": "object", + "properties": { + "pagination": { + "description": "pagination defines the pagination in the response.", + "$ref": "#/definitions/cosmos.base.query.v1beta1.PageResponse" + }, + "proposals": { + "description": "proposals defines all the requested governance proposals.", + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/cosmos.gov.v1.Proposal" + } + } + } + }, + "cosmos.gov.v1.QueryTallyResultResponse": { + "description": "QueryTallyResultResponse is the response type for the Query/Tally RPC method.", + "type": "object", + "properties": { + "tally": { + "description": "tally defines the requested tally.", + "$ref": "#/definitions/cosmos.gov.v1.TallyResult" + } + } + }, + "cosmos.gov.v1.QueryVoteResponse": { + "description": "QueryVoteResponse is the response type for the Query/Vote RPC method.", + "type": "object", + "properties": { + "vote": { + "description": "vote defines the queried vote.", + "$ref": "#/definitions/cosmos.gov.v1.Vote" + } + } + }, + "cosmos.gov.v1.QueryVotesResponse": { + "description": "QueryVotesResponse is the response type for the Query/Votes RPC method.", + "type": "object", + "properties": { + "pagination": { + "description": "pagination defines the pagination in the response.", + "$ref": "#/definitions/cosmos.base.query.v1beta1.PageResponse" + }, + "votes": { + "description": "votes defines the queried votes.", + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/cosmos.gov.v1.Vote" + } + } + } + }, + "cosmos.gov.v1.TallyParams": { + "description": "TallyParams defines the params for tallying votes on governance proposals.", + "type": "object", + "properties": { + "quorum": { + "description": "Minimum percentage of total stake needed to vote for a result to be\nconsidered valid.", + "type": "string" + }, + "threshold": { + "description": "Minimum proportion of Yes votes for proposal to pass. Default value: 0.5.", + "type": "string" + }, + "veto_threshold": { + "description": "Minimum value of Veto votes to Total votes ratio for proposal to be\nvetoed. Default value: 1/3.", + "type": "string" + } + } + }, + "cosmos.gov.v1.TallyResult": { + "description": "TallyResult defines a standard tally for a governance proposal.", + "type": "object", + "properties": { + "abstain_count": { + "description": "abstain_count is the number of abstain votes on a proposal.", + "type": "string" + }, + "no_count": { + "description": "no_count is the number of no votes on a proposal.", + "type": "string" + }, + "no_with_veto_count": { + "description": "no_with_veto_count is the number of no with veto votes on a proposal.", + "type": "string" + }, + "yes_count": { + "description": "yes_count is the number of yes votes on a proposal.", + "type": "string" + } + } + }, + "cosmos.gov.v1.Vote": { + "description": "Vote defines a vote on a governance proposal.\nA Vote consists of a proposal ID, the voter, and the vote option.", + "type": "object", + "properties": { + "metadata": { + "type": "string", + "title": "metadata is any arbitrary metadata attached to the vote.\nthe recommended format of the metadata is to be found here: https://docs.cosmos.network/v0.47/modules/gov#vote-5" + }, + "options": { + "description": "options is the weighted vote options.", + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/cosmos.gov.v1.WeightedVoteOption" + } + }, + "proposal_id": { + "description": "proposal_id defines the unique id of the proposal.", + "type": "string", + "format": "uint64" + }, + "voter": { + "description": "voter is the voter address of the proposal.", + "type": "string" + } + } + }, + "cosmos.gov.v1.VoteOption": { + "description": "VoteOption enumerates the valid vote options for a given governance proposal.\n\n - VOTE_OPTION_UNSPECIFIED: VOTE_OPTION_UNSPECIFIED defines a no-op vote option.\n - VOTE_OPTION_YES: VOTE_OPTION_YES defines a yes vote option.\n - VOTE_OPTION_ABSTAIN: VOTE_OPTION_ABSTAIN defines an abstain vote option.\n - VOTE_OPTION_NO: VOTE_OPTION_NO defines a no vote option.\n - VOTE_OPTION_NO_WITH_VETO: VOTE_OPTION_NO_WITH_VETO defines a no with veto vote option.", + "type": "string", + "default": "VOTE_OPTION_UNSPECIFIED", + "enum": [ + "VOTE_OPTION_UNSPECIFIED", + "VOTE_OPTION_YES", + "VOTE_OPTION_ABSTAIN", + "VOTE_OPTION_NO", + "VOTE_OPTION_NO_WITH_VETO" + ] + }, + "cosmos.gov.v1.VotingParams": { + "description": "VotingParams defines the params for voting on governance proposals.", + "type": "object", + "properties": { + "voting_period": { + "description": "Duration of the voting period.", + "type": "string" + } + } + }, + "cosmos.gov.v1.WeightedVoteOption": { + "description": "WeightedVoteOption defines a unit of vote for vote split.", + "type": "object", + "properties": { + "option": { + "description": "option defines the valid vote options, it must not contain duplicate vote options.", + "$ref": "#/definitions/cosmos.gov.v1.VoteOption" + }, + "weight": { + "description": "weight is the vote weight associated with the vote option.", + "type": "string" + } + } + }, + "cosmos.gov.v1beta1.Deposit": { + "description": "Deposit defines an amount deposited by an account address to an active\nproposal.", + "type": "object", + "properties": { + "amount": { + "description": "amount to be deposited by depositor.", + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/cosmos.base.v1beta1.Coin" + } + }, + "depositor": { + "description": "depositor defines the deposit addresses from the proposals.", + "type": "string" + }, + "proposal_id": { + "description": "proposal_id defines the unique id of the proposal.", + "type": "string", + "format": "uint64" + } + } + }, + "cosmos.gov.v1beta1.DepositParams": { + "description": "DepositParams defines the params for deposits on governance proposals.", + "type": "object", + "properties": { + "max_deposit_period": { + "description": "Maximum period for Atom holders to deposit on a proposal. Initial value: 2\nmonths.", + "type": "string" + }, + "min_deposit": { + "description": "Minimum deposit for a proposal to enter voting period.", + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/cosmos.base.v1beta1.Coin" + } + } + } + }, + "cosmos.gov.v1beta1.MsgDeposit": { + "description": "MsgDeposit defines a message to submit a deposit to an existing proposal.", + "type": "object", + "properties": { + "amount": { + "description": "amount to be deposited by depositor.", + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/cosmos.base.v1beta1.Coin" + } + }, + "depositor": { + "description": "depositor defines the deposit addresses from the proposals.", + "type": "string" + }, + "proposal_id": { + "description": "proposal_id defines the unique id of the proposal.", + "type": "string", + "format": "uint64" + } + } + }, + "cosmos.gov.v1beta1.MsgDepositResponse": { + "description": "MsgDepositResponse defines the Msg/Deposit response type.", + "type": "object" + }, + "cosmos.gov.v1beta1.MsgSubmitProposal": { + "description": "MsgSubmitProposal defines an sdk.Msg type that supports submitting arbitrary\nproposal Content.", + "type": "object", + "properties": { + "content": { + "description": "content is the proposal's content.", + "$ref": "#/definitions/google.protobuf.Any" + }, + "initial_deposit": { + "description": "initial_deposit is the deposit value that must be paid at proposal submission.", + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/cosmos.base.v1beta1.Coin" + } + }, + "proposer": { + "description": "proposer is the account address of the proposer.", + "type": "string" + } + } + }, + "cosmos.gov.v1beta1.MsgSubmitProposalResponse": { + "description": "MsgSubmitProposalResponse defines the Msg/SubmitProposal response type.", + "type": "object", + "properties": { + "proposal_id": { + "description": "proposal_id defines the unique id of the proposal.", + "type": "string", + "format": "uint64" + } + } + }, + "cosmos.gov.v1beta1.MsgVote": { + "description": "MsgVote defines a message to cast a vote.", + "type": "object", + "properties": { + "option": { + "description": "option defines the vote option.", + "$ref": "#/definitions/cosmos.gov.v1beta1.VoteOption" + }, + "proposal_id": { + "description": "proposal_id defines the unique id of the proposal.", + "type": "string", + "format": "uint64" + }, + "voter": { + "description": "voter is the voter address for the proposal.", + "type": "string" + } + } + }, + "cosmos.gov.v1beta1.MsgVoteResponse": { + "description": "MsgVoteResponse defines the Msg/Vote response type.", + "type": "object" + }, + "cosmos.gov.v1beta1.MsgVoteWeighted": { + "description": "MsgVoteWeighted defines a message to cast a vote.\n\nSince: cosmos-sdk 0.43", + "type": "object", + "properties": { + "options": { + "description": "options defines the weighted vote options.", + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/cosmos.gov.v1beta1.WeightedVoteOption" + } + }, + "proposal_id": { + "description": "proposal_id defines the unique id of the proposal.", + "type": "string", + "format": "uint64" + }, + "voter": { + "description": "voter is the voter address for the proposal.", + "type": "string" + } + } + }, + "cosmos.gov.v1beta1.MsgVoteWeightedResponse": { + "description": "MsgVoteWeightedResponse defines the Msg/VoteWeighted response type.\n\nSince: cosmos-sdk 0.43", + "type": "object" + }, + "cosmos.gov.v1beta1.Proposal": { + "description": "Proposal defines the core field members of a governance proposal.", + "type": "object", + "properties": { + "content": { + "description": "content is the proposal's content.", + "$ref": "#/definitions/google.protobuf.Any" + }, + "deposit_end_time": { + "description": "deposit_end_time is the end time for deposition.", + "type": "string", + "format": "date-time" + }, + "final_tally_result": { + "description": "final_tally_result is the final tally result of the proposal. When\nquerying a proposal via gRPC, this field is not populated until the\nproposal's voting period has ended.", + "$ref": "#/definitions/cosmos.gov.v1beta1.TallyResult" + }, + "proposal_id": { + "description": "proposal_id defines the unique id of the proposal.", + "type": "string", + "format": "uint64" + }, + "status": { + "description": "status defines the proposal status.", + "$ref": "#/definitions/cosmos.gov.v1beta1.ProposalStatus" + }, + "submit_time": { + "description": "submit_time is the time of proposal submission.", + "type": "string", + "format": "date-time" + }, + "total_deposit": { + "description": "total_deposit is the total deposit on the proposal.", + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/cosmos.base.v1beta1.Coin" + } + }, + "voting_end_time": { + "description": "voting_end_time is the end time of voting on a proposal.", + "type": "string", + "format": "date-time" + }, + "voting_start_time": { + "description": "voting_start_time is the starting time to vote on a proposal.", + "type": "string", + "format": "date-time" + } + } + }, + "cosmos.gov.v1beta1.ProposalStatus": { + "description": "ProposalStatus enumerates the valid statuses of a proposal.\n\n - PROPOSAL_STATUS_UNSPECIFIED: PROPOSAL_STATUS_UNSPECIFIED defines the default proposal status.\n - PROPOSAL_STATUS_DEPOSIT_PERIOD: PROPOSAL_STATUS_DEPOSIT_PERIOD defines a proposal status during the deposit\nperiod.\n - PROPOSAL_STATUS_VOTING_PERIOD: PROPOSAL_STATUS_VOTING_PERIOD defines a proposal status during the voting\nperiod.\n - PROPOSAL_STATUS_PASSED: PROPOSAL_STATUS_PASSED defines a proposal status of a proposal that has\npassed.\n - PROPOSAL_STATUS_REJECTED: PROPOSAL_STATUS_REJECTED defines a proposal status of a proposal that has\nbeen rejected.\n - PROPOSAL_STATUS_FAILED: PROPOSAL_STATUS_FAILED defines a proposal status of a proposal that has\nfailed.", + "type": "string", + "default": "PROPOSAL_STATUS_UNSPECIFIED", + "enum": [ + "PROPOSAL_STATUS_UNSPECIFIED", + "PROPOSAL_STATUS_DEPOSIT_PERIOD", + "PROPOSAL_STATUS_VOTING_PERIOD", + "PROPOSAL_STATUS_PASSED", + "PROPOSAL_STATUS_REJECTED", + "PROPOSAL_STATUS_FAILED" + ] + }, + "cosmos.gov.v1beta1.QueryDepositResponse": { + "description": "QueryDepositResponse is the response type for the Query/Deposit RPC method.", + "type": "object", + "properties": { + "deposit": { + "description": "deposit defines the requested deposit.", + "$ref": "#/definitions/cosmos.gov.v1beta1.Deposit" + } + } + }, + "cosmos.gov.v1beta1.QueryDepositsResponse": { + "description": "QueryDepositsResponse is the response type for the Query/Deposits RPC method.", + "type": "object", + "properties": { + "deposits": { + "description": "deposits defines the requested deposits.", + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/cosmos.gov.v1beta1.Deposit" + } + }, + "pagination": { + "description": "pagination defines the pagination in the response.", + "$ref": "#/definitions/cosmos.base.query.v1beta1.PageResponse" + } + } + }, + "cosmos.gov.v1beta1.QueryParamsResponse": { + "description": "QueryParamsResponse is the response type for the Query/Params RPC method.", + "type": "object", + "properties": { + "deposit_params": { + "description": "deposit_params defines the parameters related to deposit.", + "$ref": "#/definitions/cosmos.gov.v1beta1.DepositParams" + }, + "tally_params": { + "description": "tally_params defines the parameters related to tally.", + "$ref": "#/definitions/cosmos.gov.v1beta1.TallyParams" + }, + "voting_params": { + "description": "voting_params defines the parameters related to voting.", + "$ref": "#/definitions/cosmos.gov.v1beta1.VotingParams" + } + } + }, + "cosmos.gov.v1beta1.QueryProposalResponse": { + "description": "QueryProposalResponse is the response type for the Query/Proposal RPC method.", + "type": "object", + "properties": { + "proposal": { + "$ref": "#/definitions/cosmos.gov.v1beta1.Proposal" + } + } + }, + "cosmos.gov.v1beta1.QueryProposalsResponse": { + "description": "QueryProposalsResponse is the response type for the Query/Proposals RPC\nmethod.", + "type": "object", + "properties": { + "pagination": { + "description": "pagination defines the pagination in the response.", + "$ref": "#/definitions/cosmos.base.query.v1beta1.PageResponse" + }, + "proposals": { + "description": "proposals defines all the requested governance proposals.", + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/cosmos.gov.v1beta1.Proposal" + } + } + } + }, + "cosmos.gov.v1beta1.QueryTallyResultResponse": { + "description": "QueryTallyResultResponse is the response type for the Query/Tally RPC method.", + "type": "object", + "properties": { + "tally": { + "description": "tally defines the requested tally.", + "$ref": "#/definitions/cosmos.gov.v1beta1.TallyResult" + } + } + }, + "cosmos.gov.v1beta1.QueryVoteResponse": { + "description": "QueryVoteResponse is the response type for the Query/Vote RPC method.", + "type": "object", + "properties": { + "vote": { + "description": "vote defines the queried vote.", + "$ref": "#/definitions/cosmos.gov.v1beta1.Vote" + } + } + }, + "cosmos.gov.v1beta1.QueryVotesResponse": { + "description": "QueryVotesResponse is the response type for the Query/Votes RPC method.", + "type": "object", + "properties": { + "pagination": { + "description": "pagination defines the pagination in the response.", + "$ref": "#/definitions/cosmos.base.query.v1beta1.PageResponse" + }, + "votes": { + "description": "votes defines the queried votes.", + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/cosmos.gov.v1beta1.Vote" + } + } + } + }, + "cosmos.gov.v1beta1.TallyParams": { + "description": "TallyParams defines the params for tallying votes on governance proposals.", + "type": "object", + "properties": { + "quorum": { + "description": "Minimum percentage of total stake needed to vote for a result to be\nconsidered valid.", + "type": "string", + "format": "byte" + }, + "threshold": { + "description": "Minimum proportion of Yes votes for proposal to pass. Default value: 0.5.", + "type": "string", + "format": "byte" + }, + "veto_threshold": { + "description": "Minimum value of Veto votes to Total votes ratio for proposal to be\nvetoed. Default value: 1/3.", + "type": "string", + "format": "byte" + } + } + }, + "cosmos.gov.v1beta1.TallyResult": { + "description": "TallyResult defines a standard tally for a governance proposal.", + "type": "object", + "properties": { + "abstain": { + "description": "abstain is the number of abstain votes on a proposal.", + "type": "string" + }, + "no": { + "description": "no is the number of no votes on a proposal.", + "type": "string" + }, + "no_with_veto": { + "description": "no_with_veto is the number of no with veto votes on a proposal.", + "type": "string" + }, + "yes": { + "description": "yes is the number of yes votes on a proposal.", + "type": "string" + } + } + }, + "cosmos.gov.v1beta1.Vote": { + "description": "Vote defines a vote on a governance proposal.\nA Vote consists of a proposal ID, the voter, and the vote option.", + "type": "object", + "properties": { + "option": { + "description": "Deprecated: Prefer to use `options` instead. This field is set in queries\nif and only if `len(options) == 1` and that option has weight 1. In all\nother cases, this field will default to VOTE_OPTION_UNSPECIFIED.", + "$ref": "#/definitions/cosmos.gov.v1beta1.VoteOption" + }, + "options": { + "description": "options is the weighted vote options.\n\nSince: cosmos-sdk 0.43", + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/cosmos.gov.v1beta1.WeightedVoteOption" + } + }, + "proposal_id": { + "description": "proposal_id defines the unique id of the proposal.", + "type": "string", + "format": "uint64" + }, + "voter": { + "description": "voter is the voter address of the proposal.", + "type": "string" + } + } + }, + "cosmos.gov.v1beta1.VoteOption": { + "description": "VoteOption enumerates the valid vote options for a given governance proposal.\n\n - VOTE_OPTION_UNSPECIFIED: VOTE_OPTION_UNSPECIFIED defines a no-op vote option.\n - VOTE_OPTION_YES: VOTE_OPTION_YES defines a yes vote option.\n - VOTE_OPTION_ABSTAIN: VOTE_OPTION_ABSTAIN defines an abstain vote option.\n - VOTE_OPTION_NO: VOTE_OPTION_NO defines a no vote option.\n - VOTE_OPTION_NO_WITH_VETO: VOTE_OPTION_NO_WITH_VETO defines a no with veto vote option.", + "type": "string", + "default": "VOTE_OPTION_UNSPECIFIED", + "enum": [ + "VOTE_OPTION_UNSPECIFIED", + "VOTE_OPTION_YES", + "VOTE_OPTION_ABSTAIN", + "VOTE_OPTION_NO", + "VOTE_OPTION_NO_WITH_VETO" + ] + }, + "cosmos.gov.v1beta1.VotingParams": { + "description": "VotingParams defines the params for voting on governance proposals.", + "type": "object", + "properties": { + "voting_period": { + "description": "Duration of the voting period.", + "type": "string" + } + } + }, + "cosmos.gov.v1beta1.WeightedVoteOption": { + "description": "WeightedVoteOption defines a unit of vote for vote split.\n\nSince: cosmos-sdk 0.43", + "type": "object", + "properties": { + "option": { + "description": "option defines the valid vote options, it must not contain duplicate vote options.", + "$ref": "#/definitions/cosmos.gov.v1beta1.VoteOption" + }, + "weight": { + "description": "weight is the vote weight associated with the vote option.", + "type": "string" + } + } + }, + "cosmos.group.v1.Exec": { + "description": "Exec defines modes of execution of a proposal on creation or on new vote.\n\n - EXEC_UNSPECIFIED: An empty value means that there should be a separate\nMsgExec request for the proposal to execute.\n - EXEC_TRY: Try to execute the proposal immediately.\nIf the proposal is not allowed per the DecisionPolicy,\nthe proposal will still be open and could\nbe executed at a later point.", + "type": "string", + "default": "EXEC_UNSPECIFIED", + "enum": [ + "EXEC_UNSPECIFIED", + "EXEC_TRY" + ] + }, + "cosmos.group.v1.GroupInfo": { + "description": "GroupInfo represents the high-level on-chain information for a group.", + "type": "object", + "properties": { + "admin": { + "description": "admin is the account address of the group's admin.", + "type": "string" + }, + "created_at": { + "description": "created_at is a timestamp specifying when a group was created.", + "type": "string", + "format": "date-time" + }, + "id": { + "description": "id is the unique ID of the group.", + "type": "string", + "format": "uint64" + }, + "metadata": { + "type": "string", + "title": "metadata is any arbitrary metadata to attached to the group.\nthe recommended format of the metadata is to be found here: https://docs.cosmos.network/v0.47/modules/group#group-1" + }, + "total_weight": { + "description": "total_weight is the sum of the group members' weights.", + "type": "string" + }, + "version": { + "type": "string", + "format": "uint64", + "title": "version is used to track changes to a group's membership structure that\nwould break existing proposals. Whenever any members weight is changed,\nor any member is added or removed this version is incremented and will\ncause proposals based on older versions of this group to fail" + } + } + }, + "cosmos.group.v1.GroupMember": { + "description": "GroupMember represents the relationship between a group and a member.", + "type": "object", + "properties": { + "group_id": { + "description": "group_id is the unique ID of the group.", + "type": "string", + "format": "uint64" + }, + "member": { + "description": "member is the member data.", + "$ref": "#/definitions/cosmos.group.v1.Member" + } + } + }, + "cosmos.group.v1.GroupPolicyInfo": { + "description": "GroupPolicyInfo represents the high-level on-chain information for a group policy.", + "type": "object", + "properties": { + "address": { + "description": "address is the account address of group policy.", + "type": "string" + }, + "admin": { + "description": "admin is the account address of the group admin.", + "type": "string" + }, + "created_at": { + "description": "created_at is a timestamp specifying when a group policy was created.", + "type": "string", + "format": "date-time" + }, + "decision_policy": { + "description": "decision_policy specifies the group policy's decision policy.", + "$ref": "#/definitions/google.protobuf.Any" + }, + "group_id": { + "description": "group_id is the unique ID of the group.", + "type": "string", + "format": "uint64" + }, + "metadata": { + "type": "string", + "title": "metadata is any arbitrary metadata attached to the group policy.\nthe recommended format of the metadata is to be found here:\nhttps://docs.cosmos.network/v0.47/modules/group#decision-policy-1" + }, + "version": { + "description": "version is used to track changes to a group's GroupPolicyInfo structure that\nwould create a different result on a running proposal.", + "type": "string", + "format": "uint64" + } + } + }, + "cosmos.group.v1.Member": { + "description": "Member represents a group member with an account address,\nnon-zero weight, metadata and added_at timestamp.", + "type": "object", + "properties": { + "added_at": { + "description": "added_at is a timestamp specifying when a member was added.", + "type": "string", + "format": "date-time" + }, + "address": { + "description": "address is the member's account address.", + "type": "string" + }, + "metadata": { + "description": "metadata is any arbitrary metadata attached to the member.", + "type": "string" + }, + "weight": { + "description": "weight is the member's voting weight that should be greater than 0.", + "type": "string" + } + } + }, + "cosmos.group.v1.MemberRequest": { + "description": "MemberRequest represents a group member to be used in Msg server requests.\nContrary to `Member`, it doesn't have any `added_at` field\nsince this field cannot be set as part of requests.", + "type": "object", + "properties": { + "address": { + "description": "address is the member's account address.", + "type": "string" + }, + "metadata": { + "description": "metadata is any arbitrary metadata attached to the member.", + "type": "string" + }, + "weight": { + "description": "weight is the member's voting weight that should be greater than 0.", + "type": "string" + } + } + }, + "cosmos.group.v1.MsgCreateGroup": { + "description": "MsgCreateGroup is the Msg/CreateGroup request type.", + "type": "object", + "properties": { + "admin": { + "description": "admin is the account address of the group admin.", + "type": "string" + }, + "members": { + "description": "members defines the group members.", + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/cosmos.group.v1.MemberRequest" + } + }, + "metadata": { + "description": "metadata is any arbitrary metadata to attached to the group.", + "type": "string" + } + } + }, + "cosmos.group.v1.MsgCreateGroupPolicy": { + "description": "MsgCreateGroupPolicy is the Msg/CreateGroupPolicy request type.", + "type": "object", + "properties": { + "admin": { + "description": "admin is the account address of the group admin.", + "type": "string" + }, + "decision_policy": { + "description": "decision_policy specifies the group policy's decision policy.", + "$ref": "#/definitions/google.protobuf.Any" + }, + "group_id": { + "description": "group_id is the unique ID of the group.", + "type": "string", + "format": "uint64" + }, + "metadata": { + "description": "metadata is any arbitrary metadata attached to the group policy.", + "type": "string" + } + } + }, + "cosmos.group.v1.MsgCreateGroupPolicyResponse": { + "description": "MsgCreateGroupPolicyResponse is the Msg/CreateGroupPolicy response type.", + "type": "object", + "properties": { + "address": { + "description": "address is the account address of the newly created group policy.", + "type": "string" + } + } + }, + "cosmos.group.v1.MsgCreateGroupResponse": { + "description": "MsgCreateGroupResponse is the Msg/CreateGroup response type.", + "type": "object", + "properties": { + "group_id": { + "description": "group_id is the unique ID of the newly created group.", + "type": "string", + "format": "uint64" + } + } + }, + "cosmos.group.v1.MsgCreateGroupWithPolicy": { + "description": "MsgCreateGroupWithPolicy is the Msg/CreateGroupWithPolicy request type.", + "type": "object", + "properties": { + "admin": { + "description": "admin is the account address of the group and group policy admin.", + "type": "string" + }, + "decision_policy": { + "description": "decision_policy specifies the group policy's decision policy.", + "$ref": "#/definitions/google.protobuf.Any" + }, + "group_metadata": { + "description": "group_metadata is any arbitrary metadata attached to the group.", + "type": "string" + }, + "group_policy_as_admin": { + "description": "group_policy_as_admin is a boolean field, if set to true, the group policy account address will be used as group\nand group policy admin.", + "type": "boolean" + }, + "group_policy_metadata": { + "description": "group_policy_metadata is any arbitrary metadata attached to the group policy.", + "type": "string" + }, + "members": { + "description": "members defines the group members.", + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/cosmos.group.v1.MemberRequest" + } + } + } + }, + "cosmos.group.v1.MsgCreateGroupWithPolicyResponse": { + "description": "MsgCreateGroupWithPolicyResponse is the Msg/CreateGroupWithPolicy response type.", + "type": "object", + "properties": { + "group_id": { + "description": "group_id is the unique ID of the newly created group with policy.", + "type": "string", + "format": "uint64" + }, + "group_policy_address": { + "description": "group_policy_address is the account address of the newly created group policy.", + "type": "string" + } + } + }, + "cosmos.group.v1.MsgExec": { + "description": "MsgExec is the Msg/Exec request type.", + "type": "object", + "properties": { + "executor": { + "description": "executor is the account address used to execute the proposal.", + "type": "string" + }, + "proposal_id": { + "description": "proposal is the unique ID of the proposal.", + "type": "string", + "format": "uint64" + } + } + }, + "cosmos.group.v1.MsgExecResponse": { + "description": "MsgExecResponse is the Msg/Exec request type.", + "type": "object", + "properties": { + "result": { + "description": "result is the final result of the proposal execution.", + "$ref": "#/definitions/cosmos.group.v1.ProposalExecutorResult" + } + } + }, + "cosmos.group.v1.MsgLeaveGroup": { + "description": "MsgLeaveGroup is the Msg/LeaveGroup request type.", + "type": "object", + "properties": { + "address": { + "description": "address is the account address of the group member.", + "type": "string" + }, + "group_id": { + "description": "group_id is the unique ID of the group.", + "type": "string", + "format": "uint64" + } + } + }, + "cosmos.group.v1.MsgLeaveGroupResponse": { + "description": "MsgLeaveGroupResponse is the Msg/LeaveGroup response type.", + "type": "object" + }, + "cosmos.group.v1.MsgSubmitProposal": { + "description": "MsgSubmitProposal is the Msg/SubmitProposal request type.", + "type": "object", + "properties": { + "exec": { + "description": "exec defines the mode of execution of the proposal,\nwhether it should be executed immediately on creation or not.\nIf so, proposers signatures are considered as Yes votes.", + "$ref": "#/definitions/cosmos.group.v1.Exec" + }, + "group_policy_address": { + "description": "group_policy_address is the account address of group policy.", + "type": "string" + }, + "messages": { + "description": "messages is a list of `sdk.Msg`s that will be executed if the proposal passes.", + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/google.protobuf.Any" + } + }, + "metadata": { + "description": "metadata is any arbitrary metadata attached to the proposal.", + "type": "string" + }, + "proposers": { + "description": "proposers are the account addresses of the proposers.\nProposers signatures will be counted as yes votes.", + "type": "array", + "items": { + "type": "string" + } + }, + "summary": { + "description": "summary is the summary of the proposal.\n\nSince: cosmos-sdk 0.47", + "type": "string" + }, + "title": { + "description": "title is the title of the proposal.\n\nSince: cosmos-sdk 0.47", + "type": "string" + } + } + }, + "cosmos.group.v1.MsgSubmitProposalResponse": { + "description": "MsgSubmitProposalResponse is the Msg/SubmitProposal response type.", + "type": "object", + "properties": { + "proposal_id": { + "description": "proposal is the unique ID of the proposal.", + "type": "string", + "format": "uint64" + } + } + }, + "cosmos.group.v1.MsgUpdateGroupAdmin": { + "description": "MsgUpdateGroupAdmin is the Msg/UpdateGroupAdmin request type.", + "type": "object", + "properties": { + "admin": { + "description": "admin is the current account address of the group admin.", + "type": "string" + }, + "group_id": { + "description": "group_id is the unique ID of the group.", + "type": "string", + "format": "uint64" + }, + "new_admin": { + "description": "new_admin is the group new admin account address.", + "type": "string" + } + } + }, + "cosmos.group.v1.MsgUpdateGroupAdminResponse": { + "description": "MsgUpdateGroupAdminResponse is the Msg/UpdateGroupAdmin response type.", + "type": "object" + }, + "cosmos.group.v1.MsgUpdateGroupMembers": { + "description": "MsgUpdateGroupMembers is the Msg/UpdateGroupMembers request type.", + "type": "object", + "properties": { + "admin": { + "description": "admin is the account address of the group admin.", + "type": "string" + }, + "group_id": { + "description": "group_id is the unique ID of the group.", + "type": "string", + "format": "uint64" + }, + "member_updates": { + "description": "member_updates is the list of members to update,\nset weight to 0 to remove a member.", + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/cosmos.group.v1.MemberRequest" + } + } + } + }, + "cosmos.group.v1.MsgUpdateGroupMembersResponse": { + "description": "MsgUpdateGroupMembersResponse is the Msg/UpdateGroupMembers response type.", + "type": "object" + }, + "cosmos.group.v1.MsgUpdateGroupMetadata": { + "description": "MsgUpdateGroupMetadata is the Msg/UpdateGroupMetadata request type.", + "type": "object", + "properties": { + "admin": { + "description": "admin is the account address of the group admin.", + "type": "string" + }, + "group_id": { + "description": "group_id is the unique ID of the group.", + "type": "string", + "format": "uint64" + }, + "metadata": { + "description": "metadata is the updated group's metadata.", + "type": "string" + } + } + }, + "cosmos.group.v1.MsgUpdateGroupMetadataResponse": { + "description": "MsgUpdateGroupMetadataResponse is the Msg/UpdateGroupMetadata response type.", + "type": "object" + }, + "cosmos.group.v1.MsgUpdateGroupPolicyAdmin": { + "description": "MsgUpdateGroupPolicyAdmin is the Msg/UpdateGroupPolicyAdmin request type.", + "type": "object", + "properties": { + "admin": { + "description": "admin is the account address of the group admin.", + "type": "string" + }, + "group_policy_address": { + "description": "group_policy_address is the account address of the group policy.", + "type": "string" + }, + "new_admin": { + "description": "new_admin is the new group policy admin.", + "type": "string" + } + } + }, + "cosmos.group.v1.MsgUpdateGroupPolicyAdminResponse": { + "description": "MsgUpdateGroupPolicyAdminResponse is the Msg/UpdateGroupPolicyAdmin response type.", + "type": "object" + }, + "cosmos.group.v1.MsgUpdateGroupPolicyDecisionPolicy": { + "description": "MsgUpdateGroupPolicyDecisionPolicy is the Msg/UpdateGroupPolicyDecisionPolicy request type.", + "type": "object", + "properties": { + "admin": { + "description": "admin is the account address of the group admin.", + "type": "string" + }, + "decision_policy": { + "description": "decision_policy is the updated group policy's decision policy.", + "$ref": "#/definitions/google.protobuf.Any" + }, + "group_policy_address": { + "description": "group_policy_address is the account address of group policy.", + "type": "string" + } + } + }, + "cosmos.group.v1.MsgUpdateGroupPolicyDecisionPolicyResponse": { + "description": "MsgUpdateGroupPolicyDecisionPolicyResponse is the Msg/UpdateGroupPolicyDecisionPolicy response type.", + "type": "object" + }, + "cosmos.group.v1.MsgUpdateGroupPolicyMetadata": { + "description": "MsgUpdateGroupPolicyMetadata is the Msg/UpdateGroupPolicyMetadata request type.", + "type": "object", + "properties": { + "admin": { + "description": "admin is the account address of the group admin.", + "type": "string" + }, + "group_policy_address": { + "description": "group_policy_address is the account address of group policy.", + "type": "string" + }, + "metadata": { + "description": "metadata is the group policy metadata to be updated.", + "type": "string" + } + } + }, + "cosmos.group.v1.MsgUpdateGroupPolicyMetadataResponse": { + "description": "MsgUpdateGroupPolicyMetadataResponse is the Msg/UpdateGroupPolicyMetadata response type.", + "type": "object" + }, + "cosmos.group.v1.MsgVote": { + "description": "MsgVote is the Msg/Vote request type.", + "type": "object", + "properties": { + "exec": { + "description": "exec defines whether the proposal should be executed\nimmediately after voting or not.", + "$ref": "#/definitions/cosmos.group.v1.Exec" + }, + "metadata": { + "description": "metadata is any arbitrary metadata attached to the vote.", + "type": "string" + }, + "option": { + "description": "option is the voter's choice on the proposal.", + "$ref": "#/definitions/cosmos.group.v1.VoteOption" + }, + "proposal_id": { + "description": "proposal is the unique ID of the proposal.", + "type": "string", + "format": "uint64" + }, + "voter": { + "description": "voter is the voter account address.", + "type": "string" + } + } + }, + "cosmos.group.v1.MsgVoteResponse": { + "description": "MsgVoteResponse is the Msg/Vote response type.", + "type": "object" + }, + "cosmos.group.v1.MsgWithdrawProposal": { + "description": "MsgWithdrawProposal is the Msg/WithdrawProposal request type.", + "type": "object", + "properties": { + "address": { + "description": "address is the admin of the group policy or one of the proposer of the proposal.", + "type": "string" + }, + "proposal_id": { + "description": "proposal is the unique ID of the proposal.", + "type": "string", + "format": "uint64" + } + } + }, + "cosmos.group.v1.MsgWithdrawProposalResponse": { + "description": "MsgWithdrawProposalResponse is the Msg/WithdrawProposal response type.", + "type": "object" + }, + "cosmos.group.v1.Proposal": { + "description": "Proposal defines a group proposal. Any member of a group can submit a proposal\nfor a group policy to decide upon.\nA proposal consists of a set of `sdk.Msg`s that will be executed if the proposal\npasses as well as some optional metadata associated with the proposal.", + "type": "object", + "properties": { + "executor_result": { + "description": "executor_result is the final result of the proposal execution. Initial value is NotRun.", + "$ref": "#/definitions/cosmos.group.v1.ProposalExecutorResult" + }, + "final_tally_result": { + "description": "final_tally_result contains the sums of all weighted votes for this\nproposal for each vote option. It is empty at submission, and only\npopulated after tallying, at voting period end or at proposal execution,\nwhichever happens first.", + "$ref": "#/definitions/cosmos.group.v1.TallyResult" + }, + "group_policy_address": { + "description": "group_policy_address is the account address of group policy.", + "type": "string" + }, + "group_policy_version": { + "description": "group_policy_version tracks the version of the group policy at proposal submission.\nWhen a decision policy is changed, existing proposals from previous policy\nversions will become invalid with the `ABORTED` status.\nThis field is here for informational purposes only.", + "type": "string", + "format": "uint64" + }, + "group_version": { + "description": "group_version tracks the version of the group at proposal submission.\nThis field is here for informational purposes only.", + "type": "string", + "format": "uint64" + }, + "id": { + "description": "id is the unique id of the proposal.", + "type": "string", + "format": "uint64" + }, + "messages": { + "description": "messages is a list of `sdk.Msg`s that will be executed if the proposal passes.", + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/google.protobuf.Any" + } + }, + "metadata": { + "type": "string", + "title": "metadata is any arbitrary metadata attached to the proposal.\nthe recommended format of the metadata is to be found here:\nhttps://docs.cosmos.network/v0.47/modules/group#proposal-4" + }, + "proposers": { + "description": "proposers are the account addresses of the proposers.", + "type": "array", + "items": { + "type": "string" + } + }, + "status": { + "description": "status represents the high level position in the life cycle of the proposal. Initial value is Submitted.", + "$ref": "#/definitions/cosmos.group.v1.ProposalStatus" + }, + "submit_time": { + "description": "submit_time is a timestamp specifying when a proposal was submitted.", + "type": "string", + "format": "date-time" + }, + "summary": { + "description": "Since: cosmos-sdk 0.47", + "type": "string", + "title": "summary is a short summary of the proposal" + }, + "title": { + "description": "Since: cosmos-sdk 0.47", + "type": "string", + "title": "title is the title of the proposal" + }, + "voting_period_end": { + "description": "voting_period_end is the timestamp before which voting must be done.\nUnless a successful MsgExec is called before (to execute a proposal whose\ntally is successful before the voting period ends), tallying will be done\nat this point, and the `final_tally_result`and `status` fields will be\naccordingly updated.", + "type": "string", + "format": "date-time" + } + } + }, + "cosmos.group.v1.ProposalExecutorResult": { + "description": "ProposalExecutorResult defines types of proposal executor results.\n\n - PROPOSAL_EXECUTOR_RESULT_UNSPECIFIED: An empty value is not allowed.\n - PROPOSAL_EXECUTOR_RESULT_NOT_RUN: We have not yet run the executor.\n - PROPOSAL_EXECUTOR_RESULT_SUCCESS: The executor was successful and proposed action updated state.\n - PROPOSAL_EXECUTOR_RESULT_FAILURE: The executor returned an error and proposed action didn't update state.", + "type": "string", + "default": "PROPOSAL_EXECUTOR_RESULT_UNSPECIFIED", + "enum": [ + "PROPOSAL_EXECUTOR_RESULT_UNSPECIFIED", + "PROPOSAL_EXECUTOR_RESULT_NOT_RUN", + "PROPOSAL_EXECUTOR_RESULT_SUCCESS", + "PROPOSAL_EXECUTOR_RESULT_FAILURE" + ] + }, + "cosmos.group.v1.ProposalStatus": { + "description": "ProposalStatus defines proposal statuses.\n\n - PROPOSAL_STATUS_UNSPECIFIED: An empty value is invalid and not allowed.\n - PROPOSAL_STATUS_SUBMITTED: Initial status of a proposal when submitted.\n - PROPOSAL_STATUS_ACCEPTED: Final status of a proposal when the final tally is done and the outcome\npasses the group policy's decision policy.\n - PROPOSAL_STATUS_REJECTED: Final status of a proposal when the final tally is done and the outcome\nis rejected by the group policy's decision policy.\n - PROPOSAL_STATUS_ABORTED: Final status of a proposal when the group policy is modified before the\nfinal tally.\n - PROPOSAL_STATUS_WITHDRAWN: A proposal can be withdrawn before the voting start time by the owner.\nWhen this happens the final status is Withdrawn.", + "type": "string", + "default": "PROPOSAL_STATUS_UNSPECIFIED", + "enum": [ + "PROPOSAL_STATUS_UNSPECIFIED", + "PROPOSAL_STATUS_SUBMITTED", + "PROPOSAL_STATUS_ACCEPTED", + "PROPOSAL_STATUS_REJECTED", + "PROPOSAL_STATUS_ABORTED", + "PROPOSAL_STATUS_WITHDRAWN" + ] + }, + "cosmos.group.v1.QueryGroupInfoResponse": { + "description": "QueryGroupInfoResponse is the Query/GroupInfo response type.", + "type": "object", + "properties": { + "info": { + "description": "info is the GroupInfo of the group.", + "$ref": "#/definitions/cosmos.group.v1.GroupInfo" + } + } + }, + "cosmos.group.v1.QueryGroupMembersResponse": { + "description": "QueryGroupMembersResponse is the Query/GroupMembersResponse response type.", + "type": "object", + "properties": { + "members": { + "description": "members are the members of the group with given group_id.", + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/cosmos.group.v1.GroupMember" + } + }, + "pagination": { + "description": "pagination defines the pagination in the response.", + "$ref": "#/definitions/cosmos.base.query.v1beta1.PageResponse" + } + } + }, + "cosmos.group.v1.QueryGroupPoliciesByAdminResponse": { + "description": "QueryGroupPoliciesByAdminResponse is the Query/GroupPoliciesByAdmin response type.", + "type": "object", + "properties": { + "group_policies": { + "description": "group_policies are the group policies info with provided admin.", + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/cosmos.group.v1.GroupPolicyInfo" + } + }, + "pagination": { + "description": "pagination defines the pagination in the response.", + "$ref": "#/definitions/cosmos.base.query.v1beta1.PageResponse" + } + } + }, + "cosmos.group.v1.QueryGroupPoliciesByGroupResponse": { + "description": "QueryGroupPoliciesByGroupResponse is the Query/GroupPoliciesByGroup response type.", + "type": "object", + "properties": { + "group_policies": { + "description": "group_policies are the group policies info associated with the provided group.", + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/cosmos.group.v1.GroupPolicyInfo" + } + }, + "pagination": { + "description": "pagination defines the pagination in the response.", + "$ref": "#/definitions/cosmos.base.query.v1beta1.PageResponse" + } + } + }, + "cosmos.group.v1.QueryGroupPolicyInfoResponse": { + "description": "QueryGroupPolicyInfoResponse is the Query/GroupPolicyInfo response type.", + "type": "object", + "properties": { + "info": { + "description": "info is the GroupPolicyInfo of the group policy.", + "$ref": "#/definitions/cosmos.group.v1.GroupPolicyInfo" + } + } + }, + "cosmos.group.v1.QueryGroupsByAdminResponse": { + "description": "QueryGroupsByAdminResponse is the Query/GroupsByAdminResponse response type.", + "type": "object", + "properties": { + "groups": { + "description": "groups are the groups info with the provided admin.", + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/cosmos.group.v1.GroupInfo" + } + }, + "pagination": { + "description": "pagination defines the pagination in the response.", + "$ref": "#/definitions/cosmos.base.query.v1beta1.PageResponse" + } + } + }, + "cosmos.group.v1.QueryGroupsByMemberResponse": { + "description": "QueryGroupsByMemberResponse is the Query/GroupsByMember response type.", + "type": "object", + "properties": { + "groups": { + "description": "groups are the groups info with the provided group member.", + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/cosmos.group.v1.GroupInfo" + } + }, + "pagination": { + "description": "pagination defines the pagination in the response.", + "$ref": "#/definitions/cosmos.base.query.v1beta1.PageResponse" + } + } + }, + "cosmos.group.v1.QueryGroupsResponse": { + "description": "QueryGroupsResponse is the Query/Groups response type.\n\nSince: cosmos-sdk 0.47.1", + "type": "object", + "properties": { + "groups": { + "description": "`groups` is all the groups present in state.", + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/cosmos.group.v1.GroupInfo" + } + }, + "pagination": { + "description": "pagination defines the pagination in the response.", + "$ref": "#/definitions/cosmos.base.query.v1beta1.PageResponse" + } + } + }, + "cosmos.group.v1.QueryProposalResponse": { + "description": "QueryProposalResponse is the Query/Proposal response type.", + "type": "object", + "properties": { + "proposal": { + "description": "proposal is the proposal info.", + "$ref": "#/definitions/cosmos.group.v1.Proposal" + } + } + }, + "cosmos.group.v1.QueryProposalsByGroupPolicyResponse": { + "description": "QueryProposalsByGroupPolicyResponse is the Query/ProposalByGroupPolicy response type.", + "type": "object", + "properties": { + "pagination": { + "description": "pagination defines the pagination in the response.", + "$ref": "#/definitions/cosmos.base.query.v1beta1.PageResponse" + }, + "proposals": { + "description": "proposals are the proposals with given group policy.", + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/cosmos.group.v1.Proposal" + } + } + } + }, + "cosmos.group.v1.QueryTallyResultResponse": { + "description": "QueryTallyResultResponse is the Query/TallyResult response type.", + "type": "object", + "properties": { + "tally": { + "description": "tally defines the requested tally.", + "$ref": "#/definitions/cosmos.group.v1.TallyResult" + } + } + }, + "cosmos.group.v1.QueryVoteByProposalVoterResponse": { + "description": "QueryVoteByProposalVoterResponse is the Query/VoteByProposalVoter response type.", + "type": "object", + "properties": { + "vote": { + "description": "vote is the vote with given proposal_id and voter.", + "$ref": "#/definitions/cosmos.group.v1.Vote" + } + } + }, + "cosmos.group.v1.QueryVotesByProposalResponse": { + "description": "QueryVotesByProposalResponse is the Query/VotesByProposal response type.", + "type": "object", + "properties": { + "pagination": { + "description": "pagination defines the pagination in the response.", + "$ref": "#/definitions/cosmos.base.query.v1beta1.PageResponse" + }, + "votes": { + "description": "votes are the list of votes for given proposal_id.", + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/cosmos.group.v1.Vote" + } + } + } + }, + "cosmos.group.v1.QueryVotesByVoterResponse": { + "description": "QueryVotesByVoterResponse is the Query/VotesByVoter response type.", + "type": "object", + "properties": { + "pagination": { + "description": "pagination defines the pagination in the response.", + "$ref": "#/definitions/cosmos.base.query.v1beta1.PageResponse" + }, + "votes": { + "description": "votes are the list of votes by given voter.", + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/cosmos.group.v1.Vote" + } + } + } + }, + "cosmos.group.v1.TallyResult": { + "description": "TallyResult represents the sum of weighted votes for each vote option.", + "type": "object", + "properties": { + "abstain_count": { + "description": "abstain_count is the weighted sum of abstainers.", + "type": "string" + }, + "no_count": { + "description": "no_count is the weighted sum of no votes.", + "type": "string" + }, + "no_with_veto_count": { + "description": "no_with_veto_count is the weighted sum of veto.", + "type": "string" + }, + "yes_count": { + "description": "yes_count is the weighted sum of yes votes.", + "type": "string" + } + } + }, + "cosmos.group.v1.Vote": { + "type": "object", + "title": "Vote represents a vote for a proposal.string metadata", + "properties": { + "metadata": { + "type": "string", + "title": "metadata is any arbitrary metadata attached to the vote.\nthe recommended format of the metadata is to be found here: https://docs.cosmos.network/v0.47/modules/group#vote-2" + }, + "option": { + "description": "option is the voter's choice on the proposal.", + "$ref": "#/definitions/cosmos.group.v1.VoteOption" + }, + "proposal_id": { + "description": "proposal is the unique ID of the proposal.", + "type": "string", + "format": "uint64" + }, + "submit_time": { + "description": "submit_time is the timestamp when the vote was submitted.", + "type": "string", + "format": "date-time" + }, + "voter": { + "description": "voter is the account address of the voter.", + "type": "string" + } + } + }, + "cosmos.group.v1.VoteOption": { + "description": "VoteOption enumerates the valid vote options for a given proposal.\n\n - VOTE_OPTION_UNSPECIFIED: VOTE_OPTION_UNSPECIFIED defines an unspecified vote option which will\nreturn an error.\n - VOTE_OPTION_YES: VOTE_OPTION_YES defines a yes vote option.\n - VOTE_OPTION_ABSTAIN: VOTE_OPTION_ABSTAIN defines an abstain vote option.\n - VOTE_OPTION_NO: VOTE_OPTION_NO defines a no vote option.\n - VOTE_OPTION_NO_WITH_VETO: VOTE_OPTION_NO_WITH_VETO defines a no with veto vote option.", + "type": "string", + "default": "VOTE_OPTION_UNSPECIFIED", + "enum": [ + "VOTE_OPTION_UNSPECIFIED", + "VOTE_OPTION_YES", + "VOTE_OPTION_ABSTAIN", + "VOTE_OPTION_NO", + "VOTE_OPTION_NO_WITH_VETO" + ] + }, + "cosmos.mint.v1beta1.MsgUpdateParams": { + "description": "MsgUpdateParams is the Msg/UpdateParams request type.\n\nSince: cosmos-sdk 0.47", + "type": "object", + "properties": { + "authority": { + "description": "authority is the address that controls the module (defaults to x/gov unless overwritten).", + "type": "string" + }, + "params": { + "description": "params defines the x/mint parameters to update.\n\nNOTE: All parameters must be supplied.", + "$ref": "#/definitions/cosmos.mint.v1beta1.Params" + } + } + }, + "cosmos.mint.v1beta1.MsgUpdateParamsResponse": { + "description": "MsgUpdateParamsResponse defines the response structure for executing a\nMsgUpdateParams message.\n\nSince: cosmos-sdk 0.47", + "type": "object" + }, + "cosmos.mint.v1beta1.Params": { + "description": "Params defines the parameters for the x/mint module.", + "type": "object", + "properties": { + "blocks_per_year": { + "type": "string", + "format": "uint64", + "title": "expected blocks per year" + }, + "goal_bonded": { + "type": "string", + "title": "goal of percent bonded atoms" + }, + "inflation_max": { + "type": "string", + "title": "maximum inflation rate" + }, + "inflation_min": { + "type": "string", + "title": "minimum inflation rate" + }, + "inflation_rate_change": { + "type": "string", + "title": "maximum annual change in inflation rate" + }, + "mint_denom": { + "type": "string", + "title": "type of coin to mint" + } + } + }, + "cosmos.mint.v1beta1.QueryAnnualProvisionsResponse": { + "description": "QueryAnnualProvisionsResponse is the response type for the\nQuery/AnnualProvisions RPC method.", + "type": "object", + "properties": { + "annual_provisions": { + "description": "annual_provisions is the current minting annual provisions value.", + "type": "string", + "format": "byte" + } + } + }, + "cosmos.mint.v1beta1.QueryInflationResponse": { + "description": "QueryInflationResponse is the response type for the Query/Inflation RPC\nmethod.", + "type": "object", + "properties": { + "inflation": { + "description": "inflation is the current minting inflation value.", + "type": "string", + "format": "byte" + } + } + }, + "cosmos.mint.v1beta1.QueryParamsResponse": { + "description": "QueryParamsResponse is the response type for the Query/Params RPC method.", + "type": "object", + "properties": { + "params": { + "description": "params defines the parameters of the module.", + "$ref": "#/definitions/cosmos.mint.v1beta1.Params" + } + } + }, + "cosmos.nft.v1beta1.Class": { + "description": "Class defines the class of the nft type.", + "type": "object", + "properties": { + "data": { + "title": "data is the app specific metadata of the NFT class. Optional", + "$ref": "#/definitions/google.protobuf.Any" + }, + "description": { + "type": "string", + "title": "description is a brief description of nft classification. Optional" + }, + "id": { + "type": "string", + "title": "id defines the unique identifier of the NFT classification, similar to the contract address of ERC721" + }, + "name": { + "type": "string", + "title": "name defines the human-readable name of the NFT classification. Optional" + }, + "symbol": { + "type": "string", + "title": "symbol is an abbreviated name for nft classification. Optional" + }, + "uri": { + "type": "string", + "title": "uri for the class metadata stored off chain. It can define schema for Class and NFT `Data` attributes. Optional" + }, + "uri_hash": { + "type": "string", + "title": "uri_hash is a hash of the document pointed by uri. Optional" + } + } + }, + "cosmos.nft.v1beta1.MsgSend": { + "description": "MsgSend represents a message to send a nft from one account to another account.", + "type": "object", + "properties": { + "class_id": { + "type": "string", + "title": "class_id defines the unique identifier of the nft classification, similar to the contract address of ERC721" + }, + "id": { + "type": "string", + "title": "id defines the unique identification of nft" + }, + "receiver": { + "type": "string", + "title": "receiver is the receiver address of nft" + }, + "sender": { + "type": "string", + "title": "sender is the address of the owner of nft" + } + } + }, + "cosmos.nft.v1beta1.MsgSendResponse": { + "description": "MsgSendResponse defines the Msg/Send response type.", + "type": "object" + }, + "cosmos.nft.v1beta1.NFT": { + "description": "NFT defines the NFT.", + "type": "object", + "properties": { + "class_id": { + "type": "string", + "title": "class_id associated with the NFT, similar to the contract address of ERC721" + }, + "data": { + "title": "data is an app specific data of the NFT. Optional", + "$ref": "#/definitions/google.protobuf.Any" + }, + "id": { + "type": "string", + "title": "id is a unique identifier of the NFT" + }, + "uri": { + "type": "string", + "title": "uri for the NFT metadata stored off chain" + }, + "uri_hash": { + "type": "string", + "title": "uri_hash is a hash of the document pointed by uri" + } + } + }, + "cosmos.nft.v1beta1.QueryBalanceResponse": { + "type": "object", + "title": "QueryBalanceResponse is the response type for the Query/Balance RPC method", + "properties": { + "amount": { + "type": "string", + "format": "uint64", + "title": "amount is the number of all NFTs of a given class owned by the owner" + } + } + }, + "cosmos.nft.v1beta1.QueryClassResponse": { + "type": "object", + "title": "QueryClassResponse is the response type for the Query/Class RPC method", + "properties": { + "class": { + "description": "class defines the class of the nft type.", + "$ref": "#/definitions/cosmos.nft.v1beta1.Class" + } + } + }, + "cosmos.nft.v1beta1.QueryClassesResponse": { + "type": "object", + "title": "QueryClassesResponse is the response type for the Query/Classes RPC method", + "properties": { + "classes": { + "description": "class defines the class of the nft type.", + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/cosmos.nft.v1beta1.Class" + } + }, + "pagination": { + "description": "pagination defines the pagination in the response.", + "$ref": "#/definitions/cosmos.base.query.v1beta1.PageResponse" + } + } + }, + "cosmos.nft.v1beta1.QueryNFTResponse": { + "type": "object", + "title": "QueryNFTResponse is the response type for the Query/NFT RPC method", + "properties": { + "nft": { + "title": "owner is the owner address of the nft", + "$ref": "#/definitions/cosmos.nft.v1beta1.NFT" + } + } + }, + "cosmos.nft.v1beta1.QueryNFTsResponse": { + "type": "object", + "title": "QueryNFTsResponse is the response type for the Query/NFTs RPC methods", + "properties": { + "nfts": { + "type": "array", + "title": "NFT defines the NFT", + "items": { + "type": "object", + "$ref": "#/definitions/cosmos.nft.v1beta1.NFT" + } + }, + "pagination": { + "description": "pagination defines the pagination in the response.", + "$ref": "#/definitions/cosmos.base.query.v1beta1.PageResponse" + } + } + }, + "cosmos.nft.v1beta1.QueryOwnerResponse": { + "type": "object", + "title": "QueryOwnerResponse is the response type for the Query/Owner RPC method", + "properties": { + "owner": { + "type": "string", + "title": "owner is the owner address of the nft" + } + } + }, + "cosmos.nft.v1beta1.QuerySupplyResponse": { + "type": "object", + "title": "QuerySupplyResponse is the response type for the Query/Supply RPC method", + "properties": { + "amount": { + "type": "string", + "format": "uint64", + "title": "amount is the number of all NFTs from the given class" + } + } + }, + "cosmos.params.v1beta1.ParamChange": { + "description": "ParamChange defines an individual parameter change, for use in\nParameterChangeProposal.", + "type": "object", + "properties": { + "key": { + "type": "string" + }, + "subspace": { + "type": "string" + }, + "value": { + "type": "string" + } + } + }, + "cosmos.params.v1beta1.QueryParamsResponse": { + "description": "QueryParamsResponse is response type for the Query/Params RPC method.", + "type": "object", + "properties": { + "param": { + "description": "param defines the queried parameter.", + "$ref": "#/definitions/cosmos.params.v1beta1.ParamChange" + } + } + }, + "cosmos.params.v1beta1.QuerySubspacesResponse": { + "description": "QuerySubspacesResponse defines the response types for querying for all\nregistered subspaces and all keys for a subspace.\n\nSince: cosmos-sdk 0.46", + "type": "object", + "properties": { + "subspaces": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/cosmos.params.v1beta1.Subspace" + } + } + } + }, + "cosmos.params.v1beta1.Subspace": { + "description": "Subspace defines a parameter subspace name and all the keys that exist for\nthe subspace.\n\nSince: cosmos-sdk 0.46", + "type": "object", + "properties": { + "keys": { + "type": "array", + "items": { + "type": "string" + } + }, + "subspace": { + "type": "string" + } + } + }, + "cosmos.slashing.v1beta1.MsgUnjail": { + "type": "object", + "title": "MsgUnjail defines the Msg/Unjail request type", + "properties": { + "validator_addr": { + "type": "string" + } + } + }, + "cosmos.slashing.v1beta1.MsgUnjailResponse": { + "type": "object", + "title": "MsgUnjailResponse defines the Msg/Unjail response type" + }, + "cosmos.slashing.v1beta1.MsgUpdateParams": { + "description": "MsgUpdateParams is the Msg/UpdateParams request type.\n\nSince: cosmos-sdk 0.47", + "type": "object", + "properties": { + "authority": { + "description": "authority is the address that controls the module (defaults to x/gov unless overwritten).", + "type": "string" + }, + "params": { + "description": "params defines the x/slashing parameters to update.\n\nNOTE: All parameters must be supplied.", + "$ref": "#/definitions/cosmos.slashing.v1beta1.Params" + } + } + }, + "cosmos.slashing.v1beta1.MsgUpdateParamsResponse": { + "description": "MsgUpdateParamsResponse defines the response structure for executing a\nMsgUpdateParams message.\n\nSince: cosmos-sdk 0.47", + "type": "object" + }, + "cosmos.slashing.v1beta1.Params": { + "description": "Params represents the parameters used for by the slashing module.", + "type": "object", + "properties": { + "downtime_jail_duration": { + "type": "string" + }, + "min_signed_per_window": { + "type": "string", + "format": "byte" + }, + "signed_blocks_window": { + "type": "string", + "format": "int64" + }, + "slash_fraction_double_sign": { + "type": "string", + "format": "byte" + }, + "slash_fraction_downtime": { + "type": "string", + "format": "byte" + } + } + }, + "cosmos.slashing.v1beta1.QueryParamsResponse": { + "type": "object", + "title": "QueryParamsResponse is the response type for the Query/Params RPC method", + "properties": { + "params": { + "$ref": "#/definitions/cosmos.slashing.v1beta1.Params" + } + } + }, + "cosmos.slashing.v1beta1.QuerySigningInfoResponse": { + "type": "object", + "title": "QuerySigningInfoResponse is the response type for the Query/SigningInfo RPC\nmethod", + "properties": { + "val_signing_info": { + "title": "val_signing_info is the signing info of requested val cons address", + "$ref": "#/definitions/cosmos.slashing.v1beta1.ValidatorSigningInfo" + } + } + }, + "cosmos.slashing.v1beta1.QuerySigningInfosResponse": { + "type": "object", + "title": "QuerySigningInfosResponse is the response type for the Query/SigningInfos RPC\nmethod", + "properties": { + "info": { + "type": "array", + "title": "info is the signing info of all validators", + "items": { + "type": "object", + "$ref": "#/definitions/cosmos.slashing.v1beta1.ValidatorSigningInfo" + } + }, + "pagination": { + "$ref": "#/definitions/cosmos.base.query.v1beta1.PageResponse" + } + } + }, + "cosmos.slashing.v1beta1.ValidatorSigningInfo": { + "description": "ValidatorSigningInfo defines a validator's signing info for monitoring their\nliveness activity.", + "type": "object", + "properties": { + "address": { + "type": "string" + }, + "index_offset": { + "description": "Index which is incremented every time a validator is bonded in a block and\n_may_ have signed a pre-commit or not. This in conjunction with the\nsigned_blocks_window param determines the index in the missed block bitmap.", + "type": "string", + "format": "int64" + }, + "jailed_until": { + "description": "Timestamp until which the validator is jailed due to liveness downtime.", + "type": "string", + "format": "date-time" + }, + "missed_blocks_counter": { + "description": "A counter of missed (unsigned) blocks. It is used to avoid unnecessary\nreads in the missed block bitmap.", + "type": "string", + "format": "int64" + }, + "start_height": { + "type": "string", + "format": "int64", + "title": "Height at which validator was first a candidate OR was un-jailed" + }, + "tombstoned": { + "description": "Whether or not a validator has been tombstoned (killed out of validator\nset). It is set once the validator commits an equivocation or for any other\nconfigured misbehavior.", + "type": "boolean" + } + } + }, + "cosmos.staking.v1beta1.BondStatus": { + "description": "BondStatus is the status of a validator.\n\n - BOND_STATUS_UNSPECIFIED: UNSPECIFIED defines an invalid validator status.\n - BOND_STATUS_UNBONDED: UNBONDED defines a validator that is not bonded.\n - BOND_STATUS_UNBONDING: UNBONDING defines a validator that is unbonding.\n - BOND_STATUS_BONDED: BONDED defines a validator that is bonded.", + "type": "string", + "default": "BOND_STATUS_UNSPECIFIED", + "enum": [ + "BOND_STATUS_UNSPECIFIED", + "BOND_STATUS_UNBONDED", + "BOND_STATUS_UNBONDING", + "BOND_STATUS_BONDED" + ] + }, + "cosmos.staking.v1beta1.Commission": { + "description": "Commission defines commission parameters for a given validator.", + "type": "object", + "properties": { + "commission_rates": { + "description": "commission_rates defines the initial commission rates to be used for creating a validator.", + "$ref": "#/definitions/cosmos.staking.v1beta1.CommissionRates" + }, + "update_time": { + "description": "update_time is the last time the commission rate was changed.", + "type": "string", + "format": "date-time" + } + } + }, + "cosmos.staking.v1beta1.CommissionRates": { + "description": "CommissionRates defines the initial commission rates to be used for creating\na validator.", + "type": "object", + "properties": { + "max_change_rate": { + "description": "max_change_rate defines the maximum daily increase of the validator commission, as a fraction.", + "type": "string" + }, + "max_rate": { + "description": "max_rate defines the maximum commission rate which validator can ever charge, as a fraction.", + "type": "string" + }, + "rate": { + "description": "rate is the commission rate charged to delegators, as a fraction.", + "type": "string" + } + } + }, + "cosmos.staking.v1beta1.Delegation": { + "description": "Delegation represents the bond with tokens held by an account. It is\nowned by one delegator, and is associated with the voting power of one\nvalidator.", + "type": "object", + "properties": { + "delegator_address": { + "description": "delegator_address is the encoded address of the delegator.", + "type": "string" + }, + "shares": { + "description": "shares define the delegation shares received.", + "type": "string" + }, + "validator_address": { + "description": "validator_address is the encoded address of the validator.", + "type": "string" + } + } + }, + "cosmos.staking.v1beta1.DelegationResponse": { + "description": "DelegationResponse is equivalent to Delegation except that it contains a\nbalance in addition to shares which is more suitable for client responses.", + "type": "object", + "properties": { + "balance": { + "$ref": "#/definitions/cosmos.base.v1beta1.Coin" + }, + "delegation": { + "$ref": "#/definitions/cosmos.staking.v1beta1.Delegation" + } + } + }, + "cosmos.staking.v1beta1.Description": { + "description": "Description defines a validator description.", + "type": "object", + "properties": { + "details": { + "description": "details define other optional details.", + "type": "string" + }, + "identity": { + "description": "identity defines an optional identity signature (ex. UPort or Keybase).", + "type": "string" + }, + "moniker": { + "description": "moniker defines a human-readable name for the validator.", + "type": "string" + }, + "security_contact": { + "description": "security_contact defines an optional email for security contact.", + "type": "string" + }, + "website": { + "description": "website defines an optional website link.", + "type": "string" + } + } + }, + "cosmos.staking.v1beta1.HistoricalInfo": { + "description": "HistoricalInfo contains header and validator information for a given block.\nIt is stored as part of staking module's state, which persists the `n` most\nrecent HistoricalInfo\n(`n` is set by the staking module's `historical_entries` parameter).", + "type": "object", + "properties": { + "header": { + "$ref": "#/definitions/tendermint.types.Header" + }, + "valset": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/cosmos.staking.v1beta1.Validator" + } + } + } + }, + "cosmos.staking.v1beta1.MsgBeginRedelegate": { + "description": "MsgBeginRedelegate defines a SDK message for performing a redelegation\nof coins from a delegator and source validator to a destination validator.", + "type": "object", + "properties": { + "amount": { + "$ref": "#/definitions/cosmos.base.v1beta1.Coin" + }, + "delegator_address": { + "type": "string" + }, + "validator_dst_address": { + "type": "string" + }, + "validator_src_address": { + "type": "string" + } + } + }, + "cosmos.staking.v1beta1.MsgBeginRedelegateResponse": { + "description": "MsgBeginRedelegateResponse defines the Msg/BeginRedelegate response type.", + "type": "object", + "properties": { + "completion_time": { + "type": "string", + "format": "date-time" + } + } + }, + "cosmos.staking.v1beta1.MsgCancelUnbondingDelegation": { + "description": "Since: cosmos-sdk 0.46", + "type": "object", + "title": "MsgCancelUnbondingDelegation defines the SDK message for performing a cancel unbonding delegation for delegator", + "properties": { + "amount": { + "title": "amount is always less than or equal to unbonding delegation entry balance", + "$ref": "#/definitions/cosmos.base.v1beta1.Coin" + }, + "creation_height": { + "description": "creation_height is the height which the unbonding took place.", + "type": "string", + "format": "int64" + }, + "delegator_address": { + "type": "string" + }, + "validator_address": { + "type": "string" + } + } + }, + "cosmos.staking.v1beta1.MsgCancelUnbondingDelegationResponse": { + "description": "Since: cosmos-sdk 0.46", + "type": "object", + "title": "MsgCancelUnbondingDelegationResponse" + }, + "cosmos.staking.v1beta1.MsgCreateValidator": { + "description": "MsgCreateValidator defines a SDK message for creating a new validator.", + "type": "object", + "properties": { + "commission": { + "$ref": "#/definitions/cosmos.staking.v1beta1.CommissionRates" + }, + "delegator_address": { + "description": "Deprecated: Use of Delegator Address in MsgCreateValidator is deprecated.\nThe validator address bytes and delegator address bytes refer to the same account while creating validator (defer\nonly in bech32 notation).", + "type": "string" + }, + "description": { + "$ref": "#/definitions/cosmos.staking.v1beta1.Description" + }, + "min_self_delegation": { + "type": "string" + }, + "pubkey": { + "$ref": "#/definitions/google.protobuf.Any" + }, + "validator_address": { + "type": "string" + }, + "value": { + "$ref": "#/definitions/cosmos.base.v1beta1.Coin" + } + } + }, + "cosmos.staking.v1beta1.MsgCreateValidatorResponse": { + "description": "MsgCreateValidatorResponse defines the Msg/CreateValidator response type.", + "type": "object" + }, + "cosmos.staking.v1beta1.MsgDelegate": { + "description": "MsgDelegate defines a SDK message for performing a delegation of coins\nfrom a delegator to a validator.", + "type": "object", + "properties": { + "amount": { + "$ref": "#/definitions/cosmos.base.v1beta1.Coin" + }, + "delegator_address": { + "type": "string" + }, + "validator_address": { + "type": "string" + } + } + }, + "cosmos.staking.v1beta1.MsgDelegateResponse": { + "description": "MsgDelegateResponse defines the Msg/Delegate response type.", + "type": "object" + }, + "cosmos.staking.v1beta1.MsgEditValidator": { + "description": "MsgEditValidator defines a SDK message for editing an existing validator.", + "type": "object", + "properties": { + "commission_rate": { + "type": "string", + "title": "We pass a reference to the new commission rate and min self delegation as\nit's not mandatory to update. If not updated, the deserialized rate will be\nzero with no way to distinguish if an update was intended.\nREF: #2373" + }, + "description": { + "$ref": "#/definitions/cosmos.staking.v1beta1.Description" + }, + "min_self_delegation": { + "type": "string" + }, + "validator_address": { + "type": "string" + } + } + }, + "cosmos.staking.v1beta1.MsgEditValidatorResponse": { + "description": "MsgEditValidatorResponse defines the Msg/EditValidator response type.", + "type": "object" + }, + "cosmos.staking.v1beta1.MsgUndelegate": { + "description": "MsgUndelegate defines a SDK message for performing an undelegation from a\ndelegate and a validator.", + "type": "object", + "properties": { + "amount": { + "$ref": "#/definitions/cosmos.base.v1beta1.Coin" + }, + "delegator_address": { + "type": "string" + }, + "validator_address": { + "type": "string" + } + } + }, + "cosmos.staking.v1beta1.MsgUndelegateResponse": { + "description": "MsgUndelegateResponse defines the Msg/Undelegate response type.", + "type": "object", + "properties": { + "amount": { + "description": "Since: cosmos-sdk 0.50", + "title": "amount returns the amount of undelegated coins", + "$ref": "#/definitions/cosmos.base.v1beta1.Coin" + }, + "completion_time": { + "type": "string", + "format": "date-time" + } + } + }, + "cosmos.staking.v1beta1.MsgUpdateParams": { + "description": "MsgUpdateParams is the Msg/UpdateParams request type.\n\nSince: cosmos-sdk 0.47", + "type": "object", + "properties": { + "authority": { + "description": "authority is the address that controls the module (defaults to x/gov unless overwritten).", + "type": "string" + }, + "params": { + "description": "params defines the x/staking parameters to update.\n\nNOTE: All parameters must be supplied.", + "$ref": "#/definitions/cosmos.staking.v1beta1.Params" + } + } + }, + "cosmos.staking.v1beta1.MsgUpdateParamsResponse": { + "description": "MsgUpdateParamsResponse defines the response structure for executing a\nMsgUpdateParams message.\n\nSince: cosmos-sdk 0.47", + "type": "object" + }, + "cosmos.staking.v1beta1.Params": { + "description": "Params defines the parameters for the x/staking module.", + "type": "object", + "properties": { + "bond_denom": { + "description": "bond_denom defines the bondable coin denomination.", + "type": "string" + }, + "historical_entries": { + "description": "historical_entries is the number of historical entries to persist.", + "type": "integer", + "format": "int64" + }, + "max_entries": { + "description": "max_entries is the max entries for either unbonding delegation or redelegation (per pair/trio).", + "type": "integer", + "format": "int64" + }, + "max_validators": { + "description": "max_validators is the maximum number of validators.", + "type": "integer", + "format": "int64" + }, + "min_commission_rate": { + "type": "string", + "title": "min_commission_rate is the chain-wide minimum commission rate that a validator can charge their delegators" + }, + "unbonding_time": { + "description": "unbonding_time is the time duration of unbonding.", + "type": "string" + } + } + }, + "cosmos.staking.v1beta1.Pool": { + "description": "Pool is used for tracking bonded and not-bonded token supply of the bond\ndenomination.", + "type": "object", + "properties": { + "bonded_tokens": { + "type": "string" + }, + "not_bonded_tokens": { + "type": "string" + } + } + }, + "cosmos.staking.v1beta1.QueryDelegationResponse": { + "description": "QueryDelegationResponse is response type for the Query/Delegation RPC method.", + "type": "object", + "properties": { + "delegation_response": { + "description": "delegation_responses defines the delegation info of a delegation.", + "$ref": "#/definitions/cosmos.staking.v1beta1.DelegationResponse" + } + } + }, + "cosmos.staking.v1beta1.QueryDelegatorDelegationsResponse": { + "description": "QueryDelegatorDelegationsResponse is response type for the\nQuery/DelegatorDelegations RPC method.", + "type": "object", + "properties": { + "delegation_responses": { + "description": "delegation_responses defines all the delegations' info of a delegator.", + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/cosmos.staking.v1beta1.DelegationResponse" + } + }, + "pagination": { + "description": "pagination defines the pagination in the response.", + "$ref": "#/definitions/cosmos.base.query.v1beta1.PageResponse" + } + } + }, + "cosmos.staking.v1beta1.QueryDelegatorUnbondingDelegationsResponse": { + "description": "QueryUnbondingDelegatorDelegationsResponse is response type for the\nQuery/UnbondingDelegatorDelegations RPC method.", + "type": "object", + "properties": { + "pagination": { + "description": "pagination defines the pagination in the response.", + "$ref": "#/definitions/cosmos.base.query.v1beta1.PageResponse" + }, + "unbonding_responses": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/cosmos.staking.v1beta1.UnbondingDelegation" + } + } + } + }, + "cosmos.staking.v1beta1.QueryDelegatorValidatorResponse": { + "description": "QueryDelegatorValidatorResponse response type for the\nQuery/DelegatorValidator RPC method.", + "type": "object", + "properties": { + "validator": { + "description": "validator defines the validator info.", + "$ref": "#/definitions/cosmos.staking.v1beta1.Validator" + } + } + }, + "cosmos.staking.v1beta1.QueryDelegatorValidatorsResponse": { + "description": "QueryDelegatorValidatorsResponse is response type for the\nQuery/DelegatorValidators RPC method.", + "type": "object", + "properties": { + "pagination": { + "description": "pagination defines the pagination in the response.", + "$ref": "#/definitions/cosmos.base.query.v1beta1.PageResponse" + }, + "validators": { + "description": "validators defines the validators' info of a delegator.", + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/cosmos.staking.v1beta1.Validator" + } + } + } + }, + "cosmos.staking.v1beta1.QueryHistoricalInfoResponse": { + "description": "QueryHistoricalInfoResponse is response type for the Query/HistoricalInfo RPC\nmethod.", + "type": "object", + "properties": { + "hist": { + "description": "hist defines the historical info at the given height.", + "$ref": "#/definitions/cosmos.staking.v1beta1.HistoricalInfo" + } + } + }, + "cosmos.staking.v1beta1.QueryParamsResponse": { + "description": "QueryParamsResponse is response type for the Query/Params RPC method.", + "type": "object", + "properties": { + "params": { + "description": "params holds all the parameters of this module.", + "$ref": "#/definitions/cosmos.staking.v1beta1.Params" + } + } + }, + "cosmos.staking.v1beta1.QueryPoolResponse": { + "description": "QueryPoolResponse is response type for the Query/Pool RPC method.", + "type": "object", + "properties": { + "pool": { + "description": "pool defines the pool info.", + "$ref": "#/definitions/cosmos.staking.v1beta1.Pool" + } + } + }, + "cosmos.staking.v1beta1.QueryRedelegationsResponse": { + "description": "QueryRedelegationsResponse is response type for the Query/Redelegations RPC\nmethod.", + "type": "object", + "properties": { + "pagination": { + "description": "pagination defines the pagination in the response.", + "$ref": "#/definitions/cosmos.base.query.v1beta1.PageResponse" + }, + "redelegation_responses": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/cosmos.staking.v1beta1.RedelegationResponse" + } + } + } + }, + "cosmos.staking.v1beta1.QueryUnbondingDelegationResponse": { + "description": "QueryDelegationResponse is response type for the Query/UnbondingDelegation\nRPC method.", + "type": "object", + "properties": { + "unbond": { + "description": "unbond defines the unbonding information of a delegation.", + "$ref": "#/definitions/cosmos.staking.v1beta1.UnbondingDelegation" + } + } + }, + "cosmos.staking.v1beta1.QueryValidatorDelegationsResponse": { + "type": "object", + "title": "QueryValidatorDelegationsResponse is response type for the\nQuery/ValidatorDelegations RPC method", + "properties": { + "delegation_responses": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/cosmos.staking.v1beta1.DelegationResponse" + } + }, + "pagination": { + "description": "pagination defines the pagination in the response.", + "$ref": "#/definitions/cosmos.base.query.v1beta1.PageResponse" + } + } + }, + "cosmos.staking.v1beta1.QueryValidatorResponse": { + "type": "object", + "title": "QueryValidatorResponse is response type for the Query/Validator RPC method", + "properties": { + "validator": { + "description": "validator defines the validator info.", + "$ref": "#/definitions/cosmos.staking.v1beta1.Validator" + } + } + }, + "cosmos.staking.v1beta1.QueryValidatorUnbondingDelegationsResponse": { + "description": "QueryValidatorUnbondingDelegationsResponse is response type for the\nQuery/ValidatorUnbondingDelegations RPC method.", + "type": "object", + "properties": { + "pagination": { + "description": "pagination defines the pagination in the response.", + "$ref": "#/definitions/cosmos.base.query.v1beta1.PageResponse" + }, + "unbonding_responses": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/cosmos.staking.v1beta1.UnbondingDelegation" + } + } + } + }, + "cosmos.staking.v1beta1.QueryValidatorsResponse": { + "type": "object", + "title": "QueryValidatorsResponse is response type for the Query/Validators RPC method", + "properties": { + "pagination": { + "description": "pagination defines the pagination in the response.", + "$ref": "#/definitions/cosmos.base.query.v1beta1.PageResponse" + }, + "validators": { + "description": "validators contains all the queried validators.", + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/cosmos.staking.v1beta1.Validator" + } + } + } + }, + "cosmos.staking.v1beta1.Redelegation": { + "description": "Redelegation contains the list of a particular delegator's redelegating bonds\nfrom a particular source validator to a particular destination validator.", + "type": "object", + "properties": { + "delegator_address": { + "description": "delegator_address is the bech32-encoded address of the delegator.", + "type": "string" + }, + "entries": { + "description": "entries are the redelegation entries.\n\nredelegation entries", + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/cosmos.staking.v1beta1.RedelegationEntry" + } + }, + "validator_dst_address": { + "description": "validator_dst_address is the validator redelegation destination operator address.", + "type": "string" + }, + "validator_src_address": { + "description": "validator_src_address is the validator redelegation source operator address.", + "type": "string" + } + } + }, + "cosmos.staking.v1beta1.RedelegationEntry": { + "description": "RedelegationEntry defines a redelegation object with relevant metadata.", + "type": "object", + "properties": { + "completion_time": { + "description": "completion_time defines the unix time for redelegation completion.", + "type": "string", + "format": "date-time" + }, + "creation_height": { + "description": "creation_height defines the height which the redelegation took place.", + "type": "string", + "format": "int64" + }, + "initial_balance": { + "description": "initial_balance defines the initial balance when redelegation started.", + "type": "string" + }, + "shares_dst": { + "description": "shares_dst is the amount of destination-validator shares created by redelegation.", + "type": "string" + }, + "unbonding_id": { + "type": "string", + "format": "uint64", + "title": "Incrementing id that uniquely identifies this entry" + }, + "unbonding_on_hold_ref_count": { + "type": "string", + "format": "int64", + "title": "Strictly positive if this entry's unbonding has been stopped by external modules" + } + } + }, + "cosmos.staking.v1beta1.RedelegationEntryResponse": { + "description": "RedelegationEntryResponse is equivalent to a RedelegationEntry except that it\ncontains a balance in addition to shares which is more suitable for client\nresponses.", + "type": "object", + "properties": { + "balance": { + "type": "string" + }, + "redelegation_entry": { + "$ref": "#/definitions/cosmos.staking.v1beta1.RedelegationEntry" + } + } + }, + "cosmos.staking.v1beta1.RedelegationResponse": { + "description": "RedelegationResponse is equivalent to a Redelegation except that its entries\ncontain a balance in addition to shares which is more suitable for client\nresponses.", + "type": "object", + "properties": { + "entries": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/cosmos.staking.v1beta1.RedelegationEntryResponse" + } + }, + "redelegation": { + "$ref": "#/definitions/cosmos.staking.v1beta1.Redelegation" + } + } + }, + "cosmos.staking.v1beta1.UnbondingDelegation": { + "description": "UnbondingDelegation stores all of a single delegator's unbonding bonds\nfor a single validator in an time-ordered list.", + "type": "object", + "properties": { + "delegator_address": { + "description": "delegator_address is the encoded address of the delegator.", + "type": "string" + }, + "entries": { + "description": "entries are the unbonding delegation entries.\n\nunbonding delegation entries", + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/cosmos.staking.v1beta1.UnbondingDelegationEntry" + } + }, + "validator_address": { + "description": "validator_address is the encoded address of the validator.", + "type": "string" + } + } + }, + "cosmos.staking.v1beta1.UnbondingDelegationEntry": { + "description": "UnbondingDelegationEntry defines an unbonding object with relevant metadata.", + "type": "object", + "properties": { + "balance": { + "description": "balance defines the tokens to receive at completion.", + "type": "string" + }, + "completion_time": { + "description": "completion_time is the unix time for unbonding completion.", + "type": "string", + "format": "date-time" + }, + "creation_height": { + "description": "creation_height is the height which the unbonding took place.", + "type": "string", + "format": "int64" + }, + "initial_balance": { + "description": "initial_balance defines the tokens initially scheduled to receive at completion.", + "type": "string" + }, + "unbonding_id": { + "type": "string", + "format": "uint64", + "title": "Incrementing id that uniquely identifies this entry" + }, + "unbonding_on_hold_ref_count": { + "type": "string", + "format": "int64", + "title": "Strictly positive if this entry's unbonding has been stopped by external modules" + } + } + }, + "cosmos.staking.v1beta1.Validator": { + "description": "Validator defines a validator, together with the total amount of the\nValidator's bond shares and their exchange rate to coins. Slashing results in\na decrease in the exchange rate, allowing correct calculation of future\nundelegations without iterating over delegators. When coins are delegated to\nthis validator, the validator is credited with a delegation whose number of\nbond shares is based on the amount of coins delegated divided by the current\nexchange rate. Voting power can be calculated as total bonded shares\nmultiplied by exchange rate.", + "type": "object", + "properties": { + "commission": { + "description": "commission defines the commission parameters.", + "$ref": "#/definitions/cosmos.staking.v1beta1.Commission" + }, + "consensus_pubkey": { + "description": "consensus_pubkey is the consensus public key of the validator, as a Protobuf Any.", + "$ref": "#/definitions/google.protobuf.Any" + }, + "delegator_shares": { + "description": "delegator_shares defines total shares issued to a validator's delegators.", + "type": "string" + }, + "description": { + "description": "description defines the description terms for the validator.", + "$ref": "#/definitions/cosmos.staking.v1beta1.Description" + }, + "jailed": { + "description": "jailed defined whether the validator has been jailed from bonded status or not.", + "type": "boolean" + }, + "min_self_delegation": { + "description": "min_self_delegation is the validator's self declared minimum self delegation.\n\nSince: cosmos-sdk 0.46", + "type": "string" + }, + "operator_address": { + "description": "operator_address defines the address of the validator's operator; bech encoded in JSON.", + "type": "string" + }, + "status": { + "description": "status is the validator status (bonded/unbonding/unbonded).", + "$ref": "#/definitions/cosmos.staking.v1beta1.BondStatus" + }, + "tokens": { + "description": "tokens define the delegated tokens (incl. self-delegation).", + "type": "string" + }, + "unbonding_height": { + "description": "unbonding_height defines, if unbonding, the height at which this validator has begun unbonding.", + "type": "string", + "format": "int64" + }, + "unbonding_ids": { + "type": "array", + "title": "list of unbonding ids, each uniquely identifing an unbonding of this validator", + "items": { + "type": "string", + "format": "uint64" + } + }, + "unbonding_on_hold_ref_count": { + "type": "string", + "format": "int64", + "title": "strictly positive if this validator's unbonding has been stopped by external modules" + }, + "unbonding_time": { + "description": "unbonding_time defines, if unbonding, the min time for the validator to complete unbonding.", + "type": "string", + "format": "date-time" + } + } + }, + "cosmos.store.streaming.abci.ListenCommitRequest": { + "type": "object", + "title": "ListenCommitRequest is the request type for the ListenCommit RPC method", + "properties": { + "block_height": { + "type": "string", + "format": "int64", + "title": "explicitly pass in block height as ResponseCommit does not contain this info" + }, + "change_set": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/cosmos.store.v1beta1.StoreKVPair" + } + }, + "res": { + "$ref": "#/definitions/tendermint.abci.ResponseCommit" + } + } + }, + "cosmos.store.streaming.abci.ListenCommitResponse": { + "type": "object", + "title": "ListenCommitResponse is the response type for the ListenCommit RPC method" + }, + "cosmos.store.streaming.abci.ListenFinalizeBlockRequest": { + "type": "object", + "title": "ListenEndBlockRequest is the request type for the ListenEndBlock RPC method", + "properties": { + "req": { + "$ref": "#/definitions/tendermint.abci.RequestFinalizeBlock" + }, + "res": { + "$ref": "#/definitions/tendermint.abci.ResponseFinalizeBlock" + } + } + }, + "cosmos.store.streaming.abci.ListenFinalizeBlockResponse": { + "type": "object", + "title": "ListenEndBlockResponse is the response type for the ListenEndBlock RPC method" + }, + "cosmos.store.v1beta1.StoreKVPair": { + "description": "Since: cosmos-sdk 0.43", + "type": "object", + "title": "StoreKVPair is a KVStore KVPair used for listening to state changes (Sets and Deletes)\nIt optionally includes the StoreKey for the originating KVStore and a Boolean flag to distinguish between Sets and\nDeletes", + "properties": { + "delete": { + "type": "boolean", + "title": "true indicates a delete operation, false indicates a set operation" + }, + "key": { + "type": "string", + "format": "byte" + }, + "store_key": { + "type": "string", + "title": "the store key for the KVStore this pair originates from" + }, + "value": { + "type": "string", + "format": "byte" + } + } + }, + "cosmos.tx.signing.v1beta1.SignMode": { + "description": "SignMode represents a signing mode with its own security guarantees.\n\nThis enum should be considered a registry of all known sign modes\nin the Cosmos ecosystem. Apps are not expected to support all known\nsign modes. Apps that would like to support custom sign modes are\nencouraged to open a small PR against this file to add a new case\nto this SignMode enum describing their sign mode so that different\napps have a consistent version of this enum.\n\n - SIGN_MODE_UNSPECIFIED: SIGN_MODE_UNSPECIFIED specifies an unknown signing mode and will be\nrejected.\n - SIGN_MODE_DIRECT: SIGN_MODE_DIRECT specifies a signing mode which uses SignDoc and is\nverified with raw bytes from Tx.\n - SIGN_MODE_TEXTUAL: SIGN_MODE_TEXTUAL is a future signing mode that will verify some\nhuman-readable textual representation on top of the binary representation\nfrom SIGN_MODE_DIRECT.\n\nSince: cosmos-sdk 0.50\n - SIGN_MODE_DIRECT_AUX: SIGN_MODE_DIRECT_AUX specifies a signing mode which uses\nSignDocDirectAux. As opposed to SIGN_MODE_DIRECT, this sign mode does not\nrequire signers signing over other signers' `signer_info`.\n\nSince: cosmos-sdk 0.46\n - SIGN_MODE_LEGACY_AMINO_JSON: SIGN_MODE_LEGACY_AMINO_JSON is a backwards compatibility mode which uses\nAmino JSON and will be removed in the future.\n - SIGN_MODE_EIP_191: SIGN_MODE_EIP_191 specifies the sign mode for EIP 191 signing on the Cosmos\nSDK. Ref: https://eips.ethereum.org/EIPS/eip-191\n\nCurrently, SIGN_MODE_EIP_191 is registered as a SignMode enum variant,\nbut is not implemented on the SDK by default. To enable EIP-191, you need\nto pass a custom `TxConfig` that has an implementation of\n`SignModeHandler` for EIP-191. The SDK may decide to fully support\nEIP-191 in the future.\n\nSince: cosmos-sdk 0.45.2", + "type": "string", + "default": "SIGN_MODE_UNSPECIFIED", + "enum": [ + "SIGN_MODE_UNSPECIFIED", + "SIGN_MODE_DIRECT", + "SIGN_MODE_TEXTUAL", + "SIGN_MODE_DIRECT_AUX", + "SIGN_MODE_LEGACY_AMINO_JSON", + "SIGN_MODE_EIP_191" + ] + }, + "cosmos.tx.v1beta1.AuthInfo": { + "description": "AuthInfo describes the fee and signer modes that are used to sign a\ntransaction.", + "type": "object", + "properties": { + "fee": { + "description": "Fee is the fee and gas limit for the transaction. The first signer is the\nprimary signer and the one which pays the fee. The fee can be calculated\nbased on the cost of evaluating the body and doing signature verification\nof the signers. This can be estimated via simulation.", + "$ref": "#/definitions/cosmos.tx.v1beta1.Fee" + }, + "signer_infos": { + "description": "signer_infos defines the signing modes for the required signers. The number\nand order of elements must match the required signers from TxBody's\nmessages. The first element is the primary signer and the one which pays\nthe fee.", + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/cosmos.tx.v1beta1.SignerInfo" + } + }, + "tip": { + "description": "Tip is the optional tip used for transactions fees paid in another denom.\n\nThis field is ignored if the chain didn't enable tips, i.e. didn't add the\n`TipDecorator` in its posthandler.\n\nSince: cosmos-sdk 0.46", + "$ref": "#/definitions/cosmos.tx.v1beta1.Tip" + } + } + }, + "cosmos.tx.v1beta1.BroadcastMode": { + "description": "BroadcastMode specifies the broadcast mode for the TxService.Broadcast RPC\nmethod.\n\n - BROADCAST_MODE_UNSPECIFIED: zero-value for mode ordering\n - BROADCAST_MODE_BLOCK: DEPRECATED: use BROADCAST_MODE_SYNC instead,\nBROADCAST_MODE_BLOCK is not supported by the SDK from v0.47.x onwards.\n - BROADCAST_MODE_SYNC: BROADCAST_MODE_SYNC defines a tx broadcasting mode where the client waits\nfor a CheckTx execution response only.\n - BROADCAST_MODE_ASYNC: BROADCAST_MODE_ASYNC defines a tx broadcasting mode where the client\nreturns immediately.", + "type": "string", + "default": "BROADCAST_MODE_UNSPECIFIED", + "enum": [ + "BROADCAST_MODE_UNSPECIFIED", + "BROADCAST_MODE_BLOCK", + "BROADCAST_MODE_SYNC", + "BROADCAST_MODE_ASYNC" + ] + }, + "cosmos.tx.v1beta1.BroadcastTxRequest": { + "description": "BroadcastTxRequest is the request type for the Service.BroadcastTxRequest\nRPC method.", + "type": "object", + "properties": { + "mode": { + "$ref": "#/definitions/cosmos.tx.v1beta1.BroadcastMode" + }, + "tx_bytes": { + "description": "tx_bytes is the raw transaction.", + "type": "string", + "format": "byte" + } + } + }, + "cosmos.tx.v1beta1.BroadcastTxResponse": { + "description": "BroadcastTxResponse is the response type for the\nService.BroadcastTx method.", + "type": "object", + "properties": { + "tx_response": { + "description": "tx_response is the queried TxResponses.", + "$ref": "#/definitions/cosmos.base.abci.v1beta1.TxResponse" + } + } + }, + "cosmos.tx.v1beta1.Fee": { + "description": "Fee includes the amount of coins paid in fees and the maximum\ngas to be used by the transaction. The ratio yields an effective \"gasprice\",\nwhich must be above some miminum to be accepted into the mempool.", + "type": "object", + "properties": { + "amount": { + "type": "array", + "title": "amount is the amount of coins to be paid as a fee", + "items": { + "type": "object", + "$ref": "#/definitions/cosmos.base.v1beta1.Coin" + } + }, + "gas_limit": { + "type": "string", + "format": "uint64", + "title": "gas_limit is the maximum gas that can be used in transaction processing\nbefore an out of gas error occurs" + }, + "granter": { + "type": "string", + "title": "if set, the fee payer (either the first signer or the value of the payer field) requests that a fee grant be used\nto pay fees instead of the fee payer's own balance. If an appropriate fee grant does not exist or the chain does\nnot support fee grants, this will fail" + }, + "payer": { + "description": "if unset, the first signer is responsible for paying the fees. If set, the specified account must pay the fees.\nthe payer must be a tx signer (and thus have signed this field in AuthInfo).\nsetting this field does *not* change the ordering of required signers for the transaction.", + "type": "string" + } + } + }, + "cosmos.tx.v1beta1.GetBlockWithTxsResponse": { + "description": "GetBlockWithTxsResponse is the response type for the Service.GetBlockWithTxs\nmethod.\n\nSince: cosmos-sdk 0.45.2", + "type": "object", + "properties": { + "block": { + "$ref": "#/definitions/tendermint.types.Block" + }, + "block_id": { + "$ref": "#/definitions/tendermint.types.BlockID" + }, + "pagination": { + "description": "pagination defines a pagination for the response.", + "$ref": "#/definitions/cosmos.base.query.v1beta1.PageResponse" + }, + "txs": { + "description": "txs are the transactions in the block.", + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/cosmos.tx.v1beta1.Tx" + } + } + } + }, + "cosmos.tx.v1beta1.GetTxResponse": { + "description": "GetTxResponse is the response type for the Service.GetTx method.", + "type": "object", + "properties": { + "tx": { + "description": "tx is the queried transaction.", + "$ref": "#/definitions/cosmos.tx.v1beta1.Tx" + }, + "tx_response": { + "description": "tx_response is the queried TxResponses.", + "$ref": "#/definitions/cosmos.base.abci.v1beta1.TxResponse" + } + } + }, + "cosmos.tx.v1beta1.GetTxsEventResponse": { + "description": "GetTxsEventResponse is the response type for the Service.TxsByEvents\nRPC method.", + "type": "object", + "properties": { + "pagination": { + "description": "pagination defines a pagination for the response.\nDeprecated post v0.46.x: use total instead.", + "$ref": "#/definitions/cosmos.base.query.v1beta1.PageResponse" + }, + "total": { + "type": "string", + "format": "uint64", + "title": "total is total number of results available" + }, + "tx_responses": { + "description": "tx_responses is the list of queried TxResponses.", + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/cosmos.base.abci.v1beta1.TxResponse" + } + }, + "txs": { + "description": "txs is the list of queried transactions.", + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/cosmos.tx.v1beta1.Tx" + } + } + } + }, + "cosmos.tx.v1beta1.ModeInfo": { + "description": "ModeInfo describes the signing mode of a single or nested multisig signer.", + "type": "object", + "properties": { + "multi": { + "title": "multi represents a nested multisig signer", + "$ref": "#/definitions/cosmos.tx.v1beta1.ModeInfo.Multi" + }, + "single": { + "title": "single represents a single signer", + "$ref": "#/definitions/cosmos.tx.v1beta1.ModeInfo.Single" + } + } + }, + "cosmos.tx.v1beta1.ModeInfo.Multi": { + "type": "object", + "title": "Multi is the mode info for a multisig public key", + "properties": { + "bitarray": { + "title": "bitarray specifies which keys within the multisig are signing", + "$ref": "#/definitions/cosmos.crypto.multisig.v1beta1.CompactBitArray" + }, + "mode_infos": { + "type": "array", + "title": "mode_infos is the corresponding modes of the signers of the multisig\nwhich could include nested multisig public keys", + "items": { + "type": "object", + "$ref": "#/definitions/cosmos.tx.v1beta1.ModeInfo" + } + } + } + }, + "cosmos.tx.v1beta1.ModeInfo.Single": { + "type": "object", + "title": "Single is the mode info for a single signer. It is structured as a message\nto allow for additional fields such as locale for SIGN_MODE_TEXTUAL in the\nfuture", + "properties": { + "mode": { + "title": "mode is the signing mode of the single signer", + "$ref": "#/definitions/cosmos.tx.signing.v1beta1.SignMode" + } + } + }, + "cosmos.tx.v1beta1.OrderBy": { + "description": "- ORDER_BY_UNSPECIFIED: ORDER_BY_UNSPECIFIED specifies an unknown sorting order. OrderBy defaults\nto ASC in this case.\n - ORDER_BY_ASC: ORDER_BY_ASC defines ascending order\n - ORDER_BY_DESC: ORDER_BY_DESC defines descending order", + "type": "string", + "title": "OrderBy defines the sorting order", + "default": "ORDER_BY_UNSPECIFIED", + "enum": [ + "ORDER_BY_UNSPECIFIED", + "ORDER_BY_ASC", + "ORDER_BY_DESC" + ] + }, + "cosmos.tx.v1beta1.SignerInfo": { + "description": "SignerInfo describes the public key and signing mode of a single top-level\nsigner.", + "type": "object", + "properties": { + "mode_info": { + "title": "mode_info describes the signing mode of the signer and is a nested\nstructure to support nested multisig pubkey's", + "$ref": "#/definitions/cosmos.tx.v1beta1.ModeInfo" + }, + "public_key": { + "description": "public_key is the public key of the signer. It is optional for accounts\nthat already exist in state. If unset, the verifier can use the required \\\nsigner address for this position and lookup the public key.", + "$ref": "#/definitions/google.protobuf.Any" + }, + "sequence": { + "description": "sequence is the sequence of the account, which describes the\nnumber of committed transactions signed by a given address. It is used to\nprevent replay attacks.", + "type": "string", + "format": "uint64" + } + } + }, + "cosmos.tx.v1beta1.SimulateRequest": { + "description": "SimulateRequest is the request type for the Service.Simulate\nRPC method.", + "type": "object", + "properties": { + "tx": { + "description": "tx is the transaction to simulate.\nDeprecated. Send raw tx bytes instead.", + "$ref": "#/definitions/cosmos.tx.v1beta1.Tx" + }, + "tx_bytes": { + "description": "tx_bytes is the raw transaction.\n\nSince: cosmos-sdk 0.43", + "type": "string", + "format": "byte" + } + } + }, + "cosmos.tx.v1beta1.SimulateResponse": { + "description": "SimulateResponse is the response type for the\nService.SimulateRPC method.", + "type": "object", + "properties": { + "gas_info": { + "description": "gas_info is the information about gas used in the simulation.", + "$ref": "#/definitions/cosmos.base.abci.v1beta1.GasInfo" + }, + "result": { + "description": "result is the result of the simulation.", + "$ref": "#/definitions/cosmos.base.abci.v1beta1.Result" + } + } + }, + "cosmos.tx.v1beta1.Tip": { + "description": "Tip is the tip used for meta-transactions.\n\nSince: cosmos-sdk 0.46", + "type": "object", + "properties": { + "amount": { + "type": "array", + "title": "amount is the amount of the tip", + "items": { + "type": "object", + "$ref": "#/definitions/cosmos.base.v1beta1.Coin" + } + }, + "tipper": { + "type": "string", + "title": "tipper is the address of the account paying for the tip" + } + } + }, + "cosmos.tx.v1beta1.Tx": { + "description": "Tx is the standard type used for broadcasting transactions.", + "type": "object", + "properties": { + "auth_info": { + "title": "auth_info is the authorization related content of the transaction,\nspecifically signers, signer modes and fee", + "$ref": "#/definitions/cosmos.tx.v1beta1.AuthInfo" + }, + "body": { + "title": "body is the processable content of the transaction", + "$ref": "#/definitions/cosmos.tx.v1beta1.TxBody" + }, + "signatures": { + "description": "signatures is a list of signatures that matches the length and order of\nAuthInfo's signer_infos to allow connecting signature meta information like\npublic key and signing mode by position.", + "type": "array", + "items": { + "type": "string", + "format": "byte" + } + } + } + }, + "cosmos.tx.v1beta1.TxBody": { + "description": "TxBody is the body of a transaction that all signers sign over.", + "type": "object", + "properties": { + "extension_options": { + "type": "array", + "title": "extension_options are arbitrary options that can be added by chains\nwhen the default options are not sufficient. If any of these are present\nand can't be handled, the transaction will be rejected", + "items": { + "type": "object", + "$ref": "#/definitions/google.protobuf.Any" + } + }, + "memo": { + "description": "memo is any arbitrary note/comment to be added to the transaction.\nWARNING: in clients, any publicly exposed text should not be called memo,\nbut should be called `note` instead (see https://github.com/cosmos/cosmos-sdk/issues/9122).", + "type": "string" + }, + "messages": { + "description": "messages is a list of messages to be executed. The required signers of\nthose messages define the number and order of elements in AuthInfo's\nsigner_infos and Tx's signatures. Each required signer address is added to\nthe list only the first time it occurs.\nBy convention, the first required signer (usually from the first message)\nis referred to as the primary signer and pays the fee for the whole\ntransaction.", + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/google.protobuf.Any" + } + }, + "non_critical_extension_options": { + "type": "array", + "title": "extension_options are arbitrary options that can be added by chains\nwhen the default options are not sufficient. If any of these are present\nand can't be handled, they will be ignored", + "items": { + "type": "object", + "$ref": "#/definitions/google.protobuf.Any" + } + }, + "timeout_height": { + "type": "string", + "format": "uint64", + "title": "timeout is the block height after which this transaction will not\nbe processed by the chain" + } + } + }, + "cosmos.tx.v1beta1.TxDecodeAminoRequest": { + "description": "TxDecodeAminoRequest is the request type for the Service.TxDecodeAmino\nRPC method.\n\nSince: cosmos-sdk 0.47", + "type": "object", + "properties": { + "amino_binary": { + "type": "string", + "format": "byte" + } + } + }, + "cosmos.tx.v1beta1.TxDecodeAminoResponse": { + "description": "TxDecodeAminoResponse is the response type for the Service.TxDecodeAmino\nRPC method.\n\nSince: cosmos-sdk 0.47", + "type": "object", + "properties": { + "amino_json": { + "type": "string" + } + } + }, + "cosmos.tx.v1beta1.TxDecodeRequest": { + "description": "TxDecodeRequest is the request type for the Service.TxDecode\nRPC method.\n\nSince: cosmos-sdk 0.47", + "type": "object", + "properties": { + "tx_bytes": { + "description": "tx_bytes is the raw transaction.", + "type": "string", + "format": "byte" + } + } + }, + "cosmos.tx.v1beta1.TxDecodeResponse": { + "description": "TxDecodeResponse is the response type for the\nService.TxDecode method.\n\nSince: cosmos-sdk 0.47", + "type": "object", + "properties": { + "tx": { + "description": "tx is the decoded transaction.", + "$ref": "#/definitions/cosmos.tx.v1beta1.Tx" + } + } + }, + "cosmos.tx.v1beta1.TxEncodeAminoRequest": { + "description": "TxEncodeAminoRequest is the request type for the Service.TxEncodeAmino\nRPC method.\n\nSince: cosmos-sdk 0.47", + "type": "object", + "properties": { + "amino_json": { + "type": "string" + } + } + }, + "cosmos.tx.v1beta1.TxEncodeAminoResponse": { + "description": "TxEncodeAminoResponse is the response type for the Service.TxEncodeAmino\nRPC method.\n\nSince: cosmos-sdk 0.47", + "type": "object", + "properties": { + "amino_binary": { + "type": "string", + "format": "byte" + } + } + }, + "cosmos.tx.v1beta1.TxEncodeRequest": { + "description": "TxEncodeRequest is the request type for the Service.TxEncode\nRPC method.\n\nSince: cosmos-sdk 0.47", + "type": "object", + "properties": { + "tx": { + "description": "tx is the transaction to encode.", + "$ref": "#/definitions/cosmos.tx.v1beta1.Tx" + } + } + }, + "cosmos.tx.v1beta1.TxEncodeResponse": { + "description": "TxEncodeResponse is the response type for the\nService.TxEncode method.\n\nSince: cosmos-sdk 0.47", + "type": "object", + "properties": { + "tx_bytes": { + "description": "tx_bytes is the encoded transaction bytes.", + "type": "string", + "format": "byte" + } + } + }, + "cosmos.upgrade.v1beta1.ModuleVersion": { + "description": "ModuleVersion specifies a module and its consensus version.\n\nSince: cosmos-sdk 0.43", + "type": "object", + "properties": { + "name": { + "type": "string", + "title": "name of the app module" + }, + "version": { + "type": "string", + "format": "uint64", + "title": "consensus version of the app module" + } + } + }, + "cosmos.upgrade.v1beta1.MsgCancelUpgrade": { + "description": "MsgCancelUpgrade is the Msg/CancelUpgrade request type.\n\nSince: cosmos-sdk 0.46", + "type": "object", + "properties": { + "authority": { + "description": "authority is the address that controls the module (defaults to x/gov unless overwritten).", + "type": "string" + } + } + }, + "cosmos.upgrade.v1beta1.MsgCancelUpgradeResponse": { + "description": "MsgCancelUpgradeResponse is the Msg/CancelUpgrade response type.\n\nSince: cosmos-sdk 0.46", + "type": "object" + }, + "cosmos.upgrade.v1beta1.MsgSoftwareUpgrade": { + "description": "MsgSoftwareUpgrade is the Msg/SoftwareUpgrade request type.\n\nSince: cosmos-sdk 0.46", + "type": "object", + "properties": { + "authority": { + "description": "authority is the address that controls the module (defaults to x/gov unless overwritten).", + "type": "string" + }, + "plan": { + "description": "plan is the upgrade plan.", + "$ref": "#/definitions/cosmos.upgrade.v1beta1.Plan" + } + } + }, + "cosmos.upgrade.v1beta1.MsgSoftwareUpgradeResponse": { + "description": "MsgSoftwareUpgradeResponse is the Msg/SoftwareUpgrade response type.\n\nSince: cosmos-sdk 0.46", + "type": "object" + }, + "cosmos.upgrade.v1beta1.Plan": { + "description": "Plan specifies information about a planned upgrade and when it should occur.", + "type": "object", + "properties": { + "height": { + "description": "The height at which the upgrade must be performed.", + "type": "string", + "format": "int64" + }, + "info": { + "type": "string", + "title": "Any application specific upgrade info to be included on-chain\nsuch as a git commit that validators could automatically upgrade to" + }, + "name": { + "description": "Sets the name for the upgrade. This name will be used by the upgraded\nversion of the software to apply any special \"on-upgrade\" commands during\nthe first BeginBlock method after the upgrade is applied. It is also used\nto detect whether a software version can handle a given upgrade. If no\nupgrade handler with this name has been set in the software, it will be\nassumed that the software is out-of-date when the upgrade Time or Height is\nreached and the software will exit.", + "type": "string" + }, + "time": { + "description": "Deprecated: Time based upgrades have been deprecated. Time based upgrade logic\nhas been removed from the SDK.\nIf this field is not empty, an error will be thrown.", + "type": "string", + "format": "date-time" + }, + "upgraded_client_state": { + "description": "Deprecated: UpgradedClientState field has been deprecated. IBC upgrade logic has been\nmoved to the IBC module in the sub module 02-client.\nIf this field is not empty, an error will be thrown.", + "$ref": "#/definitions/google.protobuf.Any" + } + } + }, + "cosmos.upgrade.v1beta1.QueryAppliedPlanResponse": { + "description": "QueryAppliedPlanResponse is the response type for the Query/AppliedPlan RPC\nmethod.", + "type": "object", + "properties": { + "height": { + "description": "height is the block height at which the plan was applied.", + "type": "string", + "format": "int64" + } + } + }, + "cosmos.upgrade.v1beta1.QueryAuthorityResponse": { + "description": "Since: cosmos-sdk 0.46", + "type": "object", + "title": "QueryAuthorityResponse is the response type for Query/Authority", + "properties": { + "address": { + "type": "string" + } + } + }, + "cosmos.upgrade.v1beta1.QueryCurrentPlanResponse": { + "description": "QueryCurrentPlanResponse is the response type for the Query/CurrentPlan RPC\nmethod.", + "type": "object", + "properties": { + "plan": { + "description": "plan is the current upgrade plan.", + "$ref": "#/definitions/cosmos.upgrade.v1beta1.Plan" + } + } + }, + "cosmos.upgrade.v1beta1.QueryModuleVersionsResponse": { + "description": "QueryModuleVersionsResponse is the response type for the Query/ModuleVersions\nRPC method.\n\nSince: cosmos-sdk 0.43", + "type": "object", + "properties": { + "module_versions": { + "description": "module_versions is a list of module names with their consensus versions.", + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/cosmos.upgrade.v1beta1.ModuleVersion" + } + } + } + }, + "cosmos.upgrade.v1beta1.QueryUpgradedConsensusStateResponse": { + "description": "QueryUpgradedConsensusStateResponse is the response type for the Query/UpgradedConsensusState\nRPC method.", + "type": "object", + "properties": { + "upgraded_consensus_state": { + "type": "string", + "format": "byte", + "title": "Since: cosmos-sdk 0.43" + } + } + }, + "cosmos.vesting.v1beta1.MsgCreatePeriodicVestingAccount": { + "description": "MsgCreateVestingAccount defines a message that enables creating a vesting\naccount.\n\nSince: cosmos-sdk 0.46", + "type": "object", + "properties": { + "from_address": { + "type": "string" + }, + "start_time": { + "description": "start of vesting as unix time (in seconds).", + "type": "string", + "format": "int64" + }, + "to_address": { + "type": "string" + }, + "vesting_periods": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/cosmos.vesting.v1beta1.Period" + } + } + } + }, + "cosmos.vesting.v1beta1.MsgCreatePeriodicVestingAccountResponse": { + "description": "MsgCreateVestingAccountResponse defines the Msg/CreatePeriodicVestingAccount\nresponse type.\n\nSince: cosmos-sdk 0.46", + "type": "object" + }, + "cosmos.vesting.v1beta1.MsgCreatePermanentLockedAccount": { + "description": "MsgCreatePermanentLockedAccount defines a message that enables creating a permanent\nlocked account.\n\nSince: cosmos-sdk 0.46", + "type": "object", + "properties": { + "amount": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/cosmos.base.v1beta1.Coin" + } + }, + "from_address": { + "type": "string" + }, + "to_address": { + "type": "string" + } + } + }, + "cosmos.vesting.v1beta1.MsgCreatePermanentLockedAccountResponse": { + "description": "MsgCreatePermanentLockedAccountResponse defines the Msg/CreatePermanentLockedAccount response type.\n\nSince: cosmos-sdk 0.46", + "type": "object" + }, + "cosmos.vesting.v1beta1.MsgCreateVestingAccount": { + "description": "MsgCreateVestingAccount defines a message that enables creating a vesting\naccount.", + "type": "object", + "properties": { + "amount": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/cosmos.base.v1beta1.Coin" + } + }, + "delayed": { + "type": "boolean" + }, + "end_time": { + "description": "end of vesting as unix time (in seconds).", + "type": "string", + "format": "int64" + }, + "from_address": { + "type": "string" + }, + "to_address": { + "type": "string" + } + } + }, + "cosmos.vesting.v1beta1.MsgCreateVestingAccountResponse": { + "description": "MsgCreateVestingAccountResponse defines the Msg/CreateVestingAccount response type.", + "type": "object" + }, + "cosmos.vesting.v1beta1.Period": { + "description": "Period defines a length of time and amount of coins that will vest.", + "type": "object", + "properties": { + "amount": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/cosmos.base.v1beta1.Coin" + } + }, + "length": { + "description": "Period duration in seconds.", + "type": "string", + "format": "int64" + } + } + }, + "google.protobuf.Any": { + "type": "object", + "properties": { + "@type": { + "type": "string" + } + }, + "additionalProperties": {} + }, + "google.rpc.Status": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32" + }, + "details": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/google.protobuf.Any" + } + }, + "message": { + "type": "string" + } + } + }, + "ibc.applications.fee.v1.Fee": { + "type": "object", + "title": "Fee defines the ICS29 receive, acknowledgement and timeout fees", + "properties": { + "ack_fee": { + "type": "array", + "title": "the packet acknowledgement fee", + "items": { + "type": "object", + "$ref": "#/definitions/cosmos.base.v1beta1.Coin" + } + }, + "recv_fee": { + "type": "array", + "title": "the packet receive fee", + "items": { + "type": "object", + "$ref": "#/definitions/cosmos.base.v1beta1.Coin" + } + }, + "timeout_fee": { + "type": "array", + "title": "the packet timeout fee", + "items": { + "type": "object", + "$ref": "#/definitions/cosmos.base.v1beta1.Coin" + } + } + } + }, + "ibc.applications.fee.v1.FeeEnabledChannel": { + "type": "object", + "title": "FeeEnabledChannel contains the PortID & ChannelID for a fee enabled channel", + "properties": { + "channel_id": { + "type": "string", + "title": "unique channel identifier" + }, + "port_id": { + "type": "string", + "title": "unique port identifier" + } + } + }, + "ibc.applications.fee.v1.IdentifiedPacketFees": { + "type": "object", + "title": "IdentifiedPacketFees contains a list of type PacketFee and associated PacketId", + "properties": { + "packet_fees": { + "type": "array", + "title": "list of packet fees", + "items": { + "type": "object", + "$ref": "#/definitions/ibc.applications.fee.v1.PacketFee" + } + }, + "packet_id": { + "title": "unique packet identifier comprised of the channel ID, port ID and sequence", + "$ref": "#/definitions/ibc.core.channel.v1.PacketId" + } + } + }, + "ibc.applications.fee.v1.MsgPayPacketFee": { + "type": "object", + "title": "MsgPayPacketFee defines the request type for the PayPacketFee rpc\nThis Msg can be used to pay for a packet at the next sequence send & should be combined with the Msg that will be\npaid for", + "properties": { + "fee": { + "title": "fee encapsulates the recv, ack and timeout fees associated with an IBC packet", + "$ref": "#/definitions/ibc.applications.fee.v1.Fee" + }, + "relayers": { + "type": "array", + "title": "optional list of relayers permitted to the receive packet fees", + "items": { + "type": "string" + } + }, + "signer": { + "type": "string", + "title": "account address to refund fee if necessary" + }, + "source_channel_id": { + "type": "string", + "title": "the source channel unique identifer" + }, + "source_port_id": { + "type": "string", + "title": "the source port unique identifier" + } + } + }, + "ibc.applications.fee.v1.MsgPayPacketFeeAsync": { + "type": "object", + "title": "MsgPayPacketFeeAsync defines the request type for the PayPacketFeeAsync rpc\nThis Msg can be used to pay for a packet at a specified sequence (instead of the next sequence send)", + "properties": { + "packet_fee": { + "title": "the packet fee associated with a particular IBC packet", + "$ref": "#/definitions/ibc.applications.fee.v1.PacketFee" + }, + "packet_id": { + "title": "unique packet identifier comprised of the channel ID, port ID and sequence", + "$ref": "#/definitions/ibc.core.channel.v1.PacketId" + } + } + }, + "ibc.applications.fee.v1.MsgPayPacketFeeAsyncResponse": { + "type": "object", + "title": "MsgPayPacketFeeAsyncResponse defines the response type for the PayPacketFeeAsync rpc" + }, + "ibc.applications.fee.v1.MsgPayPacketFeeResponse": { + "type": "object", + "title": "MsgPayPacketFeeResponse defines the response type for the PayPacketFee rpc" + }, + "ibc.applications.fee.v1.MsgRegisterCounterpartyPayee": { + "type": "object", + "title": "MsgRegisterCounterpartyPayee defines the request type for the RegisterCounterpartyPayee rpc", + "properties": { + "channel_id": { + "type": "string", + "title": "unique channel identifier" + }, + "counterparty_payee": { + "type": "string", + "title": "the counterparty payee address" + }, + "port_id": { + "type": "string", + "title": "unique port identifier" + }, + "relayer": { + "type": "string", + "title": "the relayer address" + } + } + }, + "ibc.applications.fee.v1.MsgRegisterCounterpartyPayeeResponse": { + "type": "object", + "title": "MsgRegisterCounterpartyPayeeResponse defines the response type for the RegisterCounterpartyPayee rpc" + }, + "ibc.applications.fee.v1.MsgRegisterPayee": { + "type": "object", + "title": "MsgRegisterPayee defines the request type for the RegisterPayee rpc", + "properties": { + "channel_id": { + "type": "string", + "title": "unique channel identifier" + }, + "payee": { + "type": "string", + "title": "the payee address" + }, + "port_id": { + "type": "string", + "title": "unique port identifier" + }, + "relayer": { + "type": "string", + "title": "the relayer address" + } + } + }, + "ibc.applications.fee.v1.MsgRegisterPayeeResponse": { + "type": "object", + "title": "MsgRegisterPayeeResponse defines the response type for the RegisterPayee rpc" + }, + "ibc.applications.fee.v1.PacketFee": { + "type": "object", + "title": "PacketFee contains ICS29 relayer fees, refund address and optional list of permitted relayers", + "properties": { + "fee": { + "title": "fee encapsulates the recv, ack and timeout fees associated with an IBC packet", + "$ref": "#/definitions/ibc.applications.fee.v1.Fee" + }, + "refund_address": { + "type": "string", + "title": "the refund address for unspent fees" + }, + "relayers": { + "type": "array", + "title": "optional list of relayers permitted to receive fees", + "items": { + "type": "string" + } + } + } + }, + "ibc.applications.fee.v1.QueryCounterpartyPayeeResponse": { + "type": "object", + "title": "QueryCounterpartyPayeeResponse defines the response type for the CounterpartyPayee rpc", + "properties": { + "counterparty_payee": { + "type": "string", + "title": "the counterparty payee address used to compensate forward relaying" + } + } + }, + "ibc.applications.fee.v1.QueryFeeEnabledChannelResponse": { + "type": "object", + "title": "QueryFeeEnabledChannelResponse defines the response type for the FeeEnabledChannel rpc", + "properties": { + "fee_enabled": { + "type": "boolean", + "title": "boolean flag representing the fee enabled channel status" + } + } + }, + "ibc.applications.fee.v1.QueryFeeEnabledChannelsResponse": { + "type": "object", + "title": "QueryFeeEnabledChannelsResponse defines the response type for the FeeEnabledChannels rpc", + "properties": { + "fee_enabled_channels": { + "type": "array", + "title": "list of fee enabled channels", + "items": { + "type": "object", + "$ref": "#/definitions/ibc.applications.fee.v1.FeeEnabledChannel" + } + }, + "pagination": { + "description": "pagination defines the pagination in the response.", + "$ref": "#/definitions/cosmos.base.query.v1beta1.PageResponse" + } + } + }, + "ibc.applications.fee.v1.QueryIncentivizedPacketResponse": { + "type": "object", + "title": "QueryIncentivizedPacketsResponse defines the response type for the IncentivizedPacket rpc", + "properties": { + "incentivized_packet": { + "title": "the identified fees for the incentivized packet", + "$ref": "#/definitions/ibc.applications.fee.v1.IdentifiedPacketFees" + } + } + }, + "ibc.applications.fee.v1.QueryIncentivizedPacketsForChannelResponse": { + "type": "object", + "title": "QueryIncentivizedPacketsResponse defines the response type for the incentivized packets RPC", + "properties": { + "incentivized_packets": { + "type": "array", + "title": "Map of all incentivized_packets", + "items": { + "type": "object", + "$ref": "#/definitions/ibc.applications.fee.v1.IdentifiedPacketFees" + } + }, + "pagination": { + "description": "pagination defines the pagination in the response.", + "$ref": "#/definitions/cosmos.base.query.v1beta1.PageResponse" + } + } + }, + "ibc.applications.fee.v1.QueryIncentivizedPacketsResponse": { + "type": "object", + "title": "QueryIncentivizedPacketsResponse defines the response type for the IncentivizedPackets rpc", + "properties": { + "incentivized_packets": { + "type": "array", + "title": "list of identified fees for incentivized packets", + "items": { + "type": "object", + "$ref": "#/definitions/ibc.applications.fee.v1.IdentifiedPacketFees" + } + }, + "pagination": { + "description": "pagination defines the pagination in the response.", + "$ref": "#/definitions/cosmos.base.query.v1beta1.PageResponse" + } + } + }, + "ibc.applications.fee.v1.QueryPayeeResponse": { + "type": "object", + "title": "QueryPayeeResponse defines the response type for the Payee rpc", + "properties": { + "payee_address": { + "type": "string", + "title": "the payee address to which packet fees are paid out" + } + } + }, + "ibc.applications.fee.v1.QueryTotalAckFeesResponse": { + "type": "object", + "title": "QueryTotalAckFeesResponse defines the response type for the TotalAckFees rpc", + "properties": { + "ack_fees": { + "type": "array", + "title": "the total packet acknowledgement fees", + "items": { + "type": "object", + "$ref": "#/definitions/cosmos.base.v1beta1.Coin" + } + } + } + }, + "ibc.applications.fee.v1.QueryTotalRecvFeesResponse": { + "type": "object", + "title": "QueryTotalRecvFeesResponse defines the response type for the TotalRecvFees rpc", + "properties": { + "recv_fees": { + "type": "array", + "title": "the total packet receive fees", + "items": { + "type": "object", + "$ref": "#/definitions/cosmos.base.v1beta1.Coin" + } + } + } + }, + "ibc.applications.fee.v1.QueryTotalTimeoutFeesResponse": { + "type": "object", + "title": "QueryTotalTimeoutFeesResponse defines the response type for the TotalTimeoutFees rpc", + "properties": { + "timeout_fees": { + "type": "array", + "title": "the total packet timeout fees", + "items": { + "type": "object", + "$ref": "#/definitions/cosmos.base.v1beta1.Coin" + } + } + } + }, + "ibc.applications.interchain_accounts.controller.v1.MsgRegisterInterchainAccount": { + "type": "object", + "title": "MsgRegisterInterchainAccount defines the payload for Msg/RegisterAccount", + "properties": { + "connection_id": { + "type": "string" + }, + "ordering": { + "$ref": "#/definitions/ibc.core.channel.v1.Order" + }, + "owner": { + "type": "string" + }, + "version": { + "type": "string" + } + } + }, + "ibc.applications.interchain_accounts.controller.v1.MsgRegisterInterchainAccountResponse": { + "type": "object", + "title": "MsgRegisterInterchainAccountResponse defines the response for Msg/RegisterAccount", + "properties": { + "channel_id": { + "type": "string" + }, + "port_id": { + "type": "string" + } + } + }, + "ibc.applications.interchain_accounts.controller.v1.MsgSendTx": { + "type": "object", + "title": "MsgSendTx defines the payload for Msg/SendTx", + "properties": { + "connection_id": { + "type": "string" + }, + "owner": { + "type": "string" + }, + "packet_data": { + "$ref": "#/definitions/ibc.applications.interchain_accounts.v1.InterchainAccountPacketData" + }, + "relative_timeout": { + "description": "Relative timeout timestamp provided will be added to the current block time during transaction execution.\nThe timeout timestamp must be non-zero.", + "type": "string", + "format": "uint64" + } + } + }, + "ibc.applications.interchain_accounts.controller.v1.MsgSendTxResponse": { + "type": "object", + "title": "MsgSendTxResponse defines the response for MsgSendTx", + "properties": { + "sequence": { + "type": "string", + "format": "uint64" + } + } + }, + "ibc.applications.interchain_accounts.controller.v1.MsgUpdateParams": { + "type": "object", + "title": "MsgUpdateParams defines the payload for Msg/UpdateParams", + "properties": { + "params": { + "description": "params defines the 27-interchain-accounts/controller parameters to update.\n\nNOTE: All parameters must be supplied.", + "$ref": "#/definitions/ibc.applications.interchain_accounts.controller.v1.Params" + }, + "signer": { + "type": "string", + "title": "signer address" + } + } + }, + "ibc.applications.interchain_accounts.controller.v1.MsgUpdateParamsResponse": { + "type": "object", + "title": "MsgUpdateParamsResponse defines the response for Msg/UpdateParams" + }, + "ibc.applications.interchain_accounts.controller.v1.Params": { + "description": "Params defines the set of on-chain interchain accounts parameters.\nThe following parameters may be used to disable the controller submodule.", + "type": "object", + "properties": { + "controller_enabled": { + "description": "controller_enabled enables or disables the controller submodule.", + "type": "boolean" + } + } + }, + "ibc.applications.interchain_accounts.controller.v1.QueryInterchainAccountResponse": { + "description": "QueryInterchainAccountResponse the response type for the Query/InterchainAccount RPC method.", + "type": "object", + "properties": { + "address": { + "type": "string" + } + } + }, + "ibc.applications.interchain_accounts.controller.v1.QueryParamsResponse": { + "description": "QueryParamsResponse is the response type for the Query/Params RPC method.", + "type": "object", + "properties": { + "params": { + "description": "params defines the parameters of the module.", + "$ref": "#/definitions/ibc.applications.interchain_accounts.controller.v1.Params" + } + } + }, + "ibc.applications.interchain_accounts.host.v1.MsgUpdateParams": { + "type": "object", + "title": "MsgUpdateParams defines the payload for Msg/UpdateParams", + "properties": { + "params": { + "description": "params defines the 27-interchain-accounts/host parameters to update.\n\nNOTE: All parameters must be supplied.", + "$ref": "#/definitions/ibc.applications.interchain_accounts.host.v1.Params" + }, + "signer": { + "type": "string", + "title": "signer address" + } + } + }, + "ibc.applications.interchain_accounts.host.v1.MsgUpdateParamsResponse": { + "type": "object", + "title": "MsgUpdateParamsResponse defines the response for Msg/UpdateParams" + }, + "ibc.applications.interchain_accounts.host.v1.Params": { + "description": "Params defines the set of on-chain interchain accounts parameters.\nThe following parameters may be used to disable the host submodule.", + "type": "object", + "properties": { + "allow_messages": { + "description": "allow_messages defines a list of sdk message typeURLs allowed to be executed on a host chain.", + "type": "array", + "items": { + "type": "string" + } + }, + "host_enabled": { + "description": "host_enabled enables or disables the host submodule.", + "type": "boolean" + } + } + }, + "ibc.applications.interchain_accounts.host.v1.QueryParamsResponse": { + "description": "QueryParamsResponse is the response type for the Query/Params RPC method.", + "type": "object", + "properties": { + "params": { + "description": "params defines the parameters of the module.", + "$ref": "#/definitions/ibc.applications.interchain_accounts.host.v1.Params" + } + } + }, + "ibc.applications.interchain_accounts.v1.InterchainAccountPacketData": { + "description": "InterchainAccountPacketData is comprised of a raw transaction, type of transaction and optional memo field.", + "type": "object", + "properties": { + "data": { + "type": "string", + "format": "byte" + }, + "memo": { + "type": "string" + }, + "type": { + "$ref": "#/definitions/ibc.applications.interchain_accounts.v1.Type" + } + } + }, + "ibc.applications.interchain_accounts.v1.Type": { + "description": "- TYPE_UNSPECIFIED: Default zero value enumeration\n - TYPE_EXECUTE_TX: Execute a transaction on an interchain accounts host chain", + "type": "string", + "title": "Type defines a classification of message issued from a controller chain to its associated interchain accounts\nhost", + "default": "TYPE_UNSPECIFIED", + "enum": [ + "TYPE_UNSPECIFIED", + "TYPE_EXECUTE_TX" + ] + }, + "ibc.applications.transfer.v1.DenomTrace": { + "description": "DenomTrace contains the base denomination for ICS20 fungible tokens and the\nsource tracing information path.", + "type": "object", + "properties": { + "base_denom": { + "description": "base denomination of the relayed fungible token.", + "type": "string" + }, + "path": { + "description": "path defines the chain of port/channel identifiers used for tracing the\nsource of the fungible token.", + "type": "string" + } + } + }, + "ibc.applications.transfer.v1.MsgTransfer": { + "type": "object", + "title": "MsgTransfer defines a msg to transfer fungible tokens (i.e Coins) between\nICS20 enabled chains. See ICS Spec here:\nhttps://github.com/cosmos/ibc/tree/master/spec/app/ics-020-fungible-token-transfer#data-structures", + "properties": { + "memo": { + "type": "string", + "title": "optional memo" + }, + "receiver": { + "type": "string", + "title": "the recipient address on the destination chain" + }, + "sender": { + "type": "string", + "title": "the sender address" + }, + "source_channel": { + "type": "string", + "title": "the channel by which the packet will be sent" + }, + "source_port": { + "type": "string", + "title": "the port on which the packet will be sent" + }, + "timeout_height": { + "description": "Timeout height relative to the current block height.\nThe timeout is disabled when set to 0.", + "$ref": "#/definitions/ibc.core.client.v1.Height" + }, + "timeout_timestamp": { + "description": "Timeout timestamp in absolute nanoseconds since unix epoch.\nThe timeout is disabled when set to 0.", + "type": "string", + "format": "uint64" + }, + "token": { + "title": "the tokens to be transferred", + "$ref": "#/definitions/cosmos.base.v1beta1.Coin" + } + } + }, + "ibc.applications.transfer.v1.MsgTransferResponse": { + "description": "MsgTransferResponse defines the Msg/Transfer response type.", + "type": "object", + "properties": { + "sequence": { + "type": "string", + "format": "uint64", + "title": "sequence number of the transfer packet sent" + } + } + }, + "ibc.applications.transfer.v1.MsgUpdateParams": { + "description": "MsgUpdateParams is the Msg/UpdateParams request type.", + "type": "object", + "properties": { + "params": { + "description": "params defines the transfer parameters to update.\n\nNOTE: All parameters must be supplied.", + "$ref": "#/definitions/ibc.applications.transfer.v1.Params" + }, + "signer": { + "type": "string", + "title": "signer address" + } + } + }, + "ibc.applications.transfer.v1.MsgUpdateParamsResponse": { + "description": "MsgUpdateParamsResponse defines the response structure for executing a\nMsgUpdateParams message.", + "type": "object" + }, + "ibc.applications.transfer.v1.Params": { + "description": "Params defines the set of IBC transfer parameters.\nNOTE: To prevent a single token from being transferred, set the\nTransfersEnabled parameter to true and then set the bank module's SendEnabled\nparameter for the denomination to false.", + "type": "object", + "properties": { + "receive_enabled": { + "description": "receive_enabled enables or disables all cross-chain token transfers to this\nchain.", + "type": "boolean" + }, + "send_enabled": { + "description": "send_enabled enables or disables all cross-chain token transfers from this\nchain.", + "type": "boolean" + } + } + }, + "ibc.applications.transfer.v1.QueryDenomHashResponse": { + "description": "QueryDenomHashResponse is the response type for the Query/DenomHash RPC\nmethod.", + "type": "object", + "properties": { + "hash": { + "description": "hash (in hex format) of the denomination trace information.", + "type": "string" + } + } + }, + "ibc.applications.transfer.v1.QueryDenomTraceResponse": { + "description": "QueryDenomTraceResponse is the response type for the Query/DenomTrace RPC\nmethod.", + "type": "object", + "properties": { + "denom_trace": { + "description": "denom_trace returns the requested denomination trace information.", + "$ref": "#/definitions/ibc.applications.transfer.v1.DenomTrace" + } + } + }, + "ibc.applications.transfer.v1.QueryDenomTracesResponse": { + "description": "QueryConnectionsResponse is the response type for the Query/DenomTraces RPC\nmethod.", + "type": "object", + "properties": { + "denom_traces": { + "description": "denom_traces returns all denominations trace information.", + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/ibc.applications.transfer.v1.DenomTrace" + } + }, + "pagination": { + "description": "pagination defines the pagination in the response.", + "$ref": "#/definitions/cosmos.base.query.v1beta1.PageResponse" + } + } + }, + "ibc.applications.transfer.v1.QueryEscrowAddressResponse": { + "description": "QueryEscrowAddressResponse is the response type of the EscrowAddress RPC method.", + "type": "object", + "properties": { + "escrow_address": { + "type": "string", + "title": "the escrow account address" + } + } + }, + "ibc.applications.transfer.v1.QueryParamsResponse": { + "description": "QueryParamsResponse is the response type for the Query/Params RPC method.", + "type": "object", + "properties": { + "params": { + "description": "params defines the parameters of the module.", + "$ref": "#/definitions/ibc.applications.transfer.v1.Params" + } + } + }, + "ibc.applications.transfer.v1.QueryTotalEscrowForDenomResponse": { + "description": "QueryTotalEscrowForDenomResponse is the response type for TotalEscrowForDenom RPC method.", + "type": "object", + "properties": { + "amount": { + "$ref": "#/definitions/cosmos.base.v1beta1.Coin" + } + } + }, + "ibc.core.channel.v1.Channel": { + "description": "Channel defines pipeline for exactly-once packet delivery between specific\nmodules on separate blockchains, which has at least one end capable of\nsending packets and one end capable of receiving packets.", + "type": "object", + "properties": { + "connection_hops": { + "type": "array", + "title": "list of connection identifiers, in order, along which packets sent on\nthis channel will travel", + "items": { + "type": "string" + } + }, + "counterparty": { + "title": "counterparty channel end", + "$ref": "#/definitions/ibc.core.channel.v1.Counterparty" + }, + "ordering": { + "title": "whether the channel is ordered or unordered", + "$ref": "#/definitions/ibc.core.channel.v1.Order" + }, + "state": { + "title": "current state of the channel end", + "$ref": "#/definitions/ibc.core.channel.v1.State" + }, + "upgrade_sequence": { + "type": "string", + "format": "uint64", + "title": "upgrade sequence indicates the latest upgrade attempt performed by this channel\nthe value of 0 indicates the channel has never been upgraded" + }, + "version": { + "type": "string", + "title": "opaque channel version, which is agreed upon during the handshake" + } + } + }, + "ibc.core.channel.v1.Counterparty": { + "type": "object", + "title": "Counterparty defines a channel end counterparty", + "properties": { + "channel_id": { + "type": "string", + "title": "channel end on the counterparty chain" + }, + "port_id": { + "description": "port on the counterparty chain which owns the other end of the channel.", + "type": "string" + } + } + }, + "ibc.core.channel.v1.ErrorReceipt": { + "description": "ErrorReceipt defines a type which encapsulates the upgrade sequence and error associated with the\nupgrade handshake failure. When a channel upgrade handshake is aborted both chains are expected to increment to the\nnext sequence.", + "type": "object", + "properties": { + "message": { + "type": "string", + "title": "the error message detailing the cause of failure" + }, + "sequence": { + "type": "string", + "format": "uint64", + "title": "the channel upgrade sequence" + } + } + }, + "ibc.core.channel.v1.IdentifiedChannel": { + "description": "IdentifiedChannel defines a channel with additional port and channel\nidentifier fields.", + "type": "object", + "properties": { + "channel_id": { + "type": "string", + "title": "channel identifier" + }, + "connection_hops": { + "type": "array", + "title": "list of connection identifiers, in order, along which packets sent on\nthis channel will travel", + "items": { + "type": "string" + } + }, + "counterparty": { + "title": "counterparty channel end", + "$ref": "#/definitions/ibc.core.channel.v1.Counterparty" + }, + "ordering": { + "title": "whether the channel is ordered or unordered", + "$ref": "#/definitions/ibc.core.channel.v1.Order" + }, + "port_id": { + "type": "string", + "title": "port identifier" + }, + "state": { + "title": "current state of the channel end", + "$ref": "#/definitions/ibc.core.channel.v1.State" + }, + "upgrade_sequence": { + "type": "string", + "format": "uint64", + "title": "upgrade sequence indicates the latest upgrade attempt performed by this channel\nthe value of 0 indicates the channel has never been upgraded" + }, + "version": { + "type": "string", + "title": "opaque channel version, which is agreed upon during the handshake" + } + } + }, + "ibc.core.channel.v1.MsgAcknowledgement": { + "type": "object", + "title": "MsgAcknowledgement receives incoming IBC acknowledgement", + "properties": { + "acknowledgement": { + "type": "string", + "format": "byte" + }, + "packet": { + "$ref": "#/definitions/ibc.core.channel.v1.Packet" + }, + "proof_acked": { + "type": "string", + "format": "byte" + }, + "proof_height": { + "$ref": "#/definitions/ibc.core.client.v1.Height" + }, + "signer": { + "type": "string" + } + } + }, + "ibc.core.channel.v1.MsgAcknowledgementResponse": { + "description": "MsgAcknowledgementResponse defines the Msg/Acknowledgement response type.", + "type": "object", + "properties": { + "result": { + "$ref": "#/definitions/ibc.core.channel.v1.ResponseResultType" + } + } + }, + "ibc.core.channel.v1.MsgChannelCloseConfirm": { + "description": "MsgChannelCloseConfirm defines a msg sent by a Relayer to Chain B\nto acknowledge the change of channel state to CLOSED on Chain A.", + "type": "object", + "properties": { + "channel_id": { + "type": "string" + }, + "counterparty_upgrade_sequence": { + "type": "string", + "format": "uint64" + }, + "port_id": { + "type": "string" + }, + "proof_height": { + "$ref": "#/definitions/ibc.core.client.v1.Height" + }, + "proof_init": { + "type": "string", + "format": "byte" + }, + "signer": { + "type": "string" + } + } + }, + "ibc.core.channel.v1.MsgChannelCloseConfirmResponse": { + "description": "MsgChannelCloseConfirmResponse defines the Msg/ChannelCloseConfirm response\ntype.", + "type": "object" + }, + "ibc.core.channel.v1.MsgChannelCloseInit": { + "description": "MsgChannelCloseInit defines a msg sent by a Relayer to Chain A\nto close a channel with Chain B.", + "type": "object", + "properties": { + "channel_id": { + "type": "string" + }, + "port_id": { + "type": "string" + }, + "signer": { + "type": "string" + } + } + }, + "ibc.core.channel.v1.MsgChannelCloseInitResponse": { + "description": "MsgChannelCloseInitResponse defines the Msg/ChannelCloseInit response type.", + "type": "object" + }, + "ibc.core.channel.v1.MsgChannelOpenAck": { + "description": "MsgChannelOpenAck defines a msg sent by a Relayer to Chain A to acknowledge\nthe change of channel state to TRYOPEN on Chain B.\nWARNING: a channel upgrade MUST NOT initialize an upgrade for this channel\nin the same block as executing this message otherwise the counterparty will\nbe incapable of opening.", + "type": "object", + "properties": { + "channel_id": { + "type": "string" + }, + "counterparty_channel_id": { + "type": "string" + }, + "counterparty_version": { + "type": "string" + }, + "port_id": { + "type": "string" + }, + "proof_height": { + "$ref": "#/definitions/ibc.core.client.v1.Height" + }, + "proof_try": { + "type": "string", + "format": "byte" + }, + "signer": { + "type": "string" + } + } + }, + "ibc.core.channel.v1.MsgChannelOpenAckResponse": { + "description": "MsgChannelOpenAckResponse defines the Msg/ChannelOpenAck response type.", + "type": "object" + }, + "ibc.core.channel.v1.MsgChannelOpenConfirm": { + "description": "MsgChannelOpenConfirm defines a msg sent by a Relayer to Chain B to\nacknowledge the change of channel state to OPEN on Chain A.", + "type": "object", + "properties": { + "channel_id": { + "type": "string" + }, + "port_id": { + "type": "string" + }, + "proof_ack": { + "type": "string", + "format": "byte" + }, + "proof_height": { + "$ref": "#/definitions/ibc.core.client.v1.Height" + }, + "signer": { + "type": "string" + } + } + }, + "ibc.core.channel.v1.MsgChannelOpenConfirmResponse": { + "description": "MsgChannelOpenConfirmResponse defines the Msg/ChannelOpenConfirm response\ntype.", + "type": "object" + }, + "ibc.core.channel.v1.MsgChannelOpenInit": { + "description": "MsgChannelOpenInit defines an sdk.Msg to initialize a channel handshake. It\nis called by a relayer on Chain A.", + "type": "object", + "properties": { + "channel": { + "$ref": "#/definitions/ibc.core.channel.v1.Channel" + }, + "port_id": { + "type": "string" + }, + "signer": { + "type": "string" + } + } + }, + "ibc.core.channel.v1.MsgChannelOpenInitResponse": { + "description": "MsgChannelOpenInitResponse defines the Msg/ChannelOpenInit response type.", + "type": "object", + "properties": { + "channel_id": { + "type": "string" + }, + "version": { + "type": "string" + } + } + }, + "ibc.core.channel.v1.MsgChannelOpenTry": { + "description": "MsgChannelOpenInit defines a msg sent by a Relayer to try to open a channel\non Chain B. The version field within the Channel field has been deprecated. Its\nvalue will be ignored by core IBC.", + "type": "object", + "properties": { + "channel": { + "description": "NOTE: the version field within the channel has been deprecated. Its value will be ignored by core IBC.", + "$ref": "#/definitions/ibc.core.channel.v1.Channel" + }, + "counterparty_version": { + "type": "string" + }, + "port_id": { + "type": "string" + }, + "previous_channel_id": { + "description": "Deprecated: this field is unused. Crossing hello's are no longer supported in core IBC.", + "type": "string" + }, + "proof_height": { + "$ref": "#/definitions/ibc.core.client.v1.Height" + }, + "proof_init": { + "type": "string", + "format": "byte" + }, + "signer": { + "type": "string" + } + } + }, + "ibc.core.channel.v1.MsgChannelOpenTryResponse": { + "description": "MsgChannelOpenTryResponse defines the Msg/ChannelOpenTry response type.", + "type": "object", + "properties": { + "channel_id": { + "type": "string" + }, + "version": { + "type": "string" + } + } + }, + "ibc.core.channel.v1.MsgChannelUpgradeAck": { + "type": "object", + "title": "MsgChannelUpgradeAck defines the request type for the ChannelUpgradeAck rpc", + "properties": { + "channel_id": { + "type": "string" + }, + "counterparty_upgrade": { + "$ref": "#/definitions/ibc.core.channel.v1.Upgrade" + }, + "port_id": { + "type": "string" + }, + "proof_channel": { + "type": "string", + "format": "byte" + }, + "proof_height": { + "$ref": "#/definitions/ibc.core.client.v1.Height" + }, + "proof_upgrade": { + "type": "string", + "format": "byte" + }, + "signer": { + "type": "string" + } + } + }, + "ibc.core.channel.v1.MsgChannelUpgradeAckResponse": { + "type": "object", + "title": "MsgChannelUpgradeAckResponse defines MsgChannelUpgradeAck response type", + "properties": { + "result": { + "$ref": "#/definitions/ibc.core.channel.v1.ResponseResultType" + } + } + }, + "ibc.core.channel.v1.MsgChannelUpgradeCancel": { + "type": "object", + "title": "MsgChannelUpgradeCancel defines the request type for the ChannelUpgradeCancel rpc", + "properties": { + "channel_id": { + "type": "string" + }, + "error_receipt": { + "$ref": "#/definitions/ibc.core.channel.v1.ErrorReceipt" + }, + "port_id": { + "type": "string" + }, + "proof_error_receipt": { + "type": "string", + "format": "byte" + }, + "proof_height": { + "$ref": "#/definitions/ibc.core.client.v1.Height" + }, + "signer": { + "type": "string" + } + } + }, + "ibc.core.channel.v1.MsgChannelUpgradeCancelResponse": { + "type": "object", + "title": "MsgChannelUpgradeCancelResponse defines the MsgChannelUpgradeCancel response type" + }, + "ibc.core.channel.v1.MsgChannelUpgradeConfirm": { + "type": "object", + "title": "MsgChannelUpgradeConfirm defines the request type for the ChannelUpgradeConfirm rpc", + "properties": { + "channel_id": { + "type": "string" + }, + "counterparty_channel_state": { + "$ref": "#/definitions/ibc.core.channel.v1.State" + }, + "counterparty_upgrade": { + "$ref": "#/definitions/ibc.core.channel.v1.Upgrade" + }, + "port_id": { + "type": "string" + }, + "proof_channel": { + "type": "string", + "format": "byte" + }, + "proof_height": { + "$ref": "#/definitions/ibc.core.client.v1.Height" + }, + "proof_upgrade": { + "type": "string", + "format": "byte" + }, + "signer": { + "type": "string" + } + } + }, + "ibc.core.channel.v1.MsgChannelUpgradeConfirmResponse": { + "type": "object", + "title": "MsgChannelUpgradeConfirmResponse defines MsgChannelUpgradeConfirm response type", + "properties": { + "result": { + "$ref": "#/definitions/ibc.core.channel.v1.ResponseResultType" + } + } + }, + "ibc.core.channel.v1.MsgChannelUpgradeInit": { + "description": "MsgChannelUpgradeInit defines the request type for the ChannelUpgradeInit rpc\nWARNING: Initializing a channel upgrade in the same block as opening the channel\nmay result in the counterparty being incapable of opening.", + "type": "object", + "properties": { + "channel_id": { + "type": "string" + }, + "fields": { + "$ref": "#/definitions/ibc.core.channel.v1.UpgradeFields" + }, + "port_id": { + "type": "string" + }, + "signer": { + "type": "string" + } + } + }, + "ibc.core.channel.v1.MsgChannelUpgradeInitResponse": { + "type": "object", + "title": "MsgChannelUpgradeInitResponse defines the MsgChannelUpgradeInit response type", + "properties": { + "upgrade": { + "$ref": "#/definitions/ibc.core.channel.v1.Upgrade" + }, + "upgrade_sequence": { + "type": "string", + "format": "uint64" + } + } + }, + "ibc.core.channel.v1.MsgChannelUpgradeOpen": { + "type": "object", + "title": "MsgChannelUpgradeOpen defines the request type for the ChannelUpgradeOpen rpc", + "properties": { + "channel_id": { + "type": "string" + }, + "counterparty_channel_state": { + "$ref": "#/definitions/ibc.core.channel.v1.State" + }, + "counterparty_upgrade_sequence": { + "type": "string", + "format": "uint64" + }, + "port_id": { + "type": "string" + }, + "proof_channel": { + "type": "string", + "format": "byte" + }, + "proof_height": { + "$ref": "#/definitions/ibc.core.client.v1.Height" + }, + "signer": { + "type": "string" + } + } + }, + "ibc.core.channel.v1.MsgChannelUpgradeOpenResponse": { + "type": "object", + "title": "MsgChannelUpgradeOpenResponse defines the MsgChannelUpgradeOpen response type" + }, + "ibc.core.channel.v1.MsgChannelUpgradeTimeout": { + "type": "object", + "title": "MsgChannelUpgradeTimeout defines the request type for the ChannelUpgradeTimeout rpc", + "properties": { + "channel_id": { + "type": "string" + }, + "counterparty_channel": { + "$ref": "#/definitions/ibc.core.channel.v1.Channel" + }, + "port_id": { + "type": "string" + }, + "proof_channel": { + "type": "string", + "format": "byte" + }, + "proof_height": { + "$ref": "#/definitions/ibc.core.client.v1.Height" + }, + "signer": { + "type": "string" + } + } + }, + "ibc.core.channel.v1.MsgChannelUpgradeTimeoutResponse": { + "type": "object", + "title": "MsgChannelUpgradeTimeoutRepsonse defines the MsgChannelUpgradeTimeout response type" + }, + "ibc.core.channel.v1.MsgChannelUpgradeTry": { + "type": "object", + "title": "MsgChannelUpgradeTry defines the request type for the ChannelUpgradeTry rpc", + "properties": { + "channel_id": { + "type": "string" + }, + "counterparty_upgrade_fields": { + "$ref": "#/definitions/ibc.core.channel.v1.UpgradeFields" + }, + "counterparty_upgrade_sequence": { + "type": "string", + "format": "uint64" + }, + "port_id": { + "type": "string" + }, + "proof_channel": { + "type": "string", + "format": "byte" + }, + "proof_height": { + "$ref": "#/definitions/ibc.core.client.v1.Height" + }, + "proof_upgrade": { + "type": "string", + "format": "byte" + }, + "proposed_upgrade_connection_hops": { + "type": "array", + "items": { + "type": "string" + } + }, + "signer": { + "type": "string" + } + } + }, + "ibc.core.channel.v1.MsgChannelUpgradeTryResponse": { + "type": "object", + "title": "MsgChannelUpgradeTryResponse defines the MsgChannelUpgradeTry response type", + "properties": { + "result": { + "$ref": "#/definitions/ibc.core.channel.v1.ResponseResultType" + }, + "upgrade": { + "$ref": "#/definitions/ibc.core.channel.v1.Upgrade" + }, + "upgrade_sequence": { + "type": "string", + "format": "uint64" + } + } + }, + "ibc.core.channel.v1.MsgPruneAcknowledgements": { + "description": "MsgPruneAcknowledgements defines the request type for the PruneAcknowledgements rpc.", + "type": "object", + "properties": { + "channel_id": { + "type": "string" + }, + "limit": { + "type": "string", + "format": "uint64" + }, + "port_id": { + "type": "string" + }, + "signer": { + "type": "string" + } + } + }, + "ibc.core.channel.v1.MsgPruneAcknowledgementsResponse": { + "description": "MsgPruneAcknowledgementsResponse defines the response type for the PruneAcknowledgements rpc.", + "type": "object", + "properties": { + "total_pruned_sequences": { + "description": "Number of sequences pruned (includes both packet acknowledgements and packet receipts where appropriate).", + "type": "string", + "format": "uint64" + }, + "total_remaining_sequences": { + "description": "Number of sequences left after pruning.", + "type": "string", + "format": "uint64" + } + } + }, + "ibc.core.channel.v1.MsgRecvPacket": { + "type": "object", + "title": "MsgRecvPacket receives incoming IBC packet", + "properties": { + "packet": { + "$ref": "#/definitions/ibc.core.channel.v1.Packet" + }, + "proof_commitment": { + "type": "string", + "format": "byte" + }, + "proof_height": { + "$ref": "#/definitions/ibc.core.client.v1.Height" + }, + "signer": { + "type": "string" + } + } + }, + "ibc.core.channel.v1.MsgRecvPacketResponse": { + "description": "MsgRecvPacketResponse defines the Msg/RecvPacket response type.", + "type": "object", + "properties": { + "result": { + "$ref": "#/definitions/ibc.core.channel.v1.ResponseResultType" + } + } + }, + "ibc.core.channel.v1.MsgTimeout": { + "type": "object", + "title": "MsgTimeout receives timed-out packet", + "properties": { + "next_sequence_recv": { + "type": "string", + "format": "uint64" + }, + "packet": { + "$ref": "#/definitions/ibc.core.channel.v1.Packet" + }, + "proof_height": { + "$ref": "#/definitions/ibc.core.client.v1.Height" + }, + "proof_unreceived": { + "type": "string", + "format": "byte" + }, + "signer": { + "type": "string" + } + } + }, + "ibc.core.channel.v1.MsgTimeoutOnClose": { + "description": "MsgTimeoutOnClose timed-out packet upon counterparty channel closure.", + "type": "object", + "properties": { + "counterparty_upgrade_sequence": { + "type": "string", + "format": "uint64" + }, + "next_sequence_recv": { + "type": "string", + "format": "uint64" + }, + "packet": { + "$ref": "#/definitions/ibc.core.channel.v1.Packet" + }, + "proof_close": { + "type": "string", + "format": "byte" + }, + "proof_height": { + "$ref": "#/definitions/ibc.core.client.v1.Height" + }, + "proof_unreceived": { + "type": "string", + "format": "byte" + }, + "signer": { + "type": "string" + } + } + }, + "ibc.core.channel.v1.MsgTimeoutOnCloseResponse": { + "description": "MsgTimeoutOnCloseResponse defines the Msg/TimeoutOnClose response type.", + "type": "object", + "properties": { + "result": { + "$ref": "#/definitions/ibc.core.channel.v1.ResponseResultType" + } + } + }, + "ibc.core.channel.v1.MsgTimeoutResponse": { + "description": "MsgTimeoutResponse defines the Msg/Timeout response type.", + "type": "object", + "properties": { + "result": { + "$ref": "#/definitions/ibc.core.channel.v1.ResponseResultType" + } + } + }, + "ibc.core.channel.v1.MsgUpdateParams": { + "description": "MsgUpdateParams is the MsgUpdateParams request type.", + "type": "object", + "properties": { + "authority": { + "description": "authority is the address that controls the module (defaults to x/gov unless overwritten).", + "type": "string" + }, + "params": { + "description": "params defines the channel parameters to update.\n\nNOTE: All parameters must be supplied.", + "$ref": "#/definitions/ibc.core.channel.v1.Params" + } + } + }, + "ibc.core.channel.v1.MsgUpdateParamsResponse": { + "description": "MsgUpdateParamsResponse defines the MsgUpdateParams response type.", + "type": "object" + }, + "ibc.core.channel.v1.Order": { + "description": "- ORDER_NONE_UNSPECIFIED: zero-value for channel ordering\n - ORDER_UNORDERED: packets can be delivered in any order, which may differ from the order in\nwhich they were sent.\n - ORDER_ORDERED: packets are delivered exactly in the order which they were sent", + "type": "string", + "title": "Order defines if a channel is ORDERED or UNORDERED", + "default": "ORDER_NONE_UNSPECIFIED", + "enum": [ + "ORDER_NONE_UNSPECIFIED", + "ORDER_UNORDERED", + "ORDER_ORDERED" + ] + }, + "ibc.core.channel.v1.Packet": { + "type": "object", + "title": "Packet defines a type that carries data across different chains through IBC", + "properties": { + "data": { + "type": "string", + "format": "byte", + "title": "actual opaque bytes transferred directly to the application module" + }, + "destination_channel": { + "description": "identifies the channel end on the receiving chain.", + "type": "string" + }, + "destination_port": { + "description": "identifies the port on the receiving chain.", + "type": "string" + }, + "sequence": { + "description": "number corresponds to the order of sends and receives, where a Packet\nwith an earlier sequence number must be sent and received before a Packet\nwith a later sequence number.", + "type": "string", + "format": "uint64" + }, + "source_channel": { + "description": "identifies the channel end on the sending chain.", + "type": "string" + }, + "source_port": { + "description": "identifies the port on the sending chain.", + "type": "string" + }, + "timeout_height": { + "title": "block height after which the packet times out", + "$ref": "#/definitions/ibc.core.client.v1.Height" + }, + "timeout_timestamp": { + "type": "string", + "format": "uint64", + "title": "block timestamp (in nanoseconds) after which the packet times out" + } + } + }, + "ibc.core.channel.v1.PacketId": { + "type": "object", + "title": "PacketId is an identifer for a unique Packet\nSource chains refer to packets by source port/channel\nDestination chains refer to packets by destination port/channel", + "properties": { + "channel_id": { + "type": "string", + "title": "channel unique identifier" + }, + "port_id": { + "type": "string", + "title": "channel port identifier" + }, + "sequence": { + "type": "string", + "format": "uint64", + "title": "packet sequence" + } + } + }, + "ibc.core.channel.v1.PacketState": { + "description": "PacketState defines the generic type necessary to retrieve and store\npacket commitments, acknowledgements, and receipts.\nCaller is responsible for knowing the context necessary to interpret this\nstate as a commitment, acknowledgement, or a receipt.", + "type": "object", + "properties": { + "channel_id": { + "description": "channel unique identifier.", + "type": "string" + }, + "data": { + "description": "embedded data that represents packet state.", + "type": "string", + "format": "byte" + }, + "port_id": { + "description": "channel port identifier.", + "type": "string" + }, + "sequence": { + "description": "packet sequence.", + "type": "string", + "format": "uint64" + } + } + }, + "ibc.core.channel.v1.Params": { + "description": "Params defines the set of IBC channel parameters.", + "type": "object", + "properties": { + "upgrade_timeout": { + "description": "the relative timeout after which channel upgrades will time out.", + "$ref": "#/definitions/ibc.core.channel.v1.Timeout" + } + } + }, + "ibc.core.channel.v1.QueryChannelClientStateResponse": { + "type": "object", + "title": "QueryChannelClientStateResponse is the Response type for the\nQuery/QueryChannelClientState RPC method", + "properties": { + "identified_client_state": { + "title": "client state associated with the channel", + "$ref": "#/definitions/ibc.core.client.v1.IdentifiedClientState" + }, + "proof": { + "type": "string", + "format": "byte", + "title": "merkle proof of existence" + }, + "proof_height": { + "title": "height at which the proof was retrieved", + "$ref": "#/definitions/ibc.core.client.v1.Height" + } + } + }, + "ibc.core.channel.v1.QueryChannelConsensusStateResponse": { + "type": "object", + "title": "QueryChannelClientStateResponse is the Response type for the\nQuery/QueryChannelClientState RPC method", + "properties": { + "client_id": { + "type": "string", + "title": "client ID associated with the consensus state" + }, + "consensus_state": { + "title": "consensus state associated with the channel", + "$ref": "#/definitions/google.protobuf.Any" + }, + "proof": { + "type": "string", + "format": "byte", + "title": "merkle proof of existence" + }, + "proof_height": { + "title": "height at which the proof was retrieved", + "$ref": "#/definitions/ibc.core.client.v1.Height" + } + } + }, + "ibc.core.channel.v1.QueryChannelParamsResponse": { + "description": "QueryChannelParamsResponse is the response type for the Query/ChannelParams RPC method.", + "type": "object", + "properties": { + "params": { + "description": "params defines the parameters of the module.", + "$ref": "#/definitions/ibc.core.channel.v1.Params" + } + } + }, + "ibc.core.channel.v1.QueryChannelResponse": { + "description": "QueryChannelResponse is the response type for the Query/Channel RPC method.\nBesides the Channel end, it includes a proof and the height from which the\nproof was retrieved.", + "type": "object", + "properties": { + "channel": { + "title": "channel associated with the request identifiers", + "$ref": "#/definitions/ibc.core.channel.v1.Channel" + }, + "proof": { + "type": "string", + "format": "byte", + "title": "merkle proof of existence" + }, + "proof_height": { + "title": "height at which the proof was retrieved", + "$ref": "#/definitions/ibc.core.client.v1.Height" + } + } + }, + "ibc.core.channel.v1.QueryChannelsResponse": { + "description": "QueryChannelsResponse is the response type for the Query/Channels RPC method.", + "type": "object", + "properties": { + "channels": { + "description": "list of stored channels of the chain.", + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/ibc.core.channel.v1.IdentifiedChannel" + } + }, + "height": { + "title": "query block height", + "$ref": "#/definitions/ibc.core.client.v1.Height" + }, + "pagination": { + "title": "pagination response", + "$ref": "#/definitions/cosmos.base.query.v1beta1.PageResponse" + } + } + }, + "ibc.core.channel.v1.QueryConnectionChannelsResponse": { + "type": "object", + "title": "QueryConnectionChannelsResponse is the Response type for the\nQuery/QueryConnectionChannels RPC method", + "properties": { + "channels": { + "description": "list of channels associated with a connection.", + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/ibc.core.channel.v1.IdentifiedChannel" + } + }, + "height": { + "title": "query block height", + "$ref": "#/definitions/ibc.core.client.v1.Height" + }, + "pagination": { + "title": "pagination response", + "$ref": "#/definitions/cosmos.base.query.v1beta1.PageResponse" + } + } + }, + "ibc.core.channel.v1.QueryNextSequenceReceiveResponse": { + "type": "object", + "title": "QuerySequenceResponse is the response type for the\nQuery/QueryNextSequenceReceiveResponse RPC method", + "properties": { + "next_sequence_receive": { + "type": "string", + "format": "uint64", + "title": "next sequence receive number" + }, + "proof": { + "type": "string", + "format": "byte", + "title": "merkle proof of existence" + }, + "proof_height": { + "title": "height at which the proof was retrieved", + "$ref": "#/definitions/ibc.core.client.v1.Height" + } + } + }, + "ibc.core.channel.v1.QueryNextSequenceSendResponse": { + "type": "object", + "title": "QueryNextSequenceSendResponse is the request type for the\nQuery/QueryNextSequenceSend RPC method", + "properties": { + "next_sequence_send": { + "type": "string", + "format": "uint64", + "title": "next sequence send number" + }, + "proof": { + "type": "string", + "format": "byte", + "title": "merkle proof of existence" + }, + "proof_height": { + "title": "height at which the proof was retrieved", + "$ref": "#/definitions/ibc.core.client.v1.Height" + } + } + }, + "ibc.core.channel.v1.QueryPacketAcknowledgementResponse": { + "type": "object", + "title": "QueryPacketAcknowledgementResponse defines the client query response for a\npacket which also includes a proof and the height from which the\nproof was retrieved", + "properties": { + "acknowledgement": { + "type": "string", + "format": "byte", + "title": "packet associated with the request fields" + }, + "proof": { + "type": "string", + "format": "byte", + "title": "merkle proof of existence" + }, + "proof_height": { + "title": "height at which the proof was retrieved", + "$ref": "#/definitions/ibc.core.client.v1.Height" + } + } + }, + "ibc.core.channel.v1.QueryPacketAcknowledgementsResponse": { + "type": "object", + "title": "QueryPacketAcknowledgemetsResponse is the request type for the\nQuery/QueryPacketAcknowledgements RPC method", + "properties": { + "acknowledgements": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/ibc.core.channel.v1.PacketState" + } + }, + "height": { + "title": "query block height", + "$ref": "#/definitions/ibc.core.client.v1.Height" + }, + "pagination": { + "title": "pagination response", + "$ref": "#/definitions/cosmos.base.query.v1beta1.PageResponse" + } + } + }, + "ibc.core.channel.v1.QueryPacketCommitmentResponse": { + "type": "object", + "title": "QueryPacketCommitmentResponse defines the client query response for a packet\nwhich also includes a proof and the height from which the proof was\nretrieved", + "properties": { + "commitment": { + "type": "string", + "format": "byte", + "title": "packet associated with the request fields" + }, + "proof": { + "type": "string", + "format": "byte", + "title": "merkle proof of existence" + }, + "proof_height": { + "title": "height at which the proof was retrieved", + "$ref": "#/definitions/ibc.core.client.v1.Height" + } + } + }, + "ibc.core.channel.v1.QueryPacketCommitmentsResponse": { + "type": "object", + "title": "QueryPacketCommitmentsResponse is the request type for the\nQuery/QueryPacketCommitments RPC method", + "properties": { + "commitments": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/ibc.core.channel.v1.PacketState" + } + }, + "height": { + "title": "query block height", + "$ref": "#/definitions/ibc.core.client.v1.Height" + }, + "pagination": { + "title": "pagination response", + "$ref": "#/definitions/cosmos.base.query.v1beta1.PageResponse" + } + } + }, + "ibc.core.channel.v1.QueryPacketReceiptResponse": { + "type": "object", + "title": "QueryPacketReceiptResponse defines the client query response for a packet\nreceipt which also includes a proof, and the height from which the proof was\nretrieved", + "properties": { + "proof": { + "type": "string", + "format": "byte", + "title": "merkle proof of existence" + }, + "proof_height": { + "title": "height at which the proof was retrieved", + "$ref": "#/definitions/ibc.core.client.v1.Height" + }, + "received": { + "type": "boolean", + "title": "success flag for if receipt exists" + } + } + }, + "ibc.core.channel.v1.QueryUnreceivedAcksResponse": { + "type": "object", + "title": "QueryUnreceivedAcksResponse is the response type for the\nQuery/UnreceivedAcks RPC method", + "properties": { + "height": { + "title": "query block height", + "$ref": "#/definitions/ibc.core.client.v1.Height" + }, + "sequences": { + "type": "array", + "title": "list of unreceived acknowledgement sequences", + "items": { + "type": "string", + "format": "uint64" + } + } + } + }, + "ibc.core.channel.v1.QueryUnreceivedPacketsResponse": { + "type": "object", + "title": "QueryUnreceivedPacketsResponse is the response type for the\nQuery/UnreceivedPacketCommitments RPC method", + "properties": { + "height": { + "title": "query block height", + "$ref": "#/definitions/ibc.core.client.v1.Height" + }, + "sequences": { + "type": "array", + "title": "list of unreceived packet sequences", + "items": { + "type": "string", + "format": "uint64" + } + } + } + }, + "ibc.core.channel.v1.QueryUpgradeErrorResponse": { + "type": "object", + "title": "QueryUpgradeErrorResponse is the response type for the Query/QueryUpgradeError RPC method", + "properties": { + "error_receipt": { + "$ref": "#/definitions/ibc.core.channel.v1.ErrorReceipt" + }, + "proof": { + "type": "string", + "format": "byte", + "title": "merkle proof of existence" + }, + "proof_height": { + "title": "height at which the proof was retrieved", + "$ref": "#/definitions/ibc.core.client.v1.Height" + } + } + }, + "ibc.core.channel.v1.QueryUpgradeResponse": { + "type": "object", + "title": "QueryUpgradeResponse is the response type for the QueryUpgradeResponse RPC method", + "properties": { + "proof": { + "type": "string", + "format": "byte", + "title": "merkle proof of existence" + }, + "proof_height": { + "title": "height at which the proof was retrieved", + "$ref": "#/definitions/ibc.core.client.v1.Height" + }, + "upgrade": { + "$ref": "#/definitions/ibc.core.channel.v1.Upgrade" + } + } + }, + "ibc.core.channel.v1.ResponseResultType": { + "description": "- RESPONSE_RESULT_TYPE_UNSPECIFIED: Default zero value enumeration\n - RESPONSE_RESULT_TYPE_NOOP: The message did not call the IBC application callbacks (because, for example, the packet had already been relayed)\n - RESPONSE_RESULT_TYPE_SUCCESS: The message was executed successfully\n - RESPONSE_RESULT_TYPE_FAILURE: The message was executed unsuccessfully", + "type": "string", + "title": "ResponseResultType defines the possible outcomes of the execution of a message", + "default": "RESPONSE_RESULT_TYPE_UNSPECIFIED", + "enum": [ + "RESPONSE_RESULT_TYPE_UNSPECIFIED", + "RESPONSE_RESULT_TYPE_NOOP", + "RESPONSE_RESULT_TYPE_SUCCESS", + "RESPONSE_RESULT_TYPE_FAILURE" + ] + }, + "ibc.core.channel.v1.State": { + "description": "State defines if a channel is in one of the following states:\nCLOSED, INIT, TRYOPEN, OPEN, FLUSHING, FLUSHCOMPLETE or UNINITIALIZED.\n\n - STATE_UNINITIALIZED_UNSPECIFIED: Default State\n - STATE_INIT: A channel has just started the opening handshake.\n - STATE_TRYOPEN: A channel has acknowledged the handshake step on the counterparty chain.\n - STATE_OPEN: A channel has completed the handshake. Open channels are\nready to send and receive packets.\n - STATE_CLOSED: A channel has been closed and can no longer be used to send or receive\npackets.\n - STATE_FLUSHING: A channel has just accepted the upgrade handshake attempt and is flushing in-flight packets.\n - STATE_FLUSHCOMPLETE: A channel has just completed flushing any in-flight packets.", + "type": "string", + "default": "STATE_UNINITIALIZED_UNSPECIFIED", + "enum": [ + "STATE_UNINITIALIZED_UNSPECIFIED", + "STATE_INIT", + "STATE_TRYOPEN", + "STATE_OPEN", + "STATE_CLOSED", + "STATE_FLUSHING", + "STATE_FLUSHCOMPLETE" + ] + }, + "ibc.core.channel.v1.Timeout": { + "description": "Timeout defines an execution deadline structure for 04-channel handlers.\nThis includes packet lifecycle handlers as well as the upgrade handshake handlers.\nA valid Timeout contains either one or both of a timestamp and block height (sequence).", + "type": "object", + "properties": { + "height": { + "title": "block height after which the packet or upgrade times out", + "$ref": "#/definitions/ibc.core.client.v1.Height" + }, + "timestamp": { + "type": "string", + "format": "uint64", + "title": "block timestamp (in nanoseconds) after which the packet or upgrade times out" + } + } + }, + "ibc.core.channel.v1.Upgrade": { + "description": "Upgrade is a verifiable type which contains the relevant information\nfor an attempted upgrade. It provides the proposed changes to the channel\nend, the timeout for this upgrade attempt and the next packet sequence\nwhich allows the counterparty to efficiently know the highest sequence it has received.\nThe next sequence send is used for pruning and upgrading from unordered to ordered channels.", + "type": "object", + "properties": { + "fields": { + "$ref": "#/definitions/ibc.core.channel.v1.UpgradeFields" + }, + "next_sequence_send": { + "type": "string", + "format": "uint64" + }, + "timeout": { + "$ref": "#/definitions/ibc.core.channel.v1.Timeout" + } + } + }, + "ibc.core.channel.v1.UpgradeFields": { + "description": "UpgradeFields are the fields in a channel end which may be changed\nduring a channel upgrade.", + "type": "object", + "properties": { + "connection_hops": { + "type": "array", + "items": { + "type": "string" + } + }, + "ordering": { + "$ref": "#/definitions/ibc.core.channel.v1.Order" + }, + "version": { + "type": "string" + } + } + }, + "ibc.core.client.v1.ConsensusStateWithHeight": { + "description": "ConsensusStateWithHeight defines a consensus state with an additional height\nfield.", + "type": "object", + "properties": { + "consensus_state": { + "title": "consensus state", + "$ref": "#/definitions/google.protobuf.Any" + }, + "height": { + "title": "consensus state height", + "$ref": "#/definitions/ibc.core.client.v1.Height" + } + } + }, + "ibc.core.client.v1.Height": { + "description": "Normally the RevisionHeight is incremented at each height while keeping\nRevisionNumber the same. However some consensus algorithms may choose to\nreset the height in certain conditions e.g. hard forks, state-machine\nbreaking changes In these cases, the RevisionNumber is incremented so that\nheight continues to be monitonically increasing even as the RevisionHeight\ngets reset", + "type": "object", + "title": "Height is a monotonically increasing data type\nthat can be compared against another Height for the purposes of updating and\nfreezing clients", + "properties": { + "revision_height": { + "type": "string", + "format": "uint64", + "title": "the height within the given revision" + }, + "revision_number": { + "type": "string", + "format": "uint64", + "title": "the revision that the client is currently on" + } + } + }, + "ibc.core.client.v1.IdentifiedClientState": { + "description": "IdentifiedClientState defines a client state with an additional client\nidentifier field.", + "type": "object", + "properties": { + "client_id": { + "type": "string", + "title": "client identifier" + }, + "client_state": { + "title": "client state", + "$ref": "#/definitions/google.protobuf.Any" + } + } + }, + "ibc.core.client.v1.MsgCreateClient": { + "type": "object", + "title": "MsgCreateClient defines a message to create an IBC client", + "properties": { + "client_state": { + "title": "light client state", + "$ref": "#/definitions/google.protobuf.Any" + }, + "consensus_state": { + "description": "consensus state associated with the client that corresponds to a given\nheight.", + "$ref": "#/definitions/google.protobuf.Any" + }, + "signer": { + "type": "string", + "title": "signer address" + } + } + }, + "ibc.core.client.v1.MsgCreateClientResponse": { + "description": "MsgCreateClientResponse defines the Msg/CreateClient response type.", + "type": "object" + }, + "ibc.core.client.v1.MsgIBCSoftwareUpgrade": { + "type": "object", + "title": "MsgIBCSoftwareUpgrade defines the message used to schedule an upgrade of an IBC client using a v1 governance proposal", + "properties": { + "plan": { + "$ref": "#/definitions/cosmos.upgrade.v1beta1.Plan" + }, + "signer": { + "type": "string", + "title": "signer address" + }, + "upgraded_client_state": { + "description": "An UpgradedClientState must be provided to perform an IBC breaking upgrade.\nThis will make the chain commit to the correct upgraded (self) client state\nbefore the upgrade occurs, so that connecting chains can verify that the\nnew upgraded client is valid by verifying a proof on the previous version\nof the chain. This will allow IBC connections to persist smoothly across\nplanned chain upgrades. Correspondingly, the UpgradedClientState field has been\ndeprecated in the Cosmos SDK to allow for this logic to exist solely in\nthe 02-client module.", + "$ref": "#/definitions/google.protobuf.Any" + } + } + }, + "ibc.core.client.v1.MsgIBCSoftwareUpgradeResponse": { + "description": "MsgIBCSoftwareUpgradeResponse defines the Msg/IBCSoftwareUpgrade response type.", + "type": "object" + }, + "ibc.core.client.v1.MsgRecoverClient": { + "description": "MsgRecoverClient defines the message used to recover a frozen or expired client.", + "type": "object", + "properties": { + "signer": { + "type": "string", + "title": "signer address" + }, + "subject_client_id": { + "type": "string", + "title": "the client identifier for the client to be updated if the proposal passes" + }, + "substitute_client_id": { + "type": "string", + "title": "the substitute client identifier for the client which will replace the subject\nclient" + } + } + }, + "ibc.core.client.v1.MsgRecoverClientResponse": { + "description": "MsgRecoverClientResponse defines the Msg/RecoverClient response type.", + "type": "object" + }, + "ibc.core.client.v1.MsgSubmitMisbehaviour": { + "description": "MsgSubmitMisbehaviour defines an sdk.Msg type that submits Evidence for\nlight client misbehaviour.\nThis message has been deprecated. Use MsgUpdateClient instead.", + "type": "object", + "properties": { + "client_id": { + "type": "string", + "title": "client unique identifier" + }, + "misbehaviour": { + "title": "misbehaviour used for freezing the light client", + "$ref": "#/definitions/google.protobuf.Any" + }, + "signer": { + "type": "string", + "title": "signer address" + } + } + }, + "ibc.core.client.v1.MsgSubmitMisbehaviourResponse": { + "description": "MsgSubmitMisbehaviourResponse defines the Msg/SubmitMisbehaviour response\ntype.", + "type": "object" + }, + "ibc.core.client.v1.MsgUpdateClient": { + "description": "MsgUpdateClient defines an sdk.Msg to update a IBC client state using\nthe given client message.", + "type": "object", + "properties": { + "client_id": { + "type": "string", + "title": "client unique identifier" + }, + "client_message": { + "title": "client message to update the light client", + "$ref": "#/definitions/google.protobuf.Any" + }, + "signer": { + "type": "string", + "title": "signer address" + } + } + }, + "ibc.core.client.v1.MsgUpdateClientResponse": { + "description": "MsgUpdateClientResponse defines the Msg/UpdateClient response type.", + "type": "object" + }, + "ibc.core.client.v1.MsgUpdateParams": { + "description": "MsgUpdateParams defines the sdk.Msg type to update the client parameters.", + "type": "object", + "properties": { + "params": { + "description": "params defines the client parameters to update.\n\nNOTE: All parameters must be supplied.", + "$ref": "#/definitions/ibc.core.client.v1.Params" + }, + "signer": { + "type": "string", + "title": "signer address" + } + } + }, + "ibc.core.client.v1.MsgUpdateParamsResponse": { + "description": "MsgUpdateParamsResponse defines the MsgUpdateParams response type.", + "type": "object" + }, + "ibc.core.client.v1.MsgUpgradeClient": { + "type": "object", + "title": "MsgUpgradeClient defines an sdk.Msg to upgrade an IBC client to a new client\nstate", + "properties": { + "client_id": { + "type": "string", + "title": "client unique identifier" + }, + "client_state": { + "title": "upgraded client state", + "$ref": "#/definitions/google.protobuf.Any" + }, + "consensus_state": { + "title": "upgraded consensus state, only contains enough information to serve as a\nbasis of trust in update logic", + "$ref": "#/definitions/google.protobuf.Any" + }, + "proof_upgrade_client": { + "type": "string", + "format": "byte", + "title": "proof that old chain committed to new client" + }, + "proof_upgrade_consensus_state": { + "type": "string", + "format": "byte", + "title": "proof that old chain committed to new consensus state" + }, + "signer": { + "type": "string", + "title": "signer address" + } + } + }, + "ibc.core.client.v1.MsgUpgradeClientResponse": { + "description": "MsgUpgradeClientResponse defines the Msg/UpgradeClient response type.", + "type": "object" + }, + "ibc.core.client.v1.Params": { + "description": "Params defines the set of IBC light client parameters.", + "type": "object", + "properties": { + "allowed_clients": { + "description": "allowed_clients defines the list of allowed client state types which can be created\nand interacted with. If a client type is removed from the allowed clients list, usage\nof this client will be disabled until it is added again to the list.", + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "ibc.core.client.v1.QueryClientParamsResponse": { + "description": "QueryClientParamsResponse is the response type for the Query/ClientParams RPC\nmethod.", + "type": "object", + "properties": { + "params": { + "description": "params defines the parameters of the module.", + "$ref": "#/definitions/ibc.core.client.v1.Params" + } + } + }, + "ibc.core.client.v1.QueryClientStateResponse": { + "description": "QueryClientStateResponse is the response type for the Query/ClientState RPC\nmethod. Besides the client state, it includes a proof and the height from\nwhich the proof was retrieved.", + "type": "object", + "properties": { + "client_state": { + "title": "client state associated with the request identifier", + "$ref": "#/definitions/google.protobuf.Any" + }, + "proof": { + "type": "string", + "format": "byte", + "title": "merkle proof of existence" + }, + "proof_height": { + "title": "height at which the proof was retrieved", + "$ref": "#/definitions/ibc.core.client.v1.Height" + } + } + }, + "ibc.core.client.v1.QueryClientStatesResponse": { + "description": "QueryClientStatesResponse is the response type for the Query/ClientStates RPC\nmethod.", + "type": "object", + "properties": { + "client_states": { + "description": "list of stored ClientStates of the chain.", + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/ibc.core.client.v1.IdentifiedClientState" + } + }, + "pagination": { + "title": "pagination response", + "$ref": "#/definitions/cosmos.base.query.v1beta1.PageResponse" + } + } + }, + "ibc.core.client.v1.QueryClientStatusResponse": { + "description": "QueryClientStatusResponse is the response type for the Query/ClientStatus RPC\nmethod. It returns the current status of the IBC client.", + "type": "object", + "properties": { + "status": { + "type": "string" + } + } + }, + "ibc.core.client.v1.QueryConsensusStateHeightsResponse": { + "type": "object", + "title": "QueryConsensusStateHeightsResponse is the response type for the\nQuery/ConsensusStateHeights RPC method", + "properties": { + "consensus_state_heights": { + "type": "array", + "title": "consensus state heights", + "items": { + "type": "object", + "$ref": "#/definitions/ibc.core.client.v1.Height" + } + }, + "pagination": { + "title": "pagination response", + "$ref": "#/definitions/cosmos.base.query.v1beta1.PageResponse" + } + } + }, + "ibc.core.client.v1.QueryConsensusStateResponse": { + "type": "object", + "title": "QueryConsensusStateResponse is the response type for the Query/ConsensusState\nRPC method", + "properties": { + "consensus_state": { + "title": "consensus state associated with the client identifier at the given height", + "$ref": "#/definitions/google.protobuf.Any" + }, + "proof": { + "type": "string", + "format": "byte", + "title": "merkle proof of existence" + }, + "proof_height": { + "title": "height at which the proof was retrieved", + "$ref": "#/definitions/ibc.core.client.v1.Height" + } + } + }, + "ibc.core.client.v1.QueryConsensusStatesResponse": { + "type": "object", + "title": "QueryConsensusStatesResponse is the response type for the\nQuery/ConsensusStates RPC method", + "properties": { + "consensus_states": { + "type": "array", + "title": "consensus states associated with the identifier", + "items": { + "type": "object", + "$ref": "#/definitions/ibc.core.client.v1.ConsensusStateWithHeight" + } + }, + "pagination": { + "title": "pagination response", + "$ref": "#/definitions/cosmos.base.query.v1beta1.PageResponse" + } + } + }, + "ibc.core.client.v1.QueryUpgradedClientStateResponse": { + "description": "QueryUpgradedClientStateResponse is the response type for the\nQuery/UpgradedClientState RPC method.", + "type": "object", + "properties": { + "upgraded_client_state": { + "title": "client state associated with the request identifier", + "$ref": "#/definitions/google.protobuf.Any" + } + } + }, + "ibc.core.client.v1.QueryUpgradedConsensusStateResponse": { + "description": "QueryUpgradedConsensusStateResponse is the response type for the\nQuery/UpgradedConsensusState RPC method.", + "type": "object", + "properties": { + "upgraded_consensus_state": { + "title": "Consensus state associated with the request identifier", + "$ref": "#/definitions/google.protobuf.Any" + } + } + }, + "ibc.core.commitment.v1.MerklePrefix": { + "type": "object", + "title": "MerklePrefix is merkle path prefixed to the key.\nThe constructed key from the Path and the key will be append(Path.KeyPath,\nappend(Path.KeyPrefix, key...))", + "properties": { + "key_prefix": { + "type": "string", + "format": "byte" + } + } + }, + "ibc.core.connection.v1.ConnectionEnd": { + "description": "ConnectionEnd defines a stateful object on a chain connected to another\nseparate one.\nNOTE: there must only be 2 defined ConnectionEnds to establish\na connection between two chains.", + "type": "object", + "properties": { + "client_id": { + "description": "client associated with this connection.", + "type": "string" + }, + "counterparty": { + "description": "counterparty chain associated with this connection.", + "$ref": "#/definitions/ibc.core.connection.v1.Counterparty" + }, + "delay_period": { + "description": "delay period that must pass before a consensus state can be used for\npacket-verification NOTE: delay period logic is only implemented by some\nclients.", + "type": "string", + "format": "uint64" + }, + "state": { + "description": "current state of the connection end.", + "$ref": "#/definitions/ibc.core.connection.v1.State" + }, + "versions": { + "description": "IBC version which can be utilised to determine encodings or protocols for\nchannels or packets utilising this connection.", + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/ibc.core.connection.v1.Version" + } + } + } + }, + "ibc.core.connection.v1.Counterparty": { + "description": "Counterparty defines the counterparty chain associated with a connection end.", + "type": "object", + "properties": { + "client_id": { + "description": "identifies the client on the counterparty chain associated with a given\nconnection.", + "type": "string" + }, + "connection_id": { + "description": "identifies the connection end on the counterparty chain associated with a\ngiven connection.", + "type": "string" + }, + "prefix": { + "description": "commitment merkle prefix of the counterparty chain.", + "$ref": "#/definitions/ibc.core.commitment.v1.MerklePrefix" + } + } + }, + "ibc.core.connection.v1.IdentifiedConnection": { + "description": "IdentifiedConnection defines a connection with additional connection\nidentifier field.", + "type": "object", + "properties": { + "client_id": { + "description": "client associated with this connection.", + "type": "string" + }, + "counterparty": { + "description": "counterparty chain associated with this connection.", + "$ref": "#/definitions/ibc.core.connection.v1.Counterparty" + }, + "delay_period": { + "description": "delay period associated with this connection.", + "type": "string", + "format": "uint64" + }, + "id": { + "description": "connection identifier.", + "type": "string" + }, + "state": { + "description": "current state of the connection end.", + "$ref": "#/definitions/ibc.core.connection.v1.State" + }, + "versions": { + "type": "array", + "title": "IBC version which can be utilised to determine encodings or protocols for\nchannels or packets utilising this connection", + "items": { + "type": "object", + "$ref": "#/definitions/ibc.core.connection.v1.Version" + } + } + } + }, + "ibc.core.connection.v1.MsgConnectionOpenAck": { + "description": "MsgConnectionOpenAck defines a msg sent by a Relayer to Chain A to\nacknowledge the change of connection state to TRYOPEN on Chain B.", + "type": "object", + "properties": { + "client_state": { + "$ref": "#/definitions/google.protobuf.Any" + }, + "connection_id": { + "type": "string" + }, + "consensus_height": { + "$ref": "#/definitions/ibc.core.client.v1.Height" + }, + "counterparty_connection_id": { + "type": "string" + }, + "host_consensus_state_proof": { + "type": "string", + "format": "byte", + "title": "optional proof data for host state machines that are unable to introspect their own consensus state" + }, + "proof_client": { + "type": "string", + "format": "byte", + "title": "proof of client state included in message" + }, + "proof_consensus": { + "type": "string", + "format": "byte", + "title": "proof of client consensus state" + }, + "proof_height": { + "$ref": "#/definitions/ibc.core.client.v1.Height" + }, + "proof_try": { + "type": "string", + "format": "byte", + "title": "proof of the initialization the connection on Chain B: `UNITIALIZED ->\nTRYOPEN`" + }, + "signer": { + "type": "string" + }, + "version": { + "$ref": "#/definitions/ibc.core.connection.v1.Version" + } + } + }, + "ibc.core.connection.v1.MsgConnectionOpenAckResponse": { + "description": "MsgConnectionOpenAckResponse defines the Msg/ConnectionOpenAck response type.", + "type": "object" + }, + "ibc.core.connection.v1.MsgConnectionOpenConfirm": { + "description": "MsgConnectionOpenConfirm defines a msg sent by a Relayer to Chain B to\nacknowledge the change of connection state to OPEN on Chain A.", + "type": "object", + "properties": { + "connection_id": { + "type": "string" + }, + "proof_ack": { + "type": "string", + "format": "byte", + "title": "proof for the change of the connection state on Chain A: `INIT -> OPEN`" + }, + "proof_height": { + "$ref": "#/definitions/ibc.core.client.v1.Height" + }, + "signer": { + "type": "string" + } + } + }, + "ibc.core.connection.v1.MsgConnectionOpenConfirmResponse": { + "description": "MsgConnectionOpenConfirmResponse defines the Msg/ConnectionOpenConfirm\nresponse type.", + "type": "object" + }, + "ibc.core.connection.v1.MsgConnectionOpenInit": { + "description": "MsgConnectionOpenInit defines the msg sent by an account on Chain A to\ninitialize a connection with Chain B.", + "type": "object", + "properties": { + "client_id": { + "type": "string" + }, + "counterparty": { + "$ref": "#/definitions/ibc.core.connection.v1.Counterparty" + }, + "delay_period": { + "type": "string", + "format": "uint64" + }, + "signer": { + "type": "string" + }, + "version": { + "$ref": "#/definitions/ibc.core.connection.v1.Version" + } + } + }, + "ibc.core.connection.v1.MsgConnectionOpenInitResponse": { + "description": "MsgConnectionOpenInitResponse defines the Msg/ConnectionOpenInit response\ntype.", + "type": "object" + }, + "ibc.core.connection.v1.MsgConnectionOpenTry": { + "description": "MsgConnectionOpenTry defines a msg sent by a Relayer to try to open a\nconnection on Chain B.", + "type": "object", + "properties": { + "client_id": { + "type": "string" + }, + "client_state": { + "$ref": "#/definitions/google.protobuf.Any" + }, + "consensus_height": { + "$ref": "#/definitions/ibc.core.client.v1.Height" + }, + "counterparty": { + "$ref": "#/definitions/ibc.core.connection.v1.Counterparty" + }, + "counterparty_versions": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/ibc.core.connection.v1.Version" + } + }, + "delay_period": { + "type": "string", + "format": "uint64" + }, + "host_consensus_state_proof": { + "type": "string", + "format": "byte", + "title": "optional proof data for host state machines that are unable to introspect their own consensus state" + }, + "previous_connection_id": { + "description": "Deprecated: this field is unused. Crossing hellos are no longer supported in core IBC.", + "type": "string" + }, + "proof_client": { + "type": "string", + "format": "byte", + "title": "proof of client state included in message" + }, + "proof_consensus": { + "type": "string", + "format": "byte", + "title": "proof of client consensus state" + }, + "proof_height": { + "$ref": "#/definitions/ibc.core.client.v1.Height" + }, + "proof_init": { + "type": "string", + "format": "byte", + "title": "proof of the initialization the connection on Chain A: `UNITIALIZED ->\nINIT`" + }, + "signer": { + "type": "string" + } + } + }, + "ibc.core.connection.v1.MsgConnectionOpenTryResponse": { + "description": "MsgConnectionOpenTryResponse defines the Msg/ConnectionOpenTry response type.", + "type": "object" + }, + "ibc.core.connection.v1.MsgUpdateParams": { + "description": "MsgUpdateParams defines the sdk.Msg type to update the connection parameters.", + "type": "object", + "properties": { + "params": { + "description": "params defines the connection parameters to update.\n\nNOTE: All parameters must be supplied.", + "$ref": "#/definitions/ibc.core.connection.v1.Params" + }, + "signer": { + "type": "string", + "title": "signer address" + } + } + }, + "ibc.core.connection.v1.MsgUpdateParamsResponse": { + "description": "MsgUpdateParamsResponse defines the MsgUpdateParams response type.", + "type": "object" + }, + "ibc.core.connection.v1.Params": { + "description": "Params defines the set of Connection parameters.", + "type": "object", + "properties": { + "max_expected_time_per_block": { + "description": "maximum expected time per block (in nanoseconds), used to enforce block delay. This parameter should reflect the\nlargest amount of time that the chain might reasonably take to produce the next block under normal operating\nconditions. A safe choice is 3-5x the expected time per block.", + "type": "string", + "format": "uint64" + } + } + }, + "ibc.core.connection.v1.QueryClientConnectionsResponse": { + "type": "object", + "title": "QueryClientConnectionsResponse is the response type for the\nQuery/ClientConnections RPC method", + "properties": { + "connection_paths": { + "description": "slice of all the connection paths associated with a client.", + "type": "array", + "items": { + "type": "string" + } + }, + "proof": { + "type": "string", + "format": "byte", + "title": "merkle proof of existence" + }, + "proof_height": { + "title": "height at which the proof was generated", + "$ref": "#/definitions/ibc.core.client.v1.Height" + } + } + }, + "ibc.core.connection.v1.QueryConnectionClientStateResponse": { + "type": "object", + "title": "QueryConnectionClientStateResponse is the response type for the\nQuery/ConnectionClientState RPC method", + "properties": { + "identified_client_state": { + "title": "client state associated with the channel", + "$ref": "#/definitions/ibc.core.client.v1.IdentifiedClientState" + }, + "proof": { + "type": "string", + "format": "byte", + "title": "merkle proof of existence" + }, + "proof_height": { + "title": "height at which the proof was retrieved", + "$ref": "#/definitions/ibc.core.client.v1.Height" + } + } + }, + "ibc.core.connection.v1.QueryConnectionConsensusStateResponse": { + "type": "object", + "title": "QueryConnectionConsensusStateResponse is the response type for the\nQuery/ConnectionConsensusState RPC method", + "properties": { + "client_id": { + "type": "string", + "title": "client ID associated with the consensus state" + }, + "consensus_state": { + "title": "consensus state associated with the channel", + "$ref": "#/definitions/google.protobuf.Any" + }, + "proof": { + "type": "string", + "format": "byte", + "title": "merkle proof of existence" + }, + "proof_height": { + "title": "height at which the proof was retrieved", + "$ref": "#/definitions/ibc.core.client.v1.Height" + } + } + }, + "ibc.core.connection.v1.QueryConnectionParamsResponse": { + "description": "QueryConnectionParamsResponse is the response type for the Query/ConnectionParams RPC method.", + "type": "object", + "properties": { + "params": { + "description": "params defines the parameters of the module.", + "$ref": "#/definitions/ibc.core.connection.v1.Params" + } + } + }, + "ibc.core.connection.v1.QueryConnectionResponse": { + "description": "QueryConnectionResponse is the response type for the Query/Connection RPC\nmethod. Besides the connection end, it includes a proof and the height from\nwhich the proof was retrieved.", + "type": "object", + "properties": { + "connection": { + "title": "connection associated with the request identifier", + "$ref": "#/definitions/ibc.core.connection.v1.ConnectionEnd" + }, + "proof": { + "type": "string", + "format": "byte", + "title": "merkle proof of existence" + }, + "proof_height": { + "title": "height at which the proof was retrieved", + "$ref": "#/definitions/ibc.core.client.v1.Height" + } + } + }, + "ibc.core.connection.v1.QueryConnectionsResponse": { + "description": "QueryConnectionsResponse is the response type for the Query/Connections RPC\nmethod.", + "type": "object", + "properties": { + "connections": { + "description": "list of stored connections of the chain.", + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/ibc.core.connection.v1.IdentifiedConnection" + } + }, + "height": { + "title": "query block height", + "$ref": "#/definitions/ibc.core.client.v1.Height" + }, + "pagination": { + "title": "pagination response", + "$ref": "#/definitions/cosmos.base.query.v1beta1.PageResponse" + } + } + }, + "ibc.core.connection.v1.State": { + "description": "State defines if a connection is in one of the following states:\nINIT, TRYOPEN, OPEN or UNINITIALIZED.\n\n - STATE_UNINITIALIZED_UNSPECIFIED: Default State\n - STATE_INIT: A connection end has just started the opening handshake.\n - STATE_TRYOPEN: A connection end has acknowledged the handshake step on the counterparty\nchain.\n - STATE_OPEN: A connection end has completed the handshake.", + "type": "string", + "default": "STATE_UNINITIALIZED_UNSPECIFIED", + "enum": [ + "STATE_UNINITIALIZED_UNSPECIFIED", + "STATE_INIT", + "STATE_TRYOPEN", + "STATE_OPEN" + ] + }, + "ibc.core.connection.v1.Version": { + "description": "Version defines the versioning scheme used to negotiate the IBC verison in\nthe connection handshake.", + "type": "object", + "properties": { + "features": { + "type": "array", + "title": "list of features compatible with the specified identifier", + "items": { + "type": "string" + } + }, + "identifier": { + "type": "string", + "title": "unique version identifier" + } + } + }, + "ibc.lightclients.wasm.v1.MsgMigrateContract": { + "description": "MsgMigrateContract defines the request type for the MigrateContract rpc.", + "type": "object", + "properties": { + "checksum": { + "type": "string", + "format": "byte", + "title": "checksum is the sha256 hash of the new wasm byte code for the contract" + }, + "client_id": { + "type": "string", + "title": "the client id of the contract" + }, + "msg": { + "type": "string", + "format": "byte", + "title": "the json encoded message to be passed to the contract on migration" + }, + "signer": { + "type": "string", + "title": "signer address" + } + } + }, + "ibc.lightclients.wasm.v1.MsgMigrateContractResponse": { + "type": "object", + "title": "MsgMigrateContractResponse defines the response type for the MigrateContract rpc" + }, + "ibc.lightclients.wasm.v1.MsgRemoveChecksum": { + "description": "MsgRemoveChecksum defines the request type for the MsgRemoveChecksum rpc.", + "type": "object", + "properties": { + "checksum": { + "type": "string", + "format": "byte", + "title": "checksum is the sha256 hash to be removed from the store" + }, + "signer": { + "type": "string", + "title": "signer address" + } + } + }, + "ibc.lightclients.wasm.v1.MsgRemoveChecksumResponse": { + "type": "object", + "title": "MsgStoreChecksumResponse defines the response type for the StoreCode rpc" + }, + "ibc.lightclients.wasm.v1.MsgStoreCode": { + "description": "MsgStoreCode defines the request type for the StoreCode rpc.", + "type": "object", + "properties": { + "signer": { + "type": "string", + "title": "signer address" + }, + "wasm_byte_code": { + "type": "string", + "format": "byte", + "title": "wasm byte code of light client contract. It can be raw or gzip compressed" + } + } + }, + "ibc.lightclients.wasm.v1.MsgStoreCodeResponse": { + "type": "object", + "title": "MsgStoreCodeResponse defines the response type for the StoreCode rpc", + "properties": { + "checksum": { + "type": "string", + "format": "byte", + "title": "checksum is the sha256 hash of the stored code" + } + } + }, + "ibc.lightclients.wasm.v1.QueryChecksumsResponse": { + "description": "QueryChecksumsResponse is the response type for the Query/Checksums RPC method.", + "type": "object", + "properties": { + "checksums": { + "description": "checksums is a list of the hex encoded checksums of all wasm codes stored.", + "type": "array", + "items": { + "type": "string" + } + }, + "pagination": { + "description": "pagination defines the pagination in the response.", + "$ref": "#/definitions/cosmos.base.query.v1beta1.PageResponse" + } + } + }, + "ibc.lightclients.wasm.v1.QueryCodeResponse": { + "description": "QueryCodeResponse is the response type for the Query/Code RPC method.", + "type": "object", + "properties": { + "data": { + "type": "string", + "format": "byte" + } + } + }, + "poktroll.application.Application": { + "type": "object", + "title": "Application represents the on-chain definition and state of an application", + "properties": { + "address": { + "type": "string", + "title": "Bech32 address of the application" + }, + "delegatee_gateway_addresses": { + "type": "array", + "title": "TODO_BETA(@bryanchriswhite): Rename `delegatee_gateway_addresses` to `gateway_addresses_delegated_to`.\nEnsure to rename all relevant configs, comments, variables, function names, etc as well.\nNon-nullable list of Bech32 encoded delegatee Gateway addresses", + "items": { + "type": "string" + } + }, + "pending_transfer": { + "title": "Information about pending application transfers", + "$ref": "#/definitions/poktroll.application.PendingApplicationTransfer" + }, + "pending_undelegations": { + "description": "Mapping of session end heights to gateways being undelegated from\n- Key: Height of the last block of the session when undelegation tx was committed\n- Value: List of gateways being undelegated from\nTODO_DOCUMENT(@red-0ne): Need to document the flow from this comment\nso its clear to everyone why this is necessary; https://github.com/pokt-network/poktroll/issues/476#issuecomment-2052639906.", + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/poktroll.application.UndelegatingGatewayList" + } + }, + "service_configs": { + "type": "array", + "title": "CRITICAL: Must contain EXACTLY ONE service config\nThis prevents applications from over-servicing.\nKept as repeated field for legacy and future compatibility\nRefs:\n - https://github.com/pokt-network/poktroll/pull/750#discussion_r1735025033\n - https://www.notion.so/buildwithgrove/Off-chain-Application-Stake-Tracking-6a8bebb107db4f7f9dc62cbe7ba555f7", + "items": { + "type": "object", + "$ref": "#/definitions/poktroll.shared.ApplicationServiceConfig" + } + }, + "stake": { + "title": "Total amount of staked uPOKT", + "$ref": "#/definitions/cosmos.base.v1beta1.Coin" + }, + "unstake_session_end_height": { + "type": "string", + "format": "uint64", + "title": "Session end height when application initiated unstaking (0 if not unstaking)" + } + } + }, + "poktroll.application.MsgDelegateToGateway": { + "type": "object", + "properties": { + "app_address": { + "description": "The Bech32 address of the application.", + "type": "string" + }, + "gateway_address": { + "description": "The Bech32 address of the gateway the application wants to delegate to.", + "type": "string" + } + } + }, + "poktroll.application.MsgDelegateToGatewayResponse": { + "type": "object", + "properties": { + "application": { + "$ref": "#/definitions/poktroll.application.Application" + } + } + }, + "poktroll.application.MsgStakeApplication": { + "type": "object", + "properties": { + "address": { + "description": "The Bech32 address of the application.", + "type": "string" + }, + "services": { + "type": "array", + "title": "The list of services this application is staked to request service for", + "items": { + "type": "object", + "$ref": "#/definitions/poktroll.shared.ApplicationServiceConfig" + } + }, + "stake": { + "title": "The total amount of uPOKT the application has staked. Must be ≥ to the current amount that the application has staked (if any)", + "$ref": "#/definitions/cosmos.base.v1beta1.Coin" + } + } + }, + "poktroll.application.MsgStakeApplicationResponse": { + "type": "object", + "properties": { + "application": { + "$ref": "#/definitions/poktroll.application.Application" + } + } + }, + "poktroll.application.MsgTransferApplication": { + "type": "object", + "properties": { + "destination_address": { + "type": "string" + }, + "source_address": { + "type": "string" + } + } + }, + "poktroll.application.MsgTransferApplicationResponse": { + "type": "object", + "properties": { + "application": { + "$ref": "#/definitions/poktroll.application.Application" + } + } + }, + "poktroll.application.MsgUndelegateFromGateway": { + "type": "object", + "properties": { + "app_address": { + "description": "The Bech32 address of the application.", + "type": "string" + }, + "gateway_address": { + "description": "The Bech32 address of the gateway the application wants to undelegate from.", + "type": "string" + } + } + }, + "poktroll.application.MsgUndelegateFromGatewayResponse": { + "type": "object", + "properties": { + "application": { + "$ref": "#/definitions/poktroll.application.Application" + } + } + }, + "poktroll.application.MsgUnstakeApplication": { + "type": "object", + "properties": { + "address": { + "type": "string" + } + } + }, + "poktroll.application.MsgUnstakeApplicationResponse": { + "type": "object", + "properties": { + "application": { + "$ref": "#/definitions/poktroll.application.Application" + } + } + }, + "poktroll.application.MsgUpdateParam": { + "type": "object", + "properties": { + "as_coin": { + "$ref": "#/definitions/cosmos.base.v1beta1.Coin" + }, + "as_uint64": { + "type": "string", + "format": "uint64" + }, + "authority": { + "description": "authority is the address that controls the module (defaults to x/gov unless overwritten).", + "type": "string" + }, + "name": { + "type": "string" + } + } + }, + "poktroll.application.MsgUpdateParamResponse": { + "type": "object", + "properties": { + "params": { + "$ref": "#/definitions/poktroll.application.Params" + } + } + }, + "poktroll.application.MsgUpdateParams": { + "description": "MsgUpdateParams is the Msg/UpdateParams request type.", + "type": "object", + "properties": { + "authority": { + "description": "authority is the address that controls the module (defaults to x/gov unless overwritten).", + "type": "string" + }, + "params": { + "description": "params defines the x/application parameters to update.\nNOTE: All parameters must be supplied.", + "$ref": "#/definitions/poktroll.application.Params" + } + } + }, + "poktroll.application.MsgUpdateParamsResponse": { + "description": "MsgUpdateParamsResponse defines the response structure for executing a\nMsgUpdateParams message.", + "type": "object" + }, + "poktroll.application.Params": { + "description": "Params defines the parameters for the module.", + "type": "object", + "properties": { + "max_delegated_gateways": { + "description": "max_delegated_gateways defines the maximum number of gateways that a single\napplication can delegate to. This is used to prevent performance issues\nin case the relay ring signature becomes too large.", + "type": "string", + "format": "uint64" + }, + "min_stake": { + "description": "min_stake is the minimum stake in upokt that an application must have to remain staked.", + "$ref": "#/definitions/cosmos.base.v1beta1.Coin" + } + } + }, + "poktroll.application.PendingApplicationTransfer": { + "description": "PendingTransfer is used to store the details of a pending transfer.\nIt is only intended to be used inside of an Application object.", + "type": "object", + "properties": { + "destination_address": { + "type": "string" + }, + "session_end_height": { + "type": "string", + "format": "uint64" + } + } + }, + "poktroll.application.QueryAllApplicationsResponse": { + "type": "object", + "properties": { + "applications": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/poktroll.application.Application" + } + }, + "pagination": { + "$ref": "#/definitions/cosmos.base.query.v1beta1.PageResponse" + } + } + }, + "poktroll.application.QueryGetApplicationResponse": { + "type": "object", + "properties": { + "application": { + "$ref": "#/definitions/poktroll.application.Application" + } + } + }, + "poktroll.application.QueryParamsResponse": { + "description": "QueryParamsResponse is response type for the Query/Params RPC method.", + "type": "object", + "properties": { + "params": { + "description": "params holds all the parameters of this module.", + "$ref": "#/definitions/poktroll.application.Params" + } + } + }, + "poktroll.application.UndelegatingGatewayList": { + "description": "UndelegatingGatewayList is used as the Value of `pending_undelegations`.\nIt is required to store a repeated list of strings as a map value.", + "type": "object", + "properties": { + "gateway_addresses": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "poktroll.gateway.Gateway": { + "type": "object", + "properties": { + "address": { + "type": "string", + "title": "The Bech32 address of the gateway" + }, + "stake": { + "title": "The total amount of uPOKT the gateway has staked", + "$ref": "#/definitions/cosmos.base.v1beta1.Coin" + } + } + }, + "poktroll.gateway.MsgStakeGateway": { + "type": "object", + "properties": { + "address": { + "type": "string", + "title": "The Bech32 address of the gateway" + }, + "stake": { + "title": "The total amount of uPOKT the gateway is staking. Must be ≥ to the current amount that the gateway has staked (if any)", + "$ref": "#/definitions/cosmos.base.v1beta1.Coin" + } + } + }, + "poktroll.gateway.MsgStakeGatewayResponse": { + "type": "object", + "properties": { + "gateway": { + "$ref": "#/definitions/poktroll.gateway.Gateway" + } + } + }, + "poktroll.gateway.MsgUnstakeGateway": { + "type": "object", + "properties": { + "address": { + "type": "string", + "title": "The Bech32 address of the gateway" + } + } + }, + "poktroll.gateway.MsgUnstakeGatewayResponse": { + "type": "object", + "properties": { + "gateway": { + "$ref": "#/definitions/poktroll.gateway.Gateway" + } + } + }, + "poktroll.gateway.MsgUpdateParam": { + "description": "MsgUpdateParam is the Msg/UpdateParam request type to update a single param.", + "type": "object", + "properties": { + "as_coin": { + "$ref": "#/definitions/cosmos.base.v1beta1.Coin" + }, + "authority": { + "description": "authority is the address that controls the module (defaults to x/gov unless overwritten).", + "type": "string" + }, + "name": { + "type": "string" + } + } + }, + "poktroll.gateway.MsgUpdateParamResponse": { + "type": "object", + "properties": { + "params": { + "$ref": "#/definitions/poktroll.gateway.Params" + } + } + }, + "poktroll.gateway.MsgUpdateParams": { + "description": "MsgUpdateParams is the Msg/UpdateParams request type.", + "type": "object", + "properties": { + "authority": { + "description": "authority is the address that controls the module (defaults to x/gov unless overwritten).", + "type": "string" + }, + "params": { + "description": "params defines the x/gateway parameters to update.\nNOTE: All parameters must be supplied.", + "$ref": "#/definitions/poktroll.gateway.Params" + } + } + }, + "poktroll.gateway.MsgUpdateParamsResponse": { + "description": "MsgUpdateParamsResponse defines the response structure for executing a\nMsgUpdateParams message.", + "type": "object" + }, + "poktroll.gateway.Params": { + "description": "Params defines the parameters for the module.", + "type": "object", + "properties": { + "min_stake": { + "description": "min_stake is the minimum amount of uPOKT that a gateway must stake.", + "$ref": "#/definitions/cosmos.base.v1beta1.Coin" + } + } + }, + "poktroll.gateway.QueryAllGatewaysResponse": { + "type": "object", + "properties": { + "gateways": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/poktroll.gateway.Gateway" + } + }, + "pagination": { + "$ref": "#/definitions/cosmos.base.query.v1beta1.PageResponse" + } + } + }, + "poktroll.gateway.QueryGetGatewayResponse": { + "type": "object", + "properties": { + "gateway": { + "$ref": "#/definitions/poktroll.gateway.Gateway" + } + } + }, + "poktroll.gateway.QueryParamsResponse": { + "description": "QueryParamsResponse is response type for the Query/Params RPC method.", + "type": "object", + "properties": { + "params": { + "description": "params holds all the parameters of this module.", + "$ref": "#/definitions/poktroll.gateway.Params" + } + } + }, + "poktroll.proof.Claim": { + "type": "object", + "title": "Claim is the serialized object stored onchain for claims pending to be proven", + "properties": { + "proof_validation_status": { + "title": "Important: This field MUST only be set by proofKeeper#EnsureValidProofSignaturesAndClosestPath", + "$ref": "#/definitions/poktroll.proof.ClaimProofStatus" + }, + "root_hash": { + "description": "Root hash from smt.SMST#Root().", + "type": "string", + "format": "byte" + }, + "session_header": { + "description": "Session header this claim is for.", + "$ref": "#/definitions/poktroll.session.SessionHeader" + }, + "supplier_operator_address": { + "description": "Address of the supplier's operator that submitted this claim.\n\nthe address of the supplier's operator that submitted this claim", + "type": "string" + } + } + }, + "poktroll.proof.ClaimProofStatus": { + "type": "string", + "title": "Status of proof validation for a claim\nDefault is PENDING_VALIDATION regardless of proof requirement", + "default": "PENDING_VALIDATION", + "enum": [ + "PENDING_VALIDATION", + "VALIDATED", + "INVALID" + ] + }, + "poktroll.proof.MsgCreateClaim": { + "type": "object", + "properties": { + "root_hash": { + "type": "string", + "format": "byte", + "title": "root returned from smt.SMST#Root()" + }, + "session_header": { + "$ref": "#/definitions/poktroll.session.SessionHeader" + }, + "supplier_operator_address": { + "type": "string" + } + } + }, + "poktroll.proof.MsgCreateClaimResponse": { + "type": "object", + "properties": { + "claim": { + "$ref": "#/definitions/poktroll.proof.Claim" + } + } + }, + "poktroll.proof.MsgSubmitProof": { + "type": "object", + "properties": { + "proof": { + "type": "string", + "format": "byte", + "title": "serialized version of *smt.SparseCompactMerkleClosestProof" + }, + "session_header": { + "$ref": "#/definitions/poktroll.session.SessionHeader" + }, + "supplier_operator_address": { + "type": "string" + } + } + }, + "poktroll.proof.MsgSubmitProofResponse": { + "type": "object", + "properties": { + "proof": { + "$ref": "#/definitions/poktroll.proof.Proof" + } + } + }, + "poktroll.proof.MsgUpdateParam": { + "description": "MsgUpdateParam is the Msg/UpdateParam request type to update a single param.", + "type": "object", + "properties": { + "as_bytes": { + "type": "string", + "format": "byte" + }, + "as_coin": { + "$ref": "#/definitions/cosmos.base.v1beta1.Coin" + }, + "as_float": { + "type": "number", + "format": "double" + }, + "authority": { + "description": "authority is the address that controls the module (defaults to x/gov unless overwritten).", + "type": "string" + }, + "name": { + "type": "string", + "title": "The (name, as_type) tuple must match the corresponding name and type as\nspecified in the `Params`` message in `proof/params.proto.`" + } + } + }, + "poktroll.proof.MsgUpdateParamResponse": { + "description": "MsgUpdateParamResponse defines the response structure for executing a\nMsgUpdateParam message after a single param update.", + "type": "object", + "properties": { + "params": { + "$ref": "#/definitions/poktroll.proof.Params" + } + } + }, + "poktroll.proof.MsgUpdateParams": { + "description": "MsgUpdateParams is the Msg/UpdateParams request type to update all params at once.", + "type": "object", + "properties": { + "authority": { + "description": "authority is the address that controls the module (defaults to x/gov unless overwritten).", + "type": "string" + }, + "params": { + "description": "params defines the x/proof parameters to update.\nNOTE: All parameters must be supplied.", + "$ref": "#/definitions/poktroll.proof.Params" + } + } + }, + "poktroll.proof.MsgUpdateParamsResponse": { + "description": "MsgUpdateParamsResponse defines the response structure for executing a\nMsgUpdateParams message.", + "type": "object" + }, + "poktroll.proof.Params": { + "description": "Params defines the parameters for the module.", + "type": "object", + "properties": { + "proof_missing_penalty": { + "description": "proof_missing_penalty is the number of tokens (uPOKT) which should be slashed from a supplier\nwhen a proof is required (either via proof_requirement_threshold or proof_missing_penalty)\nbut is not provided.\nTODO_MAINNET: Consider renaming this to `proof_missing_penalty_upokt`.", + "$ref": "#/definitions/cosmos.base.v1beta1.Coin" + }, + "proof_request_probability": { + "description": "proof_request_probability is the probability of a session requiring a proof\nif it's cost (i.e. compute unit consumption) is below the ProofRequirementThreshold.", + "type": "number", + "format": "double" + }, + "proof_requirement_threshold": { + "description": "proof_requirement_threshold is the session cost (i.e. compute unit consumption)\nthreshold which asserts that a session MUST have a corresponding proof when its cost\nis equal to or above the threshold. This is in contrast to the this requirement\nbeing determined probabilistically via ProofRequestProbability.\n\nTODO_MAINNET: Consider renaming this to `proof_requirement_threshold_upokt`.", + "$ref": "#/definitions/cosmos.base.v1beta1.Coin" + }, + "proof_submission_fee": { + "description": "proof_submission_fee is the number of tokens (uPOKT) which should be paid by\nthe supplier operator when submitting a proof.\nThis is needed to account for the cost of storing proofs onchain and prevent\nspamming (i.e. sybil bloat attacks) the network with non-required proofs.\nTODO_MAINNET: Consider renaming this to `proof_submission_fee_upokt`.", + "$ref": "#/definitions/cosmos.base.v1beta1.Coin" + } + } + }, + "poktroll.proof.Proof": { + "type": "object", + "properties": { + "closest_merkle_proof": { + "description": "The serialized SMST compacted proof from the `#ClosestProof()` method.", + "type": "string", + "format": "byte" + }, + "session_header": { + "description": "The session header of the session that this claim is for.", + "$ref": "#/definitions/poktroll.session.SessionHeader" + }, + "supplier_operator_address": { + "description": "Address of the supplier's operator that submitted this proof.", + "type": "string" + } + } + }, + "poktroll.proof.QueryAllClaimsResponse": { + "type": "object", + "properties": { + "claims": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/poktroll.proof.Claim" + } + }, + "pagination": { + "$ref": "#/definitions/cosmos.base.query.v1beta1.PageResponse" + } + } + }, + "poktroll.proof.QueryAllProofsResponse": { + "type": "object", + "properties": { + "pagination": { + "$ref": "#/definitions/cosmos.base.query.v1beta1.PageResponse" + }, + "proofs": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/poktroll.proof.Proof" + } + } + } + }, + "poktroll.proof.QueryGetClaimResponse": { + "type": "object", + "properties": { + "claim": { + "$ref": "#/definitions/poktroll.proof.Claim" + } + } + }, + "poktroll.proof.QueryGetProofResponse": { + "type": "object", + "properties": { + "proof": { + "$ref": "#/definitions/poktroll.proof.Proof" + } + } + }, + "poktroll.proof.QueryParamsResponse": { + "description": "QueryParamsResponse is response type for the Query/Params RPC method.", + "type": "object", + "properties": { + "params": { + "description": "params holds all the parameters of this module.", + "$ref": "#/definitions/poktroll.proof.Params" + } + } + }, + "poktroll.service.MsgAddService": { + "description": "MsgAddService defines a message for adding a new message to the network.\nServices can be added by any actor in the network making them truly\npermissionless.", + "type": "object", + "properties": { + "owner_address": { + "description": "The Bech32 address of the service owner.", + "type": "string" + }, + "service": { + "title": "The Service being added to the network", + "$ref": "#/definitions/poktroll.shared.Service" + } + } + }, + "poktroll.service.MsgAddServiceResponse": { + "type": "object", + "properties": { + "service": { + "$ref": "#/definitions/poktroll.shared.Service" + } + } + }, + "poktroll.service.MsgUpdateParam": { + "description": "MsgUpdateParam is the Msg/UpdateParam request type to update a single param.", + "type": "object", + "properties": { + "as_coin": { + "$ref": "#/definitions/cosmos.base.v1beta1.Coin" + }, + "as_uint64": { + "type": "string", + "format": "uint64" + }, + "authority": { + "description": "authority is the address that controls the module (defaults to x/gov unless overwritten).", + "type": "string" + }, + "name": { + "type": "string", + "title": "The (name, as_type) tuple must match the corresponding name and type as\nspecified in the `Params` message in `proof/params.proto.`" + } + } + }, + "poktroll.service.MsgUpdateParamResponse": { + "description": "MsgUpdateParamResponse defines the response structure for executing a\nMsgUpdateParam message after a single param update.", + "type": "object", + "properties": { + "params": { + "$ref": "#/definitions/poktroll.service.Params" + } + } + }, + "poktroll.service.MsgUpdateParams": { + "description": "MsgUpdateParams is the Msg/UpdateParams request type.", + "type": "object", + "properties": { + "authority": { + "description": "authority is the address that controls the module (defaults to x/gov unless overwritten).", + "type": "string" + }, + "params": { + "description": "params defines the x/service parameters to update.\nNOTE: All parameters must be supplied.", + "$ref": "#/definitions/poktroll.service.Params" + } + } + }, + "poktroll.service.MsgUpdateParamsResponse": { + "description": "MsgUpdateParamsResponse defines the response structure for executing a\nMsgUpdateParams message.", + "type": "object" + }, + "poktroll.service.Params": { + "description": "Params defines the parameters for the module.", + "type": "object", + "properties": { + "add_service_fee": { + "description": "The amount of uPOKT required to add a new service.\nThis will be deducted from the signer's account balance,\nand transferred to the pocket network foundation.", + "$ref": "#/definitions/cosmos.base.v1beta1.Coin" + }, + "target_num_relays": { + "description": "target_num_relays is the target for the EMA of the number of relays per session.\nPer service, onchain relay mining difficulty will be adjusted to maintain this target.", + "type": "string", + "format": "uint64" + } + } + }, + "poktroll.service.QueryAllRelayMiningDifficultyResponse": { + "type": "object", + "properties": { + "pagination": { + "$ref": "#/definitions/cosmos.base.query.v1beta1.PageResponse" + }, + "relayMiningDifficulty": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/poktroll.service.RelayMiningDifficulty" + } + } + } + }, + "poktroll.service.QueryAllServicesResponse": { + "type": "object", + "properties": { + "pagination": { + "$ref": "#/definitions/cosmos.base.query.v1beta1.PageResponse" + }, + "service": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/poktroll.shared.Service" + } + } + } + }, + "poktroll.service.QueryGetRelayMiningDifficultyResponse": { + "type": "object", + "properties": { + "relayMiningDifficulty": { + "$ref": "#/definitions/poktroll.service.RelayMiningDifficulty" + } + } + }, + "poktroll.service.QueryGetServiceResponse": { + "type": "object", + "properties": { + "service": { + "$ref": "#/definitions/poktroll.shared.Service" + } + } + }, + "poktroll.service.QueryParamsResponse": { + "description": "QueryParamsResponse is response type for the Query/Params RPC method.", + "type": "object", + "properties": { + "params": { + "description": "params holds all the parameters of this module.", + "$ref": "#/definitions/poktroll.service.Params" + } + } + }, + "poktroll.service.RelayMiningDifficulty": { + "description": "RelayMiningDifficulty is a message used to store the onchain Relay Mining\ndifficulty associated with a specific service ID.\nTODO_TECHDEBT: Embed this message in the Service message.", + "type": "object", + "properties": { + "block_height": { + "description": "The block height at which this relay mining difficulty was computed.\nThis is needed to determine how much time has passed since the last time\nthe exponential moving average was computed.", + "type": "string", + "format": "int64" + }, + "num_relays_ema": { + "description": "The exponential moving average of the number of relays for this service.", + "type": "string", + "format": "uint64" + }, + "service_id": { + "description": "The service ID the relay mining difficulty is associated with.", + "type": "string" + }, + "target_hash": { + "description": "The target hash determining the difficulty to mine relays for this service.\nFor example, if we use sha256 to hash the (RelayRequest,ReqlayResponse) tuple,\nand the difficulty has 4 leading zero bits, then the target hash would be:\n0b0000111... (until 32 bytes are filled up).", + "type": "string", + "format": "byte" + } + } + }, + "poktroll.session.MsgUpdateParam": { + "type": "object", + "properties": { + "as_uint64": { + "type": "string", + "format": "uint64" + }, + "authority": { + "description": "authority is the address that controls the module (defaults to x/gov unless overwritten).", + "type": "string" + }, + "name": { + "type": "string" + } + } + }, + "poktroll.session.MsgUpdateParamResponse": { + "type": "object", + "properties": { + "params": { + "$ref": "#/definitions/poktroll.session.Params" + } + } + }, + "poktroll.session.MsgUpdateParams": { + "description": "MsgUpdateParams is the Msg/UpdateParams request type.", + "type": "object", + "properties": { + "authority": { + "description": "authority is the address that controls the module (defaults to x/gov unless overwritten).", + "type": "string" + }, + "params": { + "description": "params defines the x/session parameters to update.\nNOTE: All parameters must be supplied.", + "$ref": "#/definitions/poktroll.session.Params" + } + } + }, + "poktroll.session.MsgUpdateParamsResponse": { + "description": "MsgUpdateParamsResponse defines the response structure for executing a\nMsgUpdateParams message.", + "type": "object" + }, + "poktroll.session.Params": { + "description": "Params defines the parameters for the module.", + "type": "object", + "properties": { + "num_suppliers_per_session": { + "description": "num_suppliers_per_session is the maximun number of suppliers per session\n(applicaiton:supplier pair for a given session number).", + "type": "string", + "format": "uint64" + } + } + }, + "poktroll.session.QueryGetSessionResponse": { + "type": "object", + "properties": { + "session": { + "$ref": "#/definitions/poktroll.session.Session" + } + } + }, + "poktroll.session.QueryParamsResponse": { + "description": "QueryParamsResponse is response type for the Query/Params RPC method.", + "type": "object", + "properties": { + "params": { + "description": "params holds all the parameters of this module.", + "$ref": "#/definitions/poktroll.session.Params" + } + } + }, + "poktroll.session.Session": { + "description": "Session is a fully hydrated session object that contains all the information for the Session\nand its parcipants.", + "type": "object", + "properties": { + "application": { + "title": "A fully hydrated application object this session is for", + "$ref": "#/definitions/poktroll.application.Application" + }, + "header": { + "title": "The header of the session containing lightweight data", + "$ref": "#/definitions/poktroll.session.SessionHeader" + }, + "num_blocks_per_session": { + "type": "string", + "format": "int64", + "title": "The number of blocks per session when this session started" + }, + "session_id": { + "type": "string", + "title": "A unique pseudoranom ID for this session" + }, + "session_number": { + "type": "string", + "format": "int64", + "title": "The session number since genesis" + }, + "suppliers": { + "type": "array", + "title": "A fully hydrated set of servicers that are serving the application", + "items": { + "type": "object", + "$ref": "#/definitions/poktroll.shared.Supplier" + } + } + } + }, + "poktroll.session.SessionHeader": { + "description": "SessionHeader is a lightweight header for a session that can be passed around.\nIt is the minimal amount of data required to hydrate & retrieve all data relevant to the session.", + "type": "object", + "properties": { + "application_address": { + "description": "The Bech32 address of the application.", + "type": "string" + }, + "service_id": { + "type": "string", + "title": "The service id this session is for" + }, + "session_end_block_height": { + "description": "Note that`session_end_block_height` is a derivative of (`start` + `num_blocks_per_session`)\nas goverened by onchain params at the time of the session start.\nIt is stored as an additional field to simplofy business logic in case\nthe number of blocks_per_session changes during the session.\n\nThe height at which this session ended, this is the last block of the session", + "type": "string", + "format": "int64" + }, + "session_id": { + "description": "A unique pseudoranom ID for this session", + "type": "string", + "title": "NOTE: session_id can be derived from the above values using onchain but is included in the header for convenience" + }, + "session_start_block_height": { + "type": "string", + "format": "int64", + "title": "The height at which this session started" + } + } + }, + "poktroll.shared.ApplicationServiceConfig": { + "type": "object", + "title": "ApplicationServiceConfig holds the service configuration the application stakes for", + "properties": { + "service_id": { + "type": "string", + "title": "The Service ID for which the application is configured" + } + } + }, + "poktroll.shared.ConfigOption": { + "type": "object", + "title": "Key-value wrapper for config options, as proto maps can't be keyed by enums", + "properties": { + "key": { + "title": "Config option key", + "$ref": "#/definitions/poktroll.shared.ConfigOptions" + }, + "value": { + "type": "string", + "title": "Config option value" + } + } + }, + "poktroll.shared.ConfigOptions": { + "description": "Enum to define configuration options\nTODO_RESEARCH: Should these be configs, SLAs or something else? There will be more discussion once we get closer to implementing onchain QoS.\n\n - UNKNOWN_CONFIG: Undefined config option\n - TIMEOUT: Timeout setting", + "type": "string", + "default": "UNKNOWN_CONFIG", + "enum": [ + "UNKNOWN_CONFIG", + "TIMEOUT" + ] + }, + "poktroll.shared.MsgUpdateParam": { + "description": "MsgUpdateParam is the Msg/UpdateParam request type to update a single param.", + "type": "object", + "properties": { + "as_bytes": { + "type": "string", + "format": "byte" + }, + "as_string": { + "type": "string" + }, + "as_uint64": { + "type": "string", + "format": "uint64" + }, + "authority": { + "description": "authority is the address that controls the module (defaults to x/gov unless overwritten).", + "type": "string" + }, + "name": { + "type": "string" + } + } + }, + "poktroll.shared.MsgUpdateParamResponse": { + "description": "MsgUpdateParamResponse defines the response structure for executing a\nMsgUpdateParam message after a single param update.", + "type": "object", + "properties": { + "params": { + "$ref": "#/definitions/poktroll.shared.Params" + } + } + }, + "poktroll.shared.MsgUpdateParams": { + "description": "MsgUpdateParams is the Msg/UpdateParams request type.", + "type": "object", + "properties": { + "authority": { + "description": "authority is the address that controls the module (defaults to x/gov unless overwritten).", + "type": "string" + }, + "params": { + "description": "NOTE: All parameters must be supplied.", + "$ref": "#/definitions/poktroll.shared.Params" + } + } + }, + "poktroll.shared.MsgUpdateParamsResponse": { + "description": "MsgUpdateParamsResponse defines the response structure for executing a\nMsgUpdateParams message.", + "type": "object" + }, + "poktroll.shared.Params": { + "description": "Params defines the parameters for the module.", + "type": "object", + "properties": { + "application_unbonding_period_sessions": { + "description": "application_unbonding_period_sessions is the number of sessions that an application must wait after\nunstaking before their staked assets are moved to their account balance.\nOnchain business logic requires, and ensures, that the corresponding block count of the\napplication unbonding period will exceed the end of its corresponding proof window close height.", + "type": "string", + "format": "uint64" + }, + "claim_window_close_offset_blocks": { + "description": "claim_window_close_offset_blocks is the number of blocks after the claim window\nopen height, at which the claim window closes.", + "type": "string", + "format": "uint64" + }, + "claim_window_open_offset_blocks": { + "description": "claim_window_open_offset_blocks is the number of blocks after the session grace\nperiod height, at which the claim window opens.", + "type": "string", + "format": "uint64" + }, + "compute_units_to_tokens_multiplier": { + "description": "The amount of upokt that a compute unit should translate to when settling a session.\nDEV_NOTE: This used to be under x/tokenomics but has been moved here to avoid cyclic dependencies.", + "type": "string", + "format": "uint64" + }, + "grace_period_end_offset_blocks": { + "description": "grace_period_end_offset_blocks is the number of blocks, after the session end height,\nduring which the supplier can still service payable relays.\nSuppliers will need to recreate a claim for the previous session (if already created) to\nget paid for the additional relays.", + "type": "string", + "format": "uint64" + }, + "num_blocks_per_session": { + "description": "num_blocks_per_session is the number of blocks between the session start & end heights.", + "type": "string", + "format": "uint64" + }, + "proof_window_close_offset_blocks": { + "description": "proof_window_close_offset_blocks is the number of blocks after the proof window\nopen height, at which the proof window closes.", + "type": "string", + "format": "uint64" + }, + "proof_window_open_offset_blocks": { + "description": "proof_window_open_offset_blocks is the number of blocks after the claim window\nclose height, at which the proof window opens.", + "type": "string", + "format": "uint64" + }, + "supplier_unbonding_period_sessions": { + "description": "supplier_unbonding_period_sessions is the number of sessions that a supplier must wait after\nunstaking before their staked assets are moved to their account balance.\nOnchain business logic requires, and ensures, that the corresponding block count of the unbonding\nperiod will exceed the end of any active claim & proof lifecycles.", + "type": "string", + "format": "uint64" + } + } + }, + "poktroll.shared.QueryParamsResponse": { + "description": "QueryParamsResponse is response type for the Query/Params RPC method.", + "type": "object", + "properties": { + "params": { + "description": "params holds all the parameters of this module.", + "$ref": "#/definitions/poktroll.shared.Params" + } + } + }, + "poktroll.shared.RPCType": { + "description": "- UNKNOWN_RPC: Undefined RPC type\n - GRPC: gRPC\n - WEBSOCKET: WebSocket\n - JSON_RPC: JSON-RPC\n - REST: REST", + "type": "string", + "title": "Enum to define RPC types", + "default": "UNKNOWN_RPC", + "enum": [ + "UNKNOWN_RPC", + "GRPC", + "WEBSOCKET", + "JSON_RPC", + "REST" + ] + }, + "poktroll.shared.Service": { + "type": "object", + "title": "Service message to encapsulate unique and semantic identifiers for a service on the network", + "properties": { + "compute_units_per_relay": { + "description": "Compute units required per relay for this service", + "type": "string", + "format": "uint64", + "title": "The cost of a single relay for this service in terms of compute units.\nMust be used alongside the global 'compute_units_to_tokens_multipler' to calculate the cost of a relay for this service.\ncost_per_relay_for_specific_service = compute_units_per_relay_for_specific_service * compute_units_to_tokens_multipler_global_value" + }, + "id": { + "description": "Unique identifier for the service", + "type": "string", + "title": "For example, what if we want to request a session for a certain service but with some additional configs that identify it?" + }, + "name": { + "description": "TODO_BETA(@bryanchriswhite): Either remove this or rename it to alias.\n\n(Optional) Semantic human readable name for the service", + "type": "string" + }, + "owner_address": { + "description": "The owner address that created the service.\nIt is the address that receives rewards based on the Service's onchain usage\nIt is the only address that can update the service configuration (e.g. compute_units_per_relay),\nor make other updates to it.\n\nThe Bech32 address of the service owner / creator", + "type": "string" + } + } + }, + "poktroll.shared.ServiceRevenueShare": { + "type": "object", + "title": "ServiceRevenueShare message to hold revenue share configuration details", + "properties": { + "address": { + "type": "string", + "title": "The Bech32 address of the revenue share recipient" + }, + "rev_share_percentage": { + "type": "string", + "format": "uint64", + "title": "The percentage of revenue share the recipient will receive" + } + } + }, + "poktroll.shared.Supplier": { + "type": "object", + "title": "Supplier represents an actor in Pocket Network that provides RPC services", + "properties": { + "operator_address": { + "description": "Operator address managing the offchain server\nImmutable for supplier's lifespan - requires unstake/re-stake to change.\nCan update supplier configs except for owner address.", + "type": "string" + }, + "owner_address": { + "type": "string", + "title": "Owner address that controls the staked funds and receives rewards by default\nCannot be updated by the operator" + }, + "services": { + "type": "array", + "title": "List of service configurations supported by this supplier", + "items": { + "type": "object", + "$ref": "#/definitions/poktroll.shared.SupplierServiceConfig" + } + }, + "services_activation_heights_map": { + "description": "Mapping of serviceIds to their activation heights\n- Key: serviceId\n- Value: Session start height when supplier becomes active for the service\nTODO_MAINNET(@olshansk, #1033): Look into moving this to an external repeated protobuf\nbecause maps are no longer supported for serialized types in the CosmoSDK.", + "type": "object", + "additionalProperties": { + "type": "string", + "format": "uint64" + } + }, + "stake": { + "title": "Total amount of staked uPOKT", + "$ref": "#/definitions/cosmos.base.v1beta1.Coin" + }, + "unstake_session_end_height": { + "type": "string", + "format": "uint64", + "title": "Session end height when supplier initiated unstaking (0 if not unstaking)" + } + } + }, + "poktroll.shared.SupplierEndpoint": { + "type": "object", + "title": "SupplierEndpoint message to hold service configuration details", + "properties": { + "configs": { + "type": "array", + "title": "Additional configuration options for the endpoint", + "items": { + "type": "object", + "$ref": "#/definitions/poktroll.shared.ConfigOption" + } + }, + "rpc_type": { + "title": "Type of RPC exposed on the url above", + "$ref": "#/definitions/poktroll.shared.RPCType" + }, + "url": { + "type": "string", + "title": "URL of the endpoint" + } + } + }, + "poktroll.shared.SupplierServiceConfig": { + "type": "object", + "title": "SupplierServiceConfig holds the service configuration the supplier stakes for", + "properties": { + "endpoints": { + "type": "array", + "title": "List of endpoints for the service", + "items": { + "type": "object", + "$ref": "#/definitions/poktroll.shared.SupplierEndpoint" + } + }, + "rev_share": { + "type": "array", + "title": "List of revenue share configurations for the service", + "items": { + "type": "object", + "$ref": "#/definitions/poktroll.shared.ServiceRevenueShare" + } + }, + "service_id": { + "type": "string", + "title": "The Service ID for which the supplier is configured" + } + } + }, + "poktroll.supplier.MsgStakeSupplier": { + "type": "object", + "properties": { + "operator_address": { + "type": "string", + "title": "The Bech32 address of the operator (i.e. provider, non-custodial)" + }, + "owner_address": { + "type": "string", + "title": "The Bech32 address of the owner (i.e. custodial, staker)" + }, + "services": { + "type": "array", + "title": "The list of services this supplier is staked to provide service for", + "items": { + "type": "object", + "$ref": "#/definitions/poktroll.shared.SupplierServiceConfig" + } + }, + "signer": { + "type": "string", + "title": "The Bech32 address of the message signer (i.e. owner or operator)" + }, + "stake": { + "title": "The total amount of uPOKT the supplier has staked. Must be ≥ to the current amount that the supplier has staked (if any)", + "$ref": "#/definitions/cosmos.base.v1beta1.Coin" + } + } + }, + "poktroll.supplier.MsgStakeSupplierResponse": { + "type": "object", + "properties": { + "supplier": { + "$ref": "#/definitions/poktroll.shared.Supplier" + } + } + }, + "poktroll.supplier.MsgUnstakeSupplier": { + "type": "object", + "properties": { + "operator_address": { + "type": "string", + "title": "The Bech32 address of the operator (i.e. provider, non-custodial)" + }, + "signer": { + "type": "string", + "title": "The Bech32 address of the message signer (i.e. owner or operator)" + } + } + }, + "poktroll.supplier.MsgUnstakeSupplierResponse": { + "type": "object", + "properties": { + "supplier": { + "$ref": "#/definitions/poktroll.shared.Supplier" + } + } + }, + "poktroll.supplier.MsgUpdateParam": { + "description": "MsgUpdateParam is the Msg/UpdateParam request type to update a single param.", + "type": "object", + "properties": { + "as_coin": { + "$ref": "#/definitions/cosmos.base.v1beta1.Coin" + }, + "authority": { + "description": "authority is the address that controls the module (defaults to x/gov unless overwritten).", + "type": "string" + }, + "name": { + "type": "string" + } + } + }, + "poktroll.supplier.MsgUpdateParamResponse": { + "type": "object", + "properties": { + "params": { + "$ref": "#/definitions/poktroll.supplier.Params" + } + } + }, + "poktroll.supplier.MsgUpdateParams": { + "description": "MsgUpdateParams is the Msg/UpdateParams request type.", + "type": "object", + "properties": { + "authority": { + "description": "authority is the address that controls the module (defaults to x/gov unless overwritten).", + "type": "string" + }, + "params": { + "description": "params defines the x/supplier parameters to update.\nNOTE: All parameters must be supplied.", + "$ref": "#/definitions/poktroll.supplier.Params" + } + } + }, + "poktroll.supplier.MsgUpdateParamsResponse": { + "description": "MsgUpdateParamsResponse defines the response structure for executing a\nMsgUpdateParams message.", + "type": "object" + }, + "poktroll.supplier.Params": { + "description": "Params defines the parameters for the module.", + "type": "object", + "properties": { + "min_stake": { + "description": "min_stake is the minimum amount of uPOKT that a supplier must stake to be\nincluded in network sessions and remain staked.", + "$ref": "#/definitions/cosmos.base.v1beta1.Coin" + }, + "staking_fee": { + "description": "staking_fee is the fee charged by the protocol for staking a supplier.", + "$ref": "#/definitions/cosmos.base.v1beta1.Coin" + } + } + }, + "poktroll.supplier.QueryAllSuppliersResponse": { + "type": "object", + "properties": { + "pagination": { + "$ref": "#/definitions/cosmos.base.query.v1beta1.PageResponse" + }, + "supplier": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/poktroll.shared.Supplier" + } + } + } + }, + "poktroll.supplier.QueryGetSupplierResponse": { + "type": "object", + "properties": { + "supplier": { + "$ref": "#/definitions/poktroll.shared.Supplier" + } + } + }, + "poktroll.supplier.QueryParamsResponse": { + "description": "QueryParamsResponse is response type for the Query/Params RPC method.", + "type": "object", + "properties": { + "params": { + "description": "params holds all the parameters of this module.", + "$ref": "#/definitions/poktroll.supplier.Params" + } + } + }, + "poktroll.tokenomics.MintAllocationPercentages": { + "description": "MintAllocationPercentages represents the distribution of newly minted tokens,\nat the end of claim settlement, as a result of the Global Mint TLM.", + "type": "object", + "properties": { + "application": { + "description": "allocation_application is the percentage of the minted tokens which are sent\nto the application account address during claim settlement.", + "type": "number", + "format": "double" + }, + "dao": { + "description": "dao is the percentage of the minted tokens which are sent\nto the DAO reward address during claim settlement.", + "type": "number", + "format": "double" + }, + "proposer": { + "description": "proposer is the percentage of the minted tokens which are sent\nto the block proposer account address during claim settlement.", + "type": "number", + "format": "double" + }, + "source_owner": { + "description": "source_owner is the percentage of the minted tokens which are sent\nto the service source owner account address during claim settlement.", + "type": "number", + "format": "double" + }, + "supplier": { + "description": "supplier is the percentage of the minted tokens which are sent\nto the block supplier account address during claim settlement.", + "type": "number", + "format": "double" + } + } + }, + "poktroll.tokenomics.MsgUpdateParam": { + "description": "MsgUpdateParam is the Msg/UpdateParam request type to update a single param.", + "type": "object", + "properties": { + "as_float": { + "type": "number", + "format": "double" + }, + "as_mint_allocation_percentages": { + "$ref": "#/definitions/poktroll.tokenomics.MintAllocationPercentages" + }, + "as_string": { + "type": "string" + }, + "authority": { + "description": "authority is the address that controls the module (defaults to x/gov unless overwritten).", + "type": "string" + }, + "name": { + "type": "string", + "title": "The (name, as_type) tuple must match the corresponding name and type as\nspecified in the `Params` message in `proof/params.proto.`" + } + } + }, + "poktroll.tokenomics.MsgUpdateParamResponse": { + "description": "MsgUpdateParamResponse defines the response structure for executing a\nMsgUpdateParam message after a single param update.", + "type": "object", + "properties": { + "params": { + "$ref": "#/definitions/poktroll.tokenomics.Params" + } + } + }, + "poktroll.tokenomics.MsgUpdateParams": { + "description": "MsgUpdateParams is the Msg/UpdateParams request type to update all params at once.", + "type": "object", + "properties": { + "authority": { + "description": "authority is the address that controls the module (defaults to x/gov unless overwritten).", + "type": "string" + }, + "params": { + "description": "params defines the x/tokenomics parameters to update.\nNOTE: All parameters must be supplied.", + "$ref": "#/definitions/poktroll.tokenomics.Params" + } + } + }, + "poktroll.tokenomics.MsgUpdateParamsResponse": { + "description": "MsgUpdateParamsResponse defines the response structure for executing a\nMsgUpdateParams message.", + "type": "object", + "properties": { + "params": { + "$ref": "#/definitions/poktroll.tokenomics.Params" + } + } + }, + "poktroll.tokenomics.Params": { + "description": "Params defines the parameters for the tokenomics module.", + "type": "object", + "properties": { + "dao_reward_address": { + "description": "dao_reward_address is the address to which mint_allocation_dao percentage of the\nminted tokens are at the end of claim settlement.\n\nBech32 cosmos address", + "type": "string" + }, + "global_inflation_per_claim": { + "description": "global_inflation_per_claim is the percentage of a claim's claimable uPOKT amount which will be minted on settlement.", + "type": "number", + "format": "double" + }, + "mint_allocation_percentages": { + "description": "mint_allocation_percentages represents the distribution of newly minted tokens,\nat the end of claim settlement, as a result of the Global Mint TLM.", + "$ref": "#/definitions/poktroll.tokenomics.MintAllocationPercentages" + } + } + }, + "poktroll.tokenomics.QueryParamsResponse": { + "description": "QueryParamsResponse is response type for the Query/Params RPC method.", + "type": "object", + "properties": { + "params": { + "description": "params holds all the parameters of this module.", + "$ref": "#/definitions/poktroll.tokenomics.Params" + } + } + }, + "tendermint.abci.CheckTxType": { + "type": "string", + "default": "NEW", + "enum": [ + "NEW", + "RECHECK" + ] + }, + "tendermint.abci.CommitInfo": { + "type": "object", + "properties": { + "round": { + "type": "integer", + "format": "int32" + }, + "votes": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/tendermint.abci.VoteInfo" + } + } + } + }, + "tendermint.abci.Event": { + "description": "Event allows application developers to attach additional information to\nResponseFinalizeBlock and ResponseCheckTx.\nLater, transactions may be queried using these events.", + "type": "object", + "properties": { + "attributes": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/tendermint.abci.EventAttribute" + } + }, + "type": { + "type": "string" + } + } + }, + "tendermint.abci.EventAttribute": { + "description": "EventAttribute is a single key-value pair, associated with an event.", + "type": "object", + "properties": { + "index": { + "type": "boolean", + "title": "nondeterministic" + }, + "key": { + "type": "string" + }, + "value": { + "type": "string" + } + } + }, + "tendermint.abci.ExecTxResult": { + "description": "ExecTxResult contains results of executing one individual transaction.\n\n* Its structure is equivalent to #ResponseDeliverTx which will be deprecated/deleted", + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "codespace": { + "type": "string" + }, + "data": { + "type": "string", + "format": "byte" + }, + "events": { + "type": "array", + "title": "nondeterministic", + "items": { + "type": "object", + "$ref": "#/definitions/tendermint.abci.Event" + } + }, + "gas_used": { + "type": "string", + "format": "int64" + }, + "gas_wanted": { + "type": "string", + "format": "int64" + }, + "info": { + "type": "string", + "title": "nondeterministic" + }, + "log": { + "type": "string", + "title": "nondeterministic" + } + } + }, + "tendermint.abci.ExtendedCommitInfo": { + "description": "ExtendedCommitInfo is similar to CommitInfo except that it is only used in\nthe PrepareProposal request such that CometBFT can provide vote extensions\nto the application.", + "type": "object", + "properties": { + "round": { + "description": "The round at which the block proposer decided in the previous height.", + "type": "integer", + "format": "int32" + }, + "votes": { + "description": "List of validators' addresses in the last validator set with their voting\ninformation, including vote extensions.", + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/tendermint.abci.ExtendedVoteInfo" + } + } + } + }, + "tendermint.abci.ExtendedVoteInfo": { + "type": "object", + "properties": { + "block_id_flag": { + "title": "block_id_flag indicates whether the validator voted for a block, nil, or did not vote at all", + "$ref": "#/definitions/tendermint.types.BlockIDFlag" + }, + "extension_signature": { + "type": "string", + "format": "byte", + "title": "Vote extension signature created by CometBFT" + }, + "validator": { + "description": "The validator that sent the vote.", + "$ref": "#/definitions/tendermint.abci.Validator" + }, + "vote_extension": { + "description": "Non-deterministic extension provided by the sending validator's application.", + "type": "string", + "format": "byte" + } + } + }, + "tendermint.abci.Misbehavior": { + "type": "object", + "properties": { + "height": { + "type": "string", + "format": "int64", + "title": "The height when the offense occurred" + }, + "time": { + "type": "string", + "format": "date-time", + "title": "The corresponding time where the offense occurred" + }, + "total_voting_power": { + "type": "string", + "format": "int64", + "title": "Total voting power of the validator set in case the ABCI application does\nnot store historical validators.\nhttps://github.com/tendermint/tendermint/issues/4581" + }, + "type": { + "$ref": "#/definitions/tendermint.abci.MisbehaviorType" + }, + "validator": { + "title": "The offending validator", + "$ref": "#/definitions/tendermint.abci.Validator" + } + } + }, + "tendermint.abci.MisbehaviorType": { + "type": "string", + "default": "UNKNOWN", + "enum": [ + "UNKNOWN", + "DUPLICATE_VOTE", + "LIGHT_CLIENT_ATTACK" + ] + }, + "tendermint.abci.RequestApplySnapshotChunk": { + "type": "object", + "title": "Applies a snapshot chunk", + "properties": { + "chunk": { + "type": "string", + "format": "byte" + }, + "index": { + "type": "integer", + "format": "int64" + }, + "sender": { + "type": "string" + } + } + }, + "tendermint.abci.RequestCheckTx": { + "type": "object", + "properties": { + "tx": { + "type": "string", + "format": "byte" + }, + "type": { + "$ref": "#/definitions/tendermint.abci.CheckTxType" + } + } + }, + "tendermint.abci.RequestCommit": { + "type": "object" + }, + "tendermint.abci.RequestEcho": { + "type": "object", + "properties": { + "message": { + "type": "string" + } + } + }, + "tendermint.abci.RequestExtendVote": { + "type": "object", + "title": "Extends a vote with application-injected data", + "properties": { + "hash": { + "type": "string", + "format": "byte", + "title": "the hash of the block that this vote may be referring to" + }, + "height": { + "type": "string", + "format": "int64", + "title": "the height of the extended vote" + }, + "misbehavior": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/tendermint.abci.Misbehavior" + } + }, + "next_validators_hash": { + "type": "string", + "format": "byte" + }, + "proposed_last_commit": { + "$ref": "#/definitions/tendermint.abci.CommitInfo" + }, + "proposer_address": { + "description": "address of the public key of the original proposer of the block.", + "type": "string", + "format": "byte" + }, + "time": { + "type": "string", + "format": "date-time", + "title": "info of the block that this vote may be referring to" + }, + "txs": { + "type": "array", + "items": { + "type": "string", + "format": "byte" + } + } + } + }, + "tendermint.abci.RequestFinalizeBlock": { + "type": "object", + "properties": { + "decided_last_commit": { + "$ref": "#/definitions/tendermint.abci.CommitInfo" + }, + "hash": { + "description": "hash is the merkle root hash of the fields of the decided block.", + "type": "string", + "format": "byte" + }, + "height": { + "type": "string", + "format": "int64" + }, + "misbehavior": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/tendermint.abci.Misbehavior" + } + }, + "next_validators_hash": { + "type": "string", + "format": "byte" + }, + "proposer_address": { + "description": "proposer_address is the address of the public key of the original proposer of the block.", + "type": "string", + "format": "byte" + }, + "time": { + "type": "string", + "format": "date-time" + }, + "txs": { + "type": "array", + "items": { + "type": "string", + "format": "byte" + } + } + } + }, + "tendermint.abci.RequestFlush": { + "type": "object" + }, + "tendermint.abci.RequestInfo": { + "type": "object", + "properties": { + "abci_version": { + "type": "string" + }, + "block_version": { + "type": "string", + "format": "uint64" + }, + "p2p_version": { + "type": "string", + "format": "uint64" + }, + "version": { + "type": "string" + } + } + }, + "tendermint.abci.RequestInitChain": { + "type": "object", + "properties": { + "app_state_bytes": { + "type": "string", + "format": "byte" + }, + "chain_id": { + "type": "string" + }, + "consensus_params": { + "$ref": "#/definitions/tendermint.types.ConsensusParams" + }, + "initial_height": { + "type": "string", + "format": "int64" + }, + "time": { + "type": "string", + "format": "date-time" + }, + "validators": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/tendermint.abci.ValidatorUpdate" + } + } + } + }, + "tendermint.abci.RequestListSnapshots": { + "type": "object", + "title": "lists available snapshots" + }, + "tendermint.abci.RequestLoadSnapshotChunk": { + "type": "object", + "title": "loads a snapshot chunk", + "properties": { + "chunk": { + "type": "integer", + "format": "int64" + }, + "format": { + "type": "integer", + "format": "int64" + }, + "height": { + "type": "string", + "format": "uint64" + } + } + }, + "tendermint.abci.RequestOfferSnapshot": { + "type": "object", + "title": "offers a snapshot to the application", + "properties": { + "app_hash": { + "type": "string", + "format": "byte", + "title": "light client-verified app hash for snapshot height" + }, + "snapshot": { + "title": "snapshot offered by peers", + "$ref": "#/definitions/tendermint.abci.Snapshot" + } + } + }, + "tendermint.abci.RequestPrepareProposal": { + "type": "object", + "properties": { + "height": { + "type": "string", + "format": "int64" + }, + "local_last_commit": { + "$ref": "#/definitions/tendermint.abci.ExtendedCommitInfo" + }, + "max_tx_bytes": { + "description": "the modified transactions cannot exceed this size.", + "type": "string", + "format": "int64" + }, + "misbehavior": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/tendermint.abci.Misbehavior" + } + }, + "next_validators_hash": { + "type": "string", + "format": "byte" + }, + "proposer_address": { + "description": "address of the public key of the validator proposing the block.", + "type": "string", + "format": "byte" + }, + "time": { + "type": "string", + "format": "date-time" + }, + "txs": { + "description": "txs is an array of transactions that will be included in a block,\nsent to the app for possible modifications.", + "type": "array", + "items": { + "type": "string", + "format": "byte" + } + } + } + }, + "tendermint.abci.RequestProcessProposal": { + "type": "object", + "properties": { + "hash": { + "description": "hash is the merkle root hash of the fields of the proposed block.", + "type": "string", + "format": "byte" + }, + "height": { + "type": "string", + "format": "int64" + }, + "misbehavior": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/tendermint.abci.Misbehavior" + } + }, + "next_validators_hash": { + "type": "string", + "format": "byte" + }, + "proposed_last_commit": { + "$ref": "#/definitions/tendermint.abci.CommitInfo" + }, + "proposer_address": { + "description": "address of the public key of the original proposer of the block.", + "type": "string", + "format": "byte" + }, + "time": { + "type": "string", + "format": "date-time" + }, + "txs": { + "type": "array", + "items": { + "type": "string", + "format": "byte" + } + } + } + }, + "tendermint.abci.RequestQuery": { + "type": "object", + "properties": { + "data": { + "type": "string", + "format": "byte" + }, + "height": { + "type": "string", + "format": "int64" + }, + "path": { + "type": "string" + }, + "prove": { + "type": "boolean" + } + } + }, + "tendermint.abci.RequestVerifyVoteExtension": { + "type": "object", + "title": "Verify the vote extension", + "properties": { + "hash": { + "type": "string", + "format": "byte", + "title": "the hash of the block that this received vote corresponds to" + }, + "height": { + "type": "string", + "format": "int64" + }, + "validator_address": { + "type": "string", + "format": "byte", + "title": "the validator that signed the vote extension" + }, + "vote_extension": { + "type": "string", + "format": "byte" + } + } + }, + "tendermint.abci.ResponseApplySnapshotChunk": { + "type": "object", + "properties": { + "refetch_chunks": { + "type": "array", + "title": "Chunks to refetch and reapply", + "items": { + "type": "integer", + "format": "int64" + } + }, + "reject_senders": { + "type": "array", + "title": "Chunk senders to reject and ban", + "items": { + "type": "string" + } + }, + "result": { + "$ref": "#/definitions/tendermint.abci.ResponseApplySnapshotChunk.Result" + } + } + }, + "tendermint.abci.ResponseApplySnapshotChunk.Result": { + "type": "string", + "title": "- UNKNOWN: Unknown result, abort all snapshot restoration\n - ACCEPT: Chunk successfully accepted\n - ABORT: Abort all snapshot restoration\n - RETRY: Retry chunk (combine with refetch and reject)\n - RETRY_SNAPSHOT: Retry snapshot (combine with refetch and reject)\n - REJECT_SNAPSHOT: Reject this snapshot, try others", + "default": "UNKNOWN", + "enum": [ + "UNKNOWN", + "ACCEPT", + "ABORT", + "RETRY", + "RETRY_SNAPSHOT", + "REJECT_SNAPSHOT" + ] + }, + "tendermint.abci.ResponseCheckTx": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "codespace": { + "type": "string" + }, + "data": { + "type": "string", + "format": "byte" + }, + "events": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/tendermint.abci.Event" + } + }, + "gas_used": { + "type": "string", + "format": "int64" + }, + "gas_wanted": { + "type": "string", + "format": "int64" + }, + "info": { + "type": "string", + "title": "nondeterministic" + }, + "log": { + "type": "string", + "title": "nondeterministic" + } + } + }, + "tendermint.abci.ResponseCommit": { + "type": "object", + "properties": { + "retain_height": { + "type": "string", + "format": "int64" + } + } + }, + "tendermint.abci.ResponseEcho": { + "type": "object", + "properties": { + "message": { + "type": "string" + } + } + }, + "tendermint.abci.ResponseExtendVote": { + "type": "object", + "properties": { + "vote_extension": { + "type": "string", + "format": "byte" + } + } + }, + "tendermint.abci.ResponseFinalizeBlock": { + "type": "object", + "properties": { + "app_hash": { + "description": "app_hash is the hash of the applications' state which is used to confirm that execution of the transactions was\ndeterministic. It is up to the application to decide which algorithm to use.", + "type": "string", + "format": "byte" + }, + "consensus_param_updates": { + "description": "updates to the consensus params, if any.", + "$ref": "#/definitions/tendermint.types.ConsensusParams" + }, + "events": { + "type": "array", + "title": "set of block events emmitted as part of executing the block", + "items": { + "type": "object", + "$ref": "#/definitions/tendermint.abci.Event" + } + }, + "tx_results": { + "type": "array", + "title": "the result of executing each transaction including the events\nthe particular transction emitted. This should match the order\nof the transactions delivered in the block itself", + "items": { + "type": "object", + "$ref": "#/definitions/tendermint.abci.ExecTxResult" + } + }, + "validator_updates": { + "description": "a list of updates to the validator set. These will reflect the validator set at current height + 2.", + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/tendermint.abci.ValidatorUpdate" + } + } + } + }, + "tendermint.abci.ResponseFlush": { + "type": "object" + }, + "tendermint.abci.ResponseInfo": { + "type": "object", + "properties": { + "app_version": { + "type": "string", + "format": "uint64" + }, + "data": { + "type": "string" + }, + "last_block_app_hash": { + "type": "string", + "format": "byte" + }, + "last_block_height": { + "type": "string", + "format": "int64" + }, + "version": { + "type": "string" + } + } + }, + "tendermint.abci.ResponseInitChain": { + "type": "object", + "properties": { + "app_hash": { + "type": "string", + "format": "byte" + }, + "consensus_params": { + "$ref": "#/definitions/tendermint.types.ConsensusParams" + }, + "validators": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/tendermint.abci.ValidatorUpdate" + } + } + } + }, + "tendermint.abci.ResponseListSnapshots": { + "type": "object", + "properties": { + "snapshots": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/tendermint.abci.Snapshot" + } + } + } + }, + "tendermint.abci.ResponseLoadSnapshotChunk": { + "type": "object", + "properties": { + "chunk": { + "type": "string", + "format": "byte" + } + } + }, + "tendermint.abci.ResponseOfferSnapshot": { + "type": "object", + "properties": { + "result": { + "$ref": "#/definitions/tendermint.abci.ResponseOfferSnapshot.Result" + } + } + }, + "tendermint.abci.ResponseOfferSnapshot.Result": { + "type": "string", + "title": "- UNKNOWN: Unknown result, abort all snapshot restoration\n - ACCEPT: Snapshot accepted, apply chunks\n - ABORT: Abort all snapshot restoration\n - REJECT: Reject this specific snapshot, try others\n - REJECT_FORMAT: Reject all snapshots of this format, try others\n - REJECT_SENDER: Reject all snapshots from the sender(s), try others", + "default": "UNKNOWN", + "enum": [ + "UNKNOWN", + "ACCEPT", + "ABORT", + "REJECT", + "REJECT_FORMAT", + "REJECT_SENDER" + ] + }, + "tendermint.abci.ResponsePrepareProposal": { + "type": "object", + "properties": { + "txs": { + "type": "array", + "items": { + "type": "string", + "format": "byte" + } + } + } + }, + "tendermint.abci.ResponseProcessProposal": { + "type": "object", + "properties": { + "status": { + "$ref": "#/definitions/tendermint.abci.ResponseProcessProposal.ProposalStatus" + } + } + }, + "tendermint.abci.ResponseProcessProposal.ProposalStatus": { + "type": "string", + "default": "UNKNOWN", + "enum": [ + "UNKNOWN", + "ACCEPT", + "REJECT" + ] + }, + "tendermint.abci.ResponseQuery": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "codespace": { + "type": "string" + }, + "height": { + "type": "string", + "format": "int64" + }, + "index": { + "type": "string", + "format": "int64" + }, + "info": { + "type": "string", + "title": "nondeterministic" + }, + "key": { + "type": "string", + "format": "byte" + }, + "log": { + "description": "bytes data = 2; // use \"value\" instead.\n\nnondeterministic", + "type": "string" + }, + "proof_ops": { + "$ref": "#/definitions/tendermint.crypto.ProofOps" + }, + "value": { + "type": "string", + "format": "byte" + } + } + }, + "tendermint.abci.ResponseVerifyVoteExtension": { + "type": "object", + "properties": { + "status": { + "$ref": "#/definitions/tendermint.abci.ResponseVerifyVoteExtension.VerifyStatus" + } + } + }, + "tendermint.abci.ResponseVerifyVoteExtension.VerifyStatus": { + "description": " - REJECT: Rejecting the vote extension will reject the entire precommit by the sender.\nIncorrectly implementing this thus has liveness implications as it may affect\nCometBFT's ability to receive 2/3+ valid votes to finalize the block.\nHonest nodes should never be rejected.", + "type": "string", + "default": "UNKNOWN", + "enum": [ + "UNKNOWN", + "ACCEPT", + "REJECT" + ] + }, + "tendermint.abci.Snapshot": { + "type": "object", + "properties": { + "chunks": { + "type": "integer", + "format": "int64", + "title": "Number of chunks in the snapshot" + }, + "format": { + "type": "integer", + "format": "int64", + "title": "The application-specific snapshot format" + }, + "hash": { + "type": "string", + "format": "byte", + "title": "Arbitrary snapshot hash, equal only if identical" + }, + "height": { + "type": "string", + "format": "uint64", + "title": "The height at which the snapshot was taken" + }, + "metadata": { + "type": "string", + "format": "byte", + "title": "Arbitrary application metadata" + } + } + }, + "tendermint.abci.Validator": { + "type": "object", + "properties": { + "address": { + "type": "string", + "format": "byte", + "title": "The first 20 bytes of SHA256(public key)" + }, + "power": { + "description": "The voting power", + "type": "string", + "format": "int64", + "title": "PubKey pub_key = 2 [(gogoproto.nullable)=false];" + } + } + }, + "tendermint.abci.ValidatorUpdate": { + "type": "object", + "properties": { + "power": { + "type": "string", + "format": "int64" + }, + "pub_key": { + "$ref": "#/definitions/tendermint.crypto.PublicKey" + } + } + }, + "tendermint.abci.VoteInfo": { + "type": "object", + "properties": { + "block_id_flag": { + "$ref": "#/definitions/tendermint.types.BlockIDFlag" + }, + "validator": { + "$ref": "#/definitions/tendermint.abci.Validator" + } + } + }, + "tendermint.crypto.ProofOp": { + "type": "object", + "title": "ProofOp defines an operation used for calculating Merkle root\nThe data could be arbitrary format, providing nessecary data\nfor example neighbouring node hash", + "properties": { + "data": { + "type": "string", + "format": "byte" + }, + "key": { + "type": "string", + "format": "byte" + }, + "type": { + "type": "string" + } + } + }, + "tendermint.crypto.ProofOps": { + "type": "object", + "title": "ProofOps is Merkle proof defined by the list of ProofOps", + "properties": { + "ops": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/tendermint.crypto.ProofOp" + } + } + } + }, + "tendermint.crypto.PublicKey": { + "type": "object", + "title": "PublicKey defines the keys available for use with Validators", + "properties": { + "ed25519": { + "type": "string", + "format": "byte" + }, + "secp256k1": { + "type": "string", + "format": "byte" + } + } + }, + "tendermint.p2p.DefaultNodeInfo": { + "type": "object", + "properties": { + "channels": { + "type": "string", + "format": "byte" + }, + "default_node_id": { + "type": "string" + }, + "listen_addr": { + "type": "string" + }, + "moniker": { + "type": "string" + }, + "network": { + "type": "string" + }, + "other": { + "$ref": "#/definitions/tendermint.p2p.DefaultNodeInfoOther" + }, + "protocol_version": { + "$ref": "#/definitions/tendermint.p2p.ProtocolVersion" + }, + "version": { + "type": "string" + } + } + }, + "tendermint.p2p.DefaultNodeInfoOther": { + "type": "object", + "properties": { + "rpc_address": { + "type": "string" + }, + "tx_index": { + "type": "string" + } + } + }, + "tendermint.p2p.ProtocolVersion": { + "type": "object", + "properties": { + "app": { + "type": "string", + "format": "uint64" + }, + "block": { + "type": "string", + "format": "uint64" + }, + "p2p": { + "type": "string", + "format": "uint64" + } + } + }, + "tendermint.types.ABCIParams": { + "description": "ABCIParams configure functionality specific to the Application Blockchain Interface.", + "type": "object", + "properties": { + "vote_extensions_enable_height": { + "description": "vote_extensions_enable_height configures the first height during which\nvote extensions will be enabled. During this specified height, and for all\nsubsequent heights, precommit messages that do not contain valid extension data\nwill be considered invalid. Prior to this height, vote extensions will not\nbe used or accepted by validators on the network.\n\nOnce enabled, vote extensions will be created by the application in ExtendVote,\npassed to the application for validation in VerifyVoteExtension and given\nto the application to use when proposing a block during PrepareProposal.", + "type": "string", + "format": "int64" + } + } + }, + "tendermint.types.Block": { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/tendermint.types.Data" + }, + "evidence": { + "$ref": "#/definitions/tendermint.types.EvidenceList" + }, + "header": { + "$ref": "#/definitions/tendermint.types.Header" + }, + "last_commit": { + "$ref": "#/definitions/tendermint.types.Commit" + } + } + }, + "tendermint.types.BlockID": { + "type": "object", + "title": "BlockID", + "properties": { + "hash": { + "type": "string", + "format": "byte" + }, + "part_set_header": { + "$ref": "#/definitions/tendermint.types.PartSetHeader" + } + } + }, + "tendermint.types.BlockIDFlag": { + "description": "- BLOCK_ID_FLAG_UNKNOWN: indicates an error condition\n - BLOCK_ID_FLAG_ABSENT: the vote was not received\n - BLOCK_ID_FLAG_COMMIT: voted for the block that received the majority\n - BLOCK_ID_FLAG_NIL: voted for nil", + "type": "string", + "title": "BlockIdFlag indicates which BlockID the signature is for", + "default": "BLOCK_ID_FLAG_UNKNOWN", + "enum": [ + "BLOCK_ID_FLAG_UNKNOWN", + "BLOCK_ID_FLAG_ABSENT", + "BLOCK_ID_FLAG_COMMIT", + "BLOCK_ID_FLAG_NIL" + ] + }, + "tendermint.types.BlockParams": { + "description": "BlockParams contains limits on the block size.", + "type": "object", + "properties": { + "max_bytes": { + "type": "string", + "format": "int64", + "title": "Max block size, in bytes.\nNote: must be greater than 0" + }, + "max_gas": { + "type": "string", + "format": "int64", + "title": "Max gas per block.\nNote: must be greater or equal to -1" + } + } + }, + "tendermint.types.Commit": { + "description": "Commit contains the evidence that a block was committed by a set of validators.", + "type": "object", + "properties": { + "block_id": { + "$ref": "#/definitions/tendermint.types.BlockID" + }, + "height": { + "type": "string", + "format": "int64" + }, + "round": { + "type": "integer", + "format": "int32" + }, + "signatures": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/tendermint.types.CommitSig" + } + } + } + }, + "tendermint.types.CommitSig": { + "description": "CommitSig is a part of the Vote included in a Commit.", + "type": "object", + "properties": { + "block_id_flag": { + "$ref": "#/definitions/tendermint.types.BlockIDFlag" + }, + "signature": { + "type": "string", + "format": "byte" + }, + "timestamp": { + "type": "string", + "format": "date-time" + }, + "validator_address": { + "type": "string", + "format": "byte" + } + } + }, + "tendermint.types.ConsensusParams": { + "description": "ConsensusParams contains consensus critical parameters that determine the\nvalidity of blocks.", + "type": "object", + "properties": { + "abci": { + "$ref": "#/definitions/tendermint.types.ABCIParams" + }, + "block": { + "$ref": "#/definitions/tendermint.types.BlockParams" + }, + "evidence": { + "$ref": "#/definitions/tendermint.types.EvidenceParams" + }, + "validator": { + "$ref": "#/definitions/tendermint.types.ValidatorParams" + }, + "version": { + "$ref": "#/definitions/tendermint.types.VersionParams" + } + } + }, + "tendermint.types.Data": { + "type": "object", + "title": "Data contains the set of transactions included in the block", + "properties": { + "txs": { + "description": "Txs that will be applied by state @ block.Height+1.\nNOTE: not all txs here are valid. We're just agreeing on the order first.\nThis means that block.AppHash does not include these txs.", + "type": "array", + "items": { + "type": "string", + "format": "byte" + } + } + } + }, + "tendermint.types.DuplicateVoteEvidence": { + "description": "DuplicateVoteEvidence contains evidence of a validator signed two conflicting votes.", + "type": "object", + "properties": { + "timestamp": { + "type": "string", + "format": "date-time" + }, + "total_voting_power": { + "type": "string", + "format": "int64" + }, + "validator_power": { + "type": "string", + "format": "int64" + }, + "vote_a": { + "$ref": "#/definitions/tendermint.types.Vote" + }, + "vote_b": { + "$ref": "#/definitions/tendermint.types.Vote" + } + } + }, + "tendermint.types.Evidence": { + "type": "object", + "properties": { + "duplicate_vote_evidence": { + "$ref": "#/definitions/tendermint.types.DuplicateVoteEvidence" + }, + "light_client_attack_evidence": { + "$ref": "#/definitions/tendermint.types.LightClientAttackEvidence" + } + } + }, + "tendermint.types.EvidenceList": { + "type": "object", + "properties": { + "evidence": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/tendermint.types.Evidence" + } + } + } + }, + "tendermint.types.EvidenceParams": { + "description": "EvidenceParams determine how we handle evidence of malfeasance.", + "type": "object", + "properties": { + "max_age_duration": { + "description": "Max age of evidence, in time.\n\nIt should correspond with an app's \"unbonding period\" or other similar\nmechanism for handling [Nothing-At-Stake\nattacks](https://github.com/ethereum/wiki/wiki/Proof-of-Stake-FAQ#what-is-the-nothing-at-stake-problem-and-how-can-it-be-fixed).", + "type": "string" + }, + "max_age_num_blocks": { + "description": "Max age of evidence, in blocks.\n\nThe basic formula for calculating this is: MaxAgeDuration / {average block\ntime}.", + "type": "string", + "format": "int64" + }, + "max_bytes": { + "type": "string", + "format": "int64", + "title": "This sets the maximum size of total evidence in bytes that can be committed in a single block.\nand should fall comfortably under the max block bytes.\nDefault is 1048576 or 1MB" + } + } + }, + "tendermint.types.Header": { + "description": "Header defines the structure of a block header.", + "type": "object", + "properties": { + "app_hash": { + "type": "string", + "format": "byte", + "title": "state after txs from the previous block" + }, + "chain_id": { + "type": "string" + }, + "consensus_hash": { + "type": "string", + "format": "byte", + "title": "consensus params for current block" + }, + "data_hash": { + "type": "string", + "format": "byte", + "title": "transactions" + }, + "evidence_hash": { + "description": "evidence included in the block", + "type": "string", + "format": "byte", + "title": "consensus info" + }, + "height": { + "type": "string", + "format": "int64" + }, + "last_block_id": { + "title": "prev block info", + "$ref": "#/definitions/tendermint.types.BlockID" + }, + "last_commit_hash": { + "description": "commit from validators from the last block", + "type": "string", + "format": "byte", + "title": "hashes of block data" + }, + "last_results_hash": { + "type": "string", + "format": "byte", + "title": "root hash of all results from the txs from the previous block" + }, + "next_validators_hash": { + "type": "string", + "format": "byte", + "title": "validators for the next block" + }, + "proposer_address": { + "type": "string", + "format": "byte", + "title": "original proposer of the block" + }, + "time": { + "type": "string", + "format": "date-time" + }, + "validators_hash": { + "description": "validators for the current block", + "type": "string", + "format": "byte", + "title": "hashes from the app output from the prev block" + }, + "version": { + "title": "basic block info", + "$ref": "#/definitions/tendermint.version.Consensus" + } + } + }, + "tendermint.types.LightBlock": { + "type": "object", + "properties": { + "signed_header": { + "$ref": "#/definitions/tendermint.types.SignedHeader" + }, + "validator_set": { + "$ref": "#/definitions/tendermint.types.ValidatorSet" + } + } + }, + "tendermint.types.LightClientAttackEvidence": { + "description": "LightClientAttackEvidence contains evidence of a set of validators attempting to mislead a light client.", + "type": "object", + "properties": { + "byzantine_validators": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/tendermint.types.Validator" + } + }, + "common_height": { + "type": "string", + "format": "int64" + }, + "conflicting_block": { + "$ref": "#/definitions/tendermint.types.LightBlock" + }, + "timestamp": { + "type": "string", + "format": "date-time" + }, + "total_voting_power": { + "type": "string", + "format": "int64" + } + } + }, + "tendermint.types.PartSetHeader": { + "type": "object", + "title": "PartsetHeader", + "properties": { + "hash": { + "type": "string", + "format": "byte" + }, + "total": { + "type": "integer", + "format": "int64" + } + } + }, + "tendermint.types.SignedHeader": { + "type": "object", + "properties": { + "commit": { + "$ref": "#/definitions/tendermint.types.Commit" + }, + "header": { + "$ref": "#/definitions/tendermint.types.Header" + } + } + }, + "tendermint.types.SignedMsgType": { + "description": "SignedMsgType is a type of signed message in the consensus.\n\n - SIGNED_MSG_TYPE_PREVOTE: Votes\n - SIGNED_MSG_TYPE_PROPOSAL: Proposals", + "type": "string", + "default": "SIGNED_MSG_TYPE_UNKNOWN", + "enum": [ + "SIGNED_MSG_TYPE_UNKNOWN", + "SIGNED_MSG_TYPE_PREVOTE", + "SIGNED_MSG_TYPE_PRECOMMIT", + "SIGNED_MSG_TYPE_PROPOSAL" + ] + }, + "tendermint.types.Validator": { + "type": "object", + "properties": { + "address": { + "type": "string", + "format": "byte" + }, + "proposer_priority": { + "type": "string", + "format": "int64" + }, + "pub_key": { + "$ref": "#/definitions/tendermint.crypto.PublicKey" + }, + "voting_power": { + "type": "string", + "format": "int64" + } + } + }, + "tendermint.types.ValidatorParams": { + "description": "ValidatorParams restrict the public key types validators can use.\nNOTE: uses ABCI pubkey naming, not Amino names.", + "type": "object", + "properties": { + "pub_key_types": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "tendermint.types.ValidatorSet": { + "type": "object", + "properties": { + "proposer": { + "$ref": "#/definitions/tendermint.types.Validator" + }, + "total_voting_power": { + "type": "string", + "format": "int64" + }, + "validators": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/tendermint.types.Validator" + } + } + } + }, + "tendermint.types.VersionParams": { + "description": "VersionParams contains the ABCI application version.", + "type": "object", + "properties": { + "app": { + "type": "string", + "format": "uint64" + } + } + }, + "tendermint.types.Vote": { + "description": "Vote represents a prevote or precommit vote from validators for\nconsensus.", + "type": "object", + "properties": { + "block_id": { + "description": "zero if vote is nil.", + "$ref": "#/definitions/tendermint.types.BlockID" + }, + "extension": { + "description": "Vote extension provided by the application. Only valid for precommit\nmessages.", + "type": "string", + "format": "byte" + }, + "extension_signature": { + "description": "Vote extension signature by the validator if they participated in\nconsensus for the associated block.\nOnly valid for precommit messages.", + "type": "string", + "format": "byte" + }, + "height": { + "type": "string", + "format": "int64" + }, + "round": { + "type": "integer", + "format": "int32" + }, + "signature": { + "description": "Vote signature by the validator if they participated in consensus for the\nassociated block.", + "type": "string", + "format": "byte" + }, + "timestamp": { + "type": "string", + "format": "date-time" + }, + "type": { + "$ref": "#/definitions/tendermint.types.SignedMsgType" + }, + "validator_address": { + "type": "string", + "format": "byte" + }, + "validator_index": { + "type": "integer", + "format": "int32" + } + } + }, + "tendermint.version.Consensus": { + "description": "Consensus captures the consensus rules for processing a block in the blockchain,\nincluding all blockchain data structures and the rules of the application's\nstate transition machine.", + "type": "object", + "properties": { + "app": { + "type": "string", + "format": "uint64" + }, + "block": { + "type": "string", + "format": "uint64" + } + } + } + }, + "tags": [ + { + "name": "Query" + }, + { + "name": "Msg" + }, + { + "name": "Service" + }, + { + "name": "ReflectionService" + }, + { + "name": "ABCIListenerService" + }, + { + "name": "ABCI" + } + ] +} diff --git a/docs/static/openapi.yml b/docs/static/openapi.yml index c9784a7b8..0a30ebea1 100644 --- a/docs/static/openapi.yml +++ b/docs/static/openapi.yml @@ -1 +1,21346 @@ -{"id":"github.com/pokt-network/poktroll","consumes":["application/json"],"produces":["application/json"],"swagger":"2.0","info":{"description":"Chain github.com/pokt-network/poktroll REST API","title":"HTTP API Console","contact":{"name":"github.com/pokt-network/poktroll"},"version":"version not set"},"paths":{"/cosmos.auth.v1beta1.Msg/UpdateParams":{"post":{"description":"Since: cosmos-sdk 0.47","tags":["Msg"],"summary":"UpdateParams defines a (governance) operation for updating the x/auth module\nparameters. The authority defaults to the x/gov module account.","operationId":"EvidenceMsg_UpdateParams","parameters":[{"description":"MsgUpdateParams is the Msg/UpdateParams request type.\n\nSince: cosmos-sdk 0.47","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.auth.v1beta1.MsgUpdateParams"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.auth.v1beta1.MsgUpdateParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.authz.v1beta1.Msg/Exec":{"post":{"tags":["Msg"],"summary":"Exec attempts to execute the provided messages using\nauthorizations granted to the grantee. Each message should have only\none signer corresponding to the granter of the authorization.","operationId":"EvidenceMsg_Exec","parameters":[{"description":"MsgExec attempts to execute the provided messages using\nauthorizations granted to the grantee. Each message should have only\none signer corresponding to the granter of the authorization.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.authz.v1beta1.MsgExec"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.authz.v1beta1.MsgExecResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.authz.v1beta1.Msg/Grant":{"post":{"tags":["Msg"],"summary":"Grant grants the provided authorization to the grantee on the granter's\naccount with the provided expiration time. If there is already a grant\nfor the given (granter, grantee, Authorization) triple, then the grant\nwill be overwritten.","operationId":"EvidenceMsg_Grant","parameters":[{"description":"MsgGrant is a request type for Grant method. It declares authorization to the grantee\non behalf of the granter with the provided expiration time.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.authz.v1beta1.MsgGrant"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.authz.v1beta1.MsgGrantResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.authz.v1beta1.Msg/Revoke":{"post":{"tags":["Msg"],"summary":"Revoke revokes any authorization corresponding to the provided method name on the\ngranter's account that has been granted to the grantee.","operationId":"EvidenceMsg_Revoke","parameters":[{"description":"MsgRevoke revokes any authorization with the provided sdk.Msg type on the\ngranter's account with that has been granted to the grantee.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.authz.v1beta1.MsgRevoke"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.authz.v1beta1.MsgRevokeResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.autocli.v1.Query/AppOptions":{"post":{"tags":["Query"],"summary":"AppOptions returns the autocli options for all of the modules in an app.","operationId":"EvidenceQuery_AppOptions","parameters":[{"description":"AppOptionsRequest is the RemoteInfoService/AppOptions request type.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.autocli.v1.AppOptionsRequest"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.autocli.v1.AppOptionsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.bank.v1beta1.Msg/MultiSend":{"post":{"tags":["Msg"],"summary":"MultiSend defines a method for sending coins from some accounts to other accounts.","operationId":"EvidenceMsg_MultiSend","parameters":[{"description":"MsgMultiSend represents an arbitrary multi-in, multi-out send message.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.bank.v1beta1.MsgMultiSend"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.bank.v1beta1.MsgMultiSendResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.bank.v1beta1.Msg/Send":{"post":{"tags":["Msg"],"summary":"Send defines a method for sending coins from one account to another account.","operationId":"EvidenceMsg_Send","parameters":[{"description":"MsgSend represents a message to send coins from one account to another.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.bank.v1beta1.MsgSend"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.bank.v1beta1.MsgSendResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.bank.v1beta1.Msg/SetSendEnabled":{"post":{"description":"Since: cosmos-sdk 0.47","tags":["Msg"],"summary":"SetSendEnabled is a governance operation for setting the SendEnabled flag\non any number of Denoms. Only the entries to add or update should be\nincluded. Entries that already exist in the store, but that aren't\nincluded in this message, will be left unchanged.","operationId":"EvidenceMsg_SetSendEnabled","parameters":[{"description":"MsgSetSendEnabled is the Msg/SetSendEnabled request type.\n\nOnly entries to add/update/delete need to be included.\nExisting SendEnabled entries that are not included in this\nmessage are left unchanged.\n\nSince: cosmos-sdk 0.47","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.bank.v1beta1.MsgSetSendEnabled"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.bank.v1beta1.MsgSetSendEnabledResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.bank.v1beta1.Msg/UpdateParams":{"post":{"description":"Since: cosmos-sdk 0.47","tags":["Msg"],"summary":"UpdateParams defines a governance operation for updating the x/bank module parameters.\nThe authority is defined in the keeper.","operationId":"EvidenceMsg_UpdateParamsMixin60","parameters":[{"description":"MsgUpdateParams is the Msg/UpdateParams request type.\n\nSince: cosmos-sdk 0.47","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.bank.v1beta1.MsgUpdateParams"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.bank.v1beta1.MsgUpdateParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.circuit.v1.Msg/AuthorizeCircuitBreaker":{"post":{"tags":["Msg"],"summary":"AuthorizeCircuitBreaker allows a super-admin to grant (or revoke) another\naccount's circuit breaker permissions.","operationId":"EvidenceMsg_AuthorizeCircuitBreaker","parameters":[{"description":"MsgAuthorizeCircuitBreaker defines the Msg/AuthorizeCircuitBreaker request type.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.circuit.v1.MsgAuthorizeCircuitBreaker"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.circuit.v1.MsgAuthorizeCircuitBreakerResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.circuit.v1.Msg/ResetCircuitBreaker":{"post":{"tags":["Msg"],"summary":"ResetCircuitBreaker resumes processing of Msg's in the state machine that\nhave been been paused using TripCircuitBreaker.","operationId":"EvidenceMsg_ResetCircuitBreaker","parameters":[{"description":"MsgResetCircuitBreaker defines the Msg/ResetCircuitBreaker request type.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.circuit.v1.MsgResetCircuitBreaker"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.circuit.v1.MsgResetCircuitBreakerResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.circuit.v1.Msg/TripCircuitBreaker":{"post":{"tags":["Msg"],"summary":"TripCircuitBreaker pauses processing of Msg's in the state machine.","operationId":"EvidenceMsg_TripCircuitBreaker","parameters":[{"description":"MsgTripCircuitBreaker defines the Msg/TripCircuitBreaker request type.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.circuit.v1.MsgTripCircuitBreaker"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.circuit.v1.MsgTripCircuitBreakerResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.consensus.v1.Msg/UpdateParams":{"post":{"description":"Since: cosmos-sdk 0.47","tags":["Msg"],"summary":"UpdateParams defines a governance operation for updating the x/consensus module parameters.\nThe authority is defined in the keeper.","operationId":"EvidenceMsg_UpdateParamsMixin73","parameters":[{"description":"MsgUpdateParams is the Msg/UpdateParams request type.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.consensus.v1.MsgUpdateParams"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.consensus.v1.MsgUpdateParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.crisis.v1beta1.Msg/UpdateParams":{"post":{"description":"Since: cosmos-sdk 0.47","tags":["Msg"],"summary":"UpdateParams defines a governance operation for updating the x/crisis module\nparameters. The authority is defined in the keeper.","operationId":"EvidenceMsg_UpdateParamsMixin75","parameters":[{"description":"MsgUpdateParams is the Msg/UpdateParams request type.\n\nSince: cosmos-sdk 0.47","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.crisis.v1beta1.MsgUpdateParams"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.crisis.v1beta1.MsgUpdateParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.crisis.v1beta1.Msg/VerifyInvariant":{"post":{"tags":["Msg"],"summary":"VerifyInvariant defines a method to verify a particular invariant.","operationId":"EvidenceMsg_VerifyInvariant","parameters":[{"description":"MsgVerifyInvariant represents a message to verify a particular invariance.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.crisis.v1beta1.MsgVerifyInvariant"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.crisis.v1beta1.MsgVerifyInvariantResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.distribution.v1beta1.Msg/CommunityPoolSpend":{"post":{"description":"Since: cosmos-sdk 0.47","tags":["Msg"],"summary":"CommunityPoolSpend defines a governance operation for sending tokens from\nthe community pool in the x/distribution module to another account, which\ncould be the governance module itself. The authority is defined in the\nkeeper.","operationId":"EvidenceMsg_CommunityPoolSpend","parameters":[{"description":"MsgCommunityPoolSpend defines a message for sending tokens from the community\npool to another account. This message is typically executed via a governance\nproposal with the governance module being the executing authority.\n\nSince: cosmos-sdk 0.47","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.distribution.v1beta1.MsgCommunityPoolSpend"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.distribution.v1beta1.MsgCommunityPoolSpendResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.distribution.v1beta1.Msg/DepositValidatorRewardsPool":{"post":{"description":"Since: cosmos-sdk 0.50","tags":["Msg"],"summary":"DepositValidatorRewardsPool defines a method to provide additional rewards\nto delegators to a specific validator.","operationId":"EvidenceMsg_DepositValidatorRewardsPool","parameters":[{"description":"DepositValidatorRewardsPool defines the request structure to provide\nadditional rewards to delegators from a specific validator.\n\nSince: cosmos-sdk 0.50","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.distribution.v1beta1.MsgDepositValidatorRewardsPool"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.distribution.v1beta1.MsgDepositValidatorRewardsPoolResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.distribution.v1beta1.Msg/FundCommunityPool":{"post":{"tags":["Msg"],"summary":"FundCommunityPool defines a method to allow an account to directly\nfund the community pool.","operationId":"EvidenceMsg_FundCommunityPool","parameters":[{"description":"MsgFundCommunityPool allows an account to directly\nfund the community pool.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.distribution.v1beta1.MsgFundCommunityPool"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.distribution.v1beta1.MsgFundCommunityPoolResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.distribution.v1beta1.Msg/SetWithdrawAddress":{"post":{"tags":["Msg"],"summary":"SetWithdrawAddress defines a method to change the withdraw address\nfor a delegator (or validator self-delegation).","operationId":"EvidenceMsg_SetWithdrawAddress","parameters":[{"description":"MsgSetWithdrawAddress sets the withdraw address for\na delegator (or validator self-delegation).","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.distribution.v1beta1.MsgSetWithdrawAddress"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.distribution.v1beta1.MsgSetWithdrawAddressResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.distribution.v1beta1.Msg/UpdateParams":{"post":{"description":"Since: cosmos-sdk 0.47","tags":["Msg"],"summary":"UpdateParams defines a governance operation for updating the x/distribution\nmodule parameters. The authority is defined in the keeper.","operationId":"EvidenceMsg_UpdateParamsMixin86","parameters":[{"description":"MsgUpdateParams is the Msg/UpdateParams request type.\n\nSince: cosmos-sdk 0.47","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.distribution.v1beta1.MsgUpdateParams"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.distribution.v1beta1.MsgUpdateParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.distribution.v1beta1.Msg/WithdrawDelegatorReward":{"post":{"tags":["Msg"],"summary":"WithdrawDelegatorReward defines a method to withdraw rewards of delegator\nfrom a single validator.","operationId":"EvidenceMsg_WithdrawDelegatorReward","parameters":[{"description":"MsgWithdrawDelegatorReward represents delegation withdrawal to a delegator\nfrom a single validator.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.distribution.v1beta1.MsgWithdrawDelegatorReward"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.distribution.v1beta1.MsgWithdrawDelegatorRewardResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.distribution.v1beta1.Msg/WithdrawValidatorCommission":{"post":{"tags":["Msg"],"summary":"WithdrawValidatorCommission defines a method to withdraw the\nfull commission to the validator address.","operationId":"EvidenceMsg_WithdrawValidatorCommission","parameters":[{"description":"MsgWithdrawValidatorCommission withdraws the full commission to the validator\naddress.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.distribution.v1beta1.MsgWithdrawValidatorCommission"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.distribution.v1beta1.MsgWithdrawValidatorCommissionResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.evidence.v1beta1.Msg/SubmitEvidence":{"post":{"tags":["Msg"],"summary":"SubmitEvidence submits an arbitrary Evidence of misbehavior such as equivocation or\ncounterfactual signing.","operationId":"EvidenceMsg_SubmitEvidence","parameters":[{"description":"MsgSubmitEvidence represents a message that supports submitting arbitrary\nEvidence of misbehavior such as equivocation or counterfactual signing.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.evidence.v1beta1.MsgSubmitEvidence"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.evidence.v1beta1.MsgSubmitEvidenceResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.feegrant.v1beta1.Msg/GrantAllowance":{"post":{"tags":["Msg"],"summary":"GrantAllowance grants fee allowance to the grantee on the granter's\naccount with the provided expiration time.","operationId":"EvidenceMsg_GrantAllowance","parameters":[{"description":"MsgGrantAllowance adds permission for Grantee to spend up to Allowance\nof fees from the account of Granter.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.feegrant.v1beta1.MsgGrantAllowance"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.feegrant.v1beta1.MsgGrantAllowanceResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.feegrant.v1beta1.Msg/PruneAllowances":{"post":{"description":"Since cosmos-sdk 0.50","tags":["Msg"],"summary":"PruneAllowances prunes expired fee allowances, currently up to 75 at a time.","operationId":"EvidenceMsg_PruneAllowances","parameters":[{"description":"MsgPruneAllowances prunes expired fee allowances.\n\nSince cosmos-sdk 0.50","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.feegrant.v1beta1.MsgPruneAllowances"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.feegrant.v1beta1.MsgPruneAllowancesResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.feegrant.v1beta1.Msg/RevokeAllowance":{"post":{"tags":["Msg"],"summary":"RevokeAllowance revokes any fee allowance of granter's account that\nhas been granted to the grantee.","operationId":"EvidenceMsg_RevokeAllowance","parameters":[{"description":"MsgRevokeAllowance removes any existing Allowance from Granter to Grantee.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.feegrant.v1beta1.MsgRevokeAllowance"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.feegrant.v1beta1.MsgRevokeAllowanceResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.gov.v1.Msg/CancelProposal":{"post":{"description":"Since: cosmos-sdk 0.50","tags":["Msg"],"summary":"CancelProposal defines a method to cancel governance proposal","operationId":"EvidenceMsg_CancelProposal","parameters":[{"description":"MsgCancelProposal is the Msg/CancelProposal request type.\n\nSince: cosmos-sdk 0.50","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.gov.v1.MsgCancelProposal"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.gov.v1.MsgCancelProposalResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.gov.v1.Msg/Deposit":{"post":{"tags":["Msg"],"summary":"Deposit defines a method to add deposit on a specific proposal.","operationId":"EvidenceMsg_Deposit","parameters":[{"description":"MsgDeposit defines a message to submit a deposit to an existing proposal.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.gov.v1.MsgDeposit"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.gov.v1.MsgDepositResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.gov.v1.Msg/ExecLegacyContent":{"post":{"tags":["Msg"],"summary":"ExecLegacyContent defines a Msg to be in included in a MsgSubmitProposal\nto execute a legacy content-based proposal.","operationId":"EvidenceMsg_ExecLegacyContent","parameters":[{"description":"MsgExecLegacyContent is used to wrap the legacy content field into a message.\nThis ensures backwards compatibility with v1beta1.MsgSubmitProposal.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.gov.v1.MsgExecLegacyContent"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.gov.v1.MsgExecLegacyContentResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.gov.v1.Msg/SubmitProposal":{"post":{"tags":["Msg"],"summary":"SubmitProposal defines a method to create new proposal given the messages.","operationId":"EvidenceMsg_SubmitProposal","parameters":[{"description":"MsgSubmitProposal defines an sdk.Msg type that supports submitting arbitrary\nproposal Content.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.gov.v1.MsgSubmitProposal"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.gov.v1.MsgSubmitProposalResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.gov.v1.Msg/UpdateParams":{"post":{"description":"Since: cosmos-sdk 0.47","tags":["Msg"],"summary":"UpdateParams defines a governance operation for updating the x/gov module\nparameters. The authority is defined in the keeper.","operationId":"EvidenceMsg_UpdateParamsMixin99","parameters":[{"description":"MsgUpdateParams is the Msg/UpdateParams request type.\n\nSince: cosmos-sdk 0.47","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.gov.v1.MsgUpdateParams"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.gov.v1.MsgUpdateParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.gov.v1.Msg/Vote":{"post":{"tags":["Msg"],"summary":"Vote defines a method to add a vote on a specific proposal.","operationId":"EvidenceMsg_Vote","parameters":[{"description":"MsgVote defines a message to cast a vote.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.gov.v1.MsgVote"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.gov.v1.MsgVoteResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.gov.v1.Msg/VoteWeighted":{"post":{"tags":["Msg"],"summary":"VoteWeighted defines a method to add a weighted vote on a specific proposal.","operationId":"EvidenceMsg_VoteWeighted","parameters":[{"description":"MsgVoteWeighted defines a message to cast a vote.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.gov.v1.MsgVoteWeighted"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.gov.v1.MsgVoteWeightedResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.gov.v1beta1.Msg/Deposit":{"post":{"tags":["Msg"],"summary":"Deposit defines a method to add deposit on a specific proposal.","operationId":"EvidenceMsg_DepositMixin103","parameters":[{"description":"MsgDeposit defines a message to submit a deposit to an existing proposal.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.gov.v1beta1.MsgDeposit"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.gov.v1beta1.MsgDepositResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.gov.v1beta1.Msg/SubmitProposal":{"post":{"tags":["Msg"],"summary":"SubmitProposal defines a method to create new proposal given a content.","operationId":"EvidenceMsg_SubmitProposalMixin103","parameters":[{"description":"MsgSubmitProposal defines an sdk.Msg type that supports submitting arbitrary\nproposal Content.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.gov.v1beta1.MsgSubmitProposal"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.gov.v1beta1.MsgSubmitProposalResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.gov.v1beta1.Msg/Vote":{"post":{"tags":["Msg"],"summary":"Vote defines a method to add a vote on a specific proposal.","operationId":"EvidenceMsg_VoteMixin103","parameters":[{"description":"MsgVote defines a message to cast a vote.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.gov.v1beta1.MsgVote"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.gov.v1beta1.MsgVoteResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.gov.v1beta1.Msg/VoteWeighted":{"post":{"description":"Since: cosmos-sdk 0.43","tags":["Msg"],"summary":"VoteWeighted defines a method to add a weighted vote on a specific proposal.","operationId":"EvidenceMsg_VoteWeightedMixin103","parameters":[{"description":"MsgVoteWeighted defines a message to cast a vote.\n\nSince: cosmos-sdk 0.43","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.gov.v1beta1.MsgVoteWeighted"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.gov.v1beta1.MsgVoteWeightedResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.group.v1.Msg/CreateGroup":{"post":{"tags":["Msg"],"summary":"CreateGroup creates a new group with an admin account address, a list of members and some optional metadata.","operationId":"EvidenceMsg_CreateGroup","parameters":[{"description":"MsgCreateGroup is the Msg/CreateGroup request type.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.group.v1.MsgCreateGroup"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.group.v1.MsgCreateGroupResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.group.v1.Msg/CreateGroupPolicy":{"post":{"tags":["Msg"],"summary":"CreateGroupPolicy creates a new group policy using given DecisionPolicy.","operationId":"EvidenceMsg_CreateGroupPolicy","parameters":[{"description":"MsgCreateGroupPolicy is the Msg/CreateGroupPolicy request type.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.group.v1.MsgCreateGroupPolicy"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.group.v1.MsgCreateGroupPolicyResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.group.v1.Msg/CreateGroupWithPolicy":{"post":{"tags":["Msg"],"summary":"CreateGroupWithPolicy creates a new group with policy.","operationId":"EvidenceMsg_CreateGroupWithPolicy","parameters":[{"description":"MsgCreateGroupWithPolicy is the Msg/CreateGroupWithPolicy request type.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.group.v1.MsgCreateGroupWithPolicy"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.group.v1.MsgCreateGroupWithPolicyResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.group.v1.Msg/Exec":{"post":{"tags":["Msg"],"summary":"Exec executes a proposal.","operationId":"EvidenceMsg_ExecMixin107","parameters":[{"description":"MsgExec is the Msg/Exec request type.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.group.v1.MsgExec"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.group.v1.MsgExecResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.group.v1.Msg/LeaveGroup":{"post":{"tags":["Msg"],"summary":"LeaveGroup allows a group member to leave the group.","operationId":"EvidenceMsg_LeaveGroup","parameters":[{"description":"MsgLeaveGroup is the Msg/LeaveGroup request type.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.group.v1.MsgLeaveGroup"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.group.v1.MsgLeaveGroupResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.group.v1.Msg/SubmitProposal":{"post":{"tags":["Msg"],"summary":"SubmitProposal submits a new proposal.","operationId":"EvidenceMsg_SubmitProposalMixin107","parameters":[{"description":"MsgSubmitProposal is the Msg/SubmitProposal request type.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.group.v1.MsgSubmitProposal"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.group.v1.MsgSubmitProposalResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.group.v1.Msg/UpdateGroupAdmin":{"post":{"tags":["Msg"],"summary":"UpdateGroupAdmin updates the group admin with given group id and previous admin address.","operationId":"EvidenceMsg_UpdateGroupAdmin","parameters":[{"description":"MsgUpdateGroupAdmin is the Msg/UpdateGroupAdmin request type.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.group.v1.MsgUpdateGroupAdmin"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.group.v1.MsgUpdateGroupAdminResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.group.v1.Msg/UpdateGroupMembers":{"post":{"tags":["Msg"],"summary":"UpdateGroupMembers updates the group members with given group id and admin address.","operationId":"EvidenceMsg_UpdateGroupMembers","parameters":[{"description":"MsgUpdateGroupMembers is the Msg/UpdateGroupMembers request type.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.group.v1.MsgUpdateGroupMembers"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.group.v1.MsgUpdateGroupMembersResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.group.v1.Msg/UpdateGroupMetadata":{"post":{"tags":["Msg"],"summary":"UpdateGroupMetadata updates the group metadata with given group id and admin address.","operationId":"EvidenceMsg_UpdateGroupMetadata","parameters":[{"description":"MsgUpdateGroupMetadata is the Msg/UpdateGroupMetadata request type.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.group.v1.MsgUpdateGroupMetadata"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.group.v1.MsgUpdateGroupMetadataResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.group.v1.Msg/UpdateGroupPolicyAdmin":{"post":{"tags":["Msg"],"summary":"UpdateGroupPolicyAdmin updates a group policy admin.","operationId":"EvidenceMsg_UpdateGroupPolicyAdmin","parameters":[{"description":"MsgUpdateGroupPolicyAdmin is the Msg/UpdateGroupPolicyAdmin request type.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.group.v1.MsgUpdateGroupPolicyAdmin"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.group.v1.MsgUpdateGroupPolicyAdminResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.group.v1.Msg/UpdateGroupPolicyDecisionPolicy":{"post":{"tags":["Msg"],"summary":"UpdateGroupPolicyDecisionPolicy allows a group policy's decision policy to be updated.","operationId":"EvidenceMsg_UpdateGroupPolicyDecisionPolicy","parameters":[{"description":"MsgUpdateGroupPolicyDecisionPolicy is the Msg/UpdateGroupPolicyDecisionPolicy request type.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.group.v1.MsgUpdateGroupPolicyDecisionPolicy"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.group.v1.MsgUpdateGroupPolicyDecisionPolicyResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.group.v1.Msg/UpdateGroupPolicyMetadata":{"post":{"tags":["Msg"],"summary":"UpdateGroupPolicyMetadata updates a group policy metadata.","operationId":"EvidenceMsg_UpdateGroupPolicyMetadata","parameters":[{"description":"MsgUpdateGroupPolicyMetadata is the Msg/UpdateGroupPolicyMetadata request type.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.group.v1.MsgUpdateGroupPolicyMetadata"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.group.v1.MsgUpdateGroupPolicyMetadataResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.group.v1.Msg/Vote":{"post":{"tags":["Msg"],"summary":"Vote allows a voter to vote on a proposal.","operationId":"EvidenceMsg_VoteMixin107","parameters":[{"description":"MsgVote is the Msg/Vote request type.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.group.v1.MsgVote"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.group.v1.MsgVoteResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.group.v1.Msg/WithdrawProposal":{"post":{"tags":["Msg"],"summary":"WithdrawProposal withdraws a proposal.","operationId":"EvidenceMsg_WithdrawProposal","parameters":[{"description":"MsgWithdrawProposal is the Msg/WithdrawProposal request type.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.group.v1.MsgWithdrawProposal"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.group.v1.MsgWithdrawProposalResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.mint.v1beta1.Msg/UpdateParams":{"post":{"description":"Since: cosmos-sdk 0.47","tags":["Msg"],"summary":"UpdateParams defines a governance operation for updating the x/mint module\nparameters. The authority is defaults to the x/gov module account.","operationId":"EvidenceMsg_UpdateParamsMixin112","parameters":[{"description":"MsgUpdateParams is the Msg/UpdateParams request type.\n\nSince: cosmos-sdk 0.47","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.mint.v1beta1.MsgUpdateParams"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.mint.v1beta1.MsgUpdateParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.nft.v1beta1.Msg/Send":{"post":{"tags":["Msg"],"summary":"Send defines a method to send a nft from one account to another account.","operationId":"EvidenceMsg_SendMixin118","parameters":[{"description":"MsgSend represents a message to send a nft from one account to another account.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.nft.v1beta1.MsgSend"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.nft.v1beta1.MsgSendResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.slashing.v1beta1.Msg/Unjail":{"post":{"tags":["Msg"],"summary":"Unjail defines a method for unjailing a jailed validator, thus returning\nthem into the bonded validator set, so they can begin receiving provisions\nand rewards again.","operationId":"EvidenceMsg_Unjail","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.slashing.v1beta1.MsgUnjail"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.slashing.v1beta1.MsgUnjailResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.slashing.v1beta1.Msg/UpdateParams":{"post":{"description":"Since: cosmos-sdk 0.47","tags":["Msg"],"summary":"UpdateParams defines a governance operation for updating the x/slashing module\nparameters. The authority defaults to the x/gov module account.","operationId":"EvidenceMsg_UpdateParamsMixin125","parameters":[{"description":"MsgUpdateParams is the Msg/UpdateParams request type.\n\nSince: cosmos-sdk 0.47","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.slashing.v1beta1.MsgUpdateParams"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.slashing.v1beta1.MsgUpdateParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.staking.v1beta1.Msg/BeginRedelegate":{"post":{"tags":["Msg"],"summary":"BeginRedelegate defines a method for performing a redelegation\nof coins from a delegator and source validator to a destination validator.","operationId":"EvidenceMsg_BeginRedelegate","parameters":[{"description":"MsgBeginRedelegate defines a SDK message for performing a redelegation\nof coins from a delegator and source validator to a destination validator.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.staking.v1beta1.MsgBeginRedelegate"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.staking.v1beta1.MsgBeginRedelegateResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.staking.v1beta1.Msg/CancelUnbondingDelegation":{"post":{"description":"Since: cosmos-sdk 0.46","tags":["Msg"],"summary":"CancelUnbondingDelegation defines a method for performing canceling the unbonding delegation\nand delegate back to previous validator.","operationId":"EvidenceMsg_CancelUnbondingDelegation","parameters":[{"description":"Since: cosmos-sdk 0.46","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.staking.v1beta1.MsgCancelUnbondingDelegation"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.staking.v1beta1.MsgCancelUnbondingDelegationResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.staking.v1beta1.Msg/CreateValidator":{"post":{"tags":["Msg"],"summary":"CreateValidator defines a method for creating a new validator.","operationId":"EvidenceMsg_CreateValidator","parameters":[{"description":"MsgCreateValidator defines a SDK message for creating a new validator.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.staking.v1beta1.MsgCreateValidator"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.staking.v1beta1.MsgCreateValidatorResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.staking.v1beta1.Msg/Delegate":{"post":{"tags":["Msg"],"summary":"Delegate defines a method for performing a delegation of coins\nfrom a delegator to a validator.","operationId":"EvidenceMsg_Delegate","parameters":[{"description":"MsgDelegate defines a SDK message for performing a delegation of coins\nfrom a delegator to a validator.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.staking.v1beta1.MsgDelegate"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.staking.v1beta1.MsgDelegateResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.staking.v1beta1.Msg/EditValidator":{"post":{"tags":["Msg"],"summary":"EditValidator defines a method for editing an existing validator.","operationId":"EvidenceMsg_EditValidator","parameters":[{"description":"MsgEditValidator defines a SDK message for editing an existing validator.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.staking.v1beta1.MsgEditValidator"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.staking.v1beta1.MsgEditValidatorResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.staking.v1beta1.Msg/Undelegate":{"post":{"tags":["Msg"],"summary":"Undelegate defines a method for performing an undelegation from a\ndelegate and a validator.","operationId":"EvidenceMsg_Undelegate","parameters":[{"description":"MsgUndelegate defines a SDK message for performing an undelegation from a\ndelegate and a validator.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.staking.v1beta1.MsgUndelegate"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.staking.v1beta1.MsgUndelegateResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.staking.v1beta1.Msg/UpdateParams":{"post":{"tags":["Msg"],"summary":"UpdateParams defines an operation for updating the x/staking module\nparameters.\nSince: cosmos-sdk 0.47","operationId":"EvidenceMsg_UpdateParamsMixin130","parameters":[{"description":"MsgUpdateParams is the Msg/UpdateParams request type.\n\nSince: cosmos-sdk 0.47","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.staking.v1beta1.MsgUpdateParams"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.staking.v1beta1.MsgUpdateParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.store.streaming.abci.ABCIListenerService/ListenCommit":{"post":{"tags":["ABCIListenerService"],"summary":"ListenCommit is the corresponding endpoint for ABCIListener.ListenCommit","operationId":"EvidenceABCIListenerService_ListenCommit","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.store.streaming.abci.ListenCommitRequest"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.store.streaming.abci.ListenCommitResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.store.streaming.abci.ABCIListenerService/ListenFinalizeBlock":{"post":{"tags":["ABCIListenerService"],"summary":"ListenFinalizeBlock is the corresponding endpoint for ABCIListener.ListenEndBlock","operationId":"EvidenceABCIListenerService_ListenFinalizeBlock","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.store.streaming.abci.ListenFinalizeBlockRequest"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.store.streaming.abci.ListenFinalizeBlockResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.upgrade.v1beta1.Msg/CancelUpgrade":{"post":{"description":"Since: cosmos-sdk 0.46","tags":["Msg"],"summary":"CancelUpgrade is a governance operation for cancelling a previously\napproved software upgrade.","operationId":"EvidenceMsg_CancelUpgrade","parameters":[{"description":"MsgCancelUpgrade is the Msg/CancelUpgrade request type.\n\nSince: cosmos-sdk 0.46","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.upgrade.v1beta1.MsgCancelUpgrade"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.upgrade.v1beta1.MsgCancelUpgradeResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.upgrade.v1beta1.Msg/SoftwareUpgrade":{"post":{"description":"Since: cosmos-sdk 0.46","tags":["Msg"],"summary":"SoftwareUpgrade is a governance operation for initiating a software upgrade.","operationId":"EvidenceMsg_SoftwareUpgrade","parameters":[{"description":"MsgSoftwareUpgrade is the Msg/SoftwareUpgrade request type.\n\nSince: cosmos-sdk 0.46","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.upgrade.v1beta1.MsgSoftwareUpgrade"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.upgrade.v1beta1.MsgSoftwareUpgradeResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.vesting.v1beta1.Msg/CreatePeriodicVestingAccount":{"post":{"description":"Since: cosmos-sdk 0.46","tags":["Msg"],"summary":"CreatePeriodicVestingAccount defines a method that enables creating a\nperiodic vesting account.","operationId":"EvidenceMsg_CreatePeriodicVestingAccount","parameters":[{"description":"MsgCreateVestingAccount defines a message that enables creating a vesting\naccount.\n\nSince: cosmos-sdk 0.46","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.vesting.v1beta1.MsgCreatePeriodicVestingAccount"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.vesting.v1beta1.MsgCreatePeriodicVestingAccountResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.vesting.v1beta1.Msg/CreatePermanentLockedAccount":{"post":{"description":"Since: cosmos-sdk 0.46","tags":["Msg"],"summary":"CreatePermanentLockedAccount defines a method that enables creating a permanent\nlocked account.","operationId":"EvidenceMsg_CreatePermanentLockedAccount","parameters":[{"description":"MsgCreatePermanentLockedAccount defines a message that enables creating a permanent\nlocked account.\n\nSince: cosmos-sdk 0.46","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.vesting.v1beta1.MsgCreatePermanentLockedAccount"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.vesting.v1beta1.MsgCreatePermanentLockedAccountResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.vesting.v1beta1.Msg/CreateVestingAccount":{"post":{"tags":["Msg"],"summary":"CreateVestingAccount defines a method that enables creating a vesting\naccount.","operationId":"EvidenceMsg_CreateVestingAccount","parameters":[{"description":"MsgCreateVestingAccount defines a message that enables creating a vesting\naccount.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.vesting.v1beta1.MsgCreateVestingAccount"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.vesting.v1beta1.MsgCreateVestingAccountResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/auth/v1beta1/account_info/{address}":{"get":{"description":"Since: cosmos-sdk 0.47","tags":["Query"],"summary":"AccountInfo queries account info which is common to all account types.","operationId":"EvidenceQuery_AccountInfo","parameters":[{"type":"string","description":"address is the account address string.","name":"address","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.auth.v1beta1.QueryAccountInfoResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/auth/v1beta1/accounts":{"get":{"description":"When called from another module, this query might consume a high amount of\ngas if the pagination field is incorrectly set.\n\nSince: cosmos-sdk 0.43","tags":["Query"],"summary":"Accounts returns all the existing accounts.","operationId":"EvidenceQuery_Accounts","parameters":[{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.auth.v1beta1.QueryAccountsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/auth/v1beta1/accounts/{address}":{"get":{"tags":["Query"],"summary":"Account returns account details based on address.","operationId":"EvidenceQuery_Account","parameters":[{"type":"string","description":"address defines the address to query for.","name":"address","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.auth.v1beta1.QueryAccountResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/auth/v1beta1/address_by_id/{id}":{"get":{"description":"Since: cosmos-sdk 0.46.2","tags":["Query"],"summary":"AccountAddressByID returns account address based on account number.","operationId":"EvidenceQuery_AccountAddressByID","parameters":[{"type":"string","format":"int64","description":"Deprecated, use account_id instead\n\nid is the account number of the address to be queried. This field\nshould have been an uint64 (like all account numbers), and will be\nupdated to uint64 in a future version of the auth query.","name":"id","in":"path","required":true},{"type":"string","format":"uint64","description":"account_id is the account number of the address to be queried.\n\nSince: cosmos-sdk 0.47","name":"account_id","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.auth.v1beta1.QueryAccountAddressByIDResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/auth/v1beta1/bech32":{"get":{"description":"Since: cosmos-sdk 0.46","tags":["Query"],"summary":"Bech32Prefix queries bech32Prefix","operationId":"EvidenceQuery_Bech32Prefix","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.auth.v1beta1.Bech32PrefixResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/auth/v1beta1/bech32/{address_bytes}":{"get":{"description":"Since: cosmos-sdk 0.46","tags":["Query"],"summary":"AddressBytesToString converts Account Address bytes to string","operationId":"EvidenceQuery_AddressBytesToString","parameters":[{"type":"string","format":"byte","name":"address_bytes","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.auth.v1beta1.AddressBytesToStringResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/auth/v1beta1/bech32/{address_string}":{"get":{"description":"Since: cosmos-sdk 0.46","tags":["Query"],"summary":"AddressStringToBytes converts Address string to bytes","operationId":"EvidenceQuery_AddressStringToBytes","parameters":[{"type":"string","name":"address_string","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.auth.v1beta1.AddressStringToBytesResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/auth/v1beta1/module_accounts":{"get":{"description":"Since: cosmos-sdk 0.46","tags":["Query"],"summary":"ModuleAccounts returns all the existing module accounts.","operationId":"EvidenceQuery_ModuleAccounts","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.auth.v1beta1.QueryModuleAccountsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/auth/v1beta1/module_accounts/{name}":{"get":{"tags":["Query"],"summary":"ModuleAccountByName returns the module account info by module name","operationId":"EvidenceQuery_ModuleAccountByName","parameters":[{"type":"string","name":"name","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.auth.v1beta1.QueryModuleAccountByNameResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/auth/v1beta1/params":{"get":{"tags":["Query"],"summary":"Params queries all parameters.","operationId":"EvidenceQuery_Params","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.auth.v1beta1.QueryParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/authz/v1beta1/grants":{"get":{"tags":["Query"],"summary":"Returns list of `Authorization`, granted to the grantee by the granter.","operationId":"EvidenceQuery_Grants","parameters":[{"type":"string","name":"granter","in":"query"},{"type":"string","name":"grantee","in":"query"},{"type":"string","description":"Optional, msg_type_url, when set, will query only grants matching given msg type.","name":"msg_type_url","in":"query"},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.authz.v1beta1.QueryGrantsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/authz/v1beta1/grants/grantee/{grantee}":{"get":{"description":"Since: cosmos-sdk 0.46","tags":["Query"],"summary":"GranteeGrants returns a list of `GrantAuthorization` by grantee.","operationId":"EvidenceQuery_GranteeGrants","parameters":[{"type":"string","name":"grantee","in":"path","required":true},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.authz.v1beta1.QueryGranteeGrantsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/authz/v1beta1/grants/granter/{granter}":{"get":{"description":"Since: cosmos-sdk 0.46","tags":["Query"],"summary":"GranterGrants returns list of `GrantAuthorization`, granted by granter.","operationId":"EvidenceQuery_GranterGrants","parameters":[{"type":"string","name":"granter","in":"path","required":true},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.authz.v1beta1.QueryGranterGrantsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/bank/v1beta1/balances/{address}":{"get":{"description":"When called from another module, this query might consume a high amount of\ngas if the pagination field is incorrectly set.","tags":["Query"],"summary":"AllBalances queries the balance of all coins for a single account.","operationId":"EvidenceQuery_AllBalances","parameters":[{"type":"string","description":"address is the address to query balances for.","name":"address","in":"path","required":true},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"},{"type":"boolean","description":"resolve_denom is the flag to resolve the denom into a human-readable form from the metadata.\n\nSince: cosmos-sdk 0.50","name":"resolve_denom","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.bank.v1beta1.QueryAllBalancesResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/bank/v1beta1/balances/{address}/by_denom":{"get":{"tags":["Query"],"summary":"Balance queries the balance of a single coin for a single account.","operationId":"EvidenceQuery_Balance","parameters":[{"type":"string","description":"address is the address to query balances for.","name":"address","in":"path","required":true},{"type":"string","description":"denom is the coin denom to query balances for.","name":"denom","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.bank.v1beta1.QueryBalanceResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/bank/v1beta1/denom_owners/{denom}":{"get":{"description":"When called from another module, this query might consume a high amount of\ngas if the pagination field is incorrectly set.\n\nSince: cosmos-sdk 0.46","tags":["Query"],"summary":"DenomOwners queries for all account addresses that own a particular token\ndenomination.","operationId":"EvidenceQuery_DenomOwners","parameters":[{"type":"string","description":"denom defines the coin denomination to query all account holders for.","name":"denom","in":"path","required":true},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.bank.v1beta1.QueryDenomOwnersResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/bank/v1beta1/denom_owners_by_query":{"get":{"description":"Since: cosmos-sdk 0.50.3","tags":["Query"],"summary":"DenomOwnersByQuery queries for all account addresses that own a particular token\ndenomination.","operationId":"EvidenceQuery_DenomOwnersByQuery","parameters":[{"type":"string","description":"denom defines the coin denomination to query all account holders for.","name":"denom","in":"query"},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.bank.v1beta1.QueryDenomOwnersByQueryResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/bank/v1beta1/denoms_metadata":{"get":{"tags":["Query"],"summary":"DenomsMetadata queries the client metadata for all registered coin\ndenominations.","operationId":"EvidenceQuery_DenomsMetadata","parameters":[{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.bank.v1beta1.QueryDenomsMetadataResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/bank/v1beta1/denoms_metadata/{denom}":{"get":{"tags":["Query"],"summary":"DenomMetadata queries the client metadata of a given coin denomination.","operationId":"EvidenceQuery_DenomMetadata","parameters":[{"type":"string","description":"denom is the coin denom to query the metadata for.","name":"denom","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.bank.v1beta1.QueryDenomMetadataResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/bank/v1beta1/denoms_metadata_by_query_string":{"get":{"tags":["Query"],"summary":"DenomMetadataByQueryString queries the client metadata of a given coin denomination.","operationId":"EvidenceQuery_DenomMetadataByQueryString","parameters":[{"type":"string","description":"denom is the coin denom to query the metadata for.","name":"denom","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.bank.v1beta1.QueryDenomMetadataByQueryStringResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/bank/v1beta1/params":{"get":{"tags":["Query"],"summary":"Params queries the parameters of x/bank module.","operationId":"EvidenceQuery_ParamsMixin59","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.bank.v1beta1.QueryParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/bank/v1beta1/send_enabled":{"get":{"description":"This query only returns denominations that have specific SendEnabled settings.\nAny denomination that does not have a specific setting will use the default\nparams.default_send_enabled, and will not be returned by this query.\n\nSince: cosmos-sdk 0.47","tags":["Query"],"summary":"SendEnabled queries for SendEnabled entries.","operationId":"EvidenceQuery_SendEnabled","parameters":[{"type":"array","items":{"type":"string"},"collectionFormat":"multi","description":"denoms is the specific denoms you want look up. Leave empty to get all entries.","name":"denoms","in":"query"},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.bank.v1beta1.QuerySendEnabledResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/bank/v1beta1/spendable_balances/{address}":{"get":{"description":"When called from another module, this query might consume a high amount of\ngas if the pagination field is incorrectly set.\n\nSince: cosmos-sdk 0.46","tags":["Query"],"summary":"SpendableBalances queries the spendable balance of all coins for a single\naccount.","operationId":"EvidenceQuery_SpendableBalances","parameters":[{"type":"string","description":"address is the address to query spendable balances for.","name":"address","in":"path","required":true},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.bank.v1beta1.QuerySpendableBalancesResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/bank/v1beta1/spendable_balances/{address}/by_denom":{"get":{"description":"When called from another module, this query might consume a high amount of\ngas if the pagination field is incorrectly set.\n\nSince: cosmos-sdk 0.47","tags":["Query"],"summary":"SpendableBalanceByDenom queries the spendable balance of a single denom for\na single account.","operationId":"EvidenceQuery_SpendableBalanceByDenom","parameters":[{"type":"string","description":"address is the address to query balances for.","name":"address","in":"path","required":true},{"type":"string","description":"denom is the coin denom to query balances for.","name":"denom","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.bank.v1beta1.QuerySpendableBalanceByDenomResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/bank/v1beta1/supply":{"get":{"description":"When called from another module, this query might consume a high amount of\ngas if the pagination field is incorrectly set.","tags":["Query"],"summary":"TotalSupply queries the total supply of all coins.","operationId":"EvidenceQuery_TotalSupply","parameters":[{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.bank.v1beta1.QueryTotalSupplyResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/bank/v1beta1/supply/by_denom":{"get":{"description":"When called from another module, this query might consume a high amount of\ngas if the pagination field is incorrectly set.","tags":["Query"],"summary":"SupplyOf queries the supply of a single coin.","operationId":"EvidenceQuery_SupplyOf","parameters":[{"type":"string","description":"denom is the coin denom to query balances for.","name":"denom","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.bank.v1beta1.QuerySupplyOfResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/base/node/v1beta1/config":{"get":{"tags":["Service"],"summary":"Config queries for the operator configuration.","operationId":"EvidenceService_Config","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.base.node.v1beta1.ConfigResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/base/node/v1beta1/status":{"get":{"tags":["Service"],"summary":"Status queries for the node status.","operationId":"EvidenceService_Status","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.base.node.v1beta1.StatusResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/base/reflection/v1beta1/app_descriptor/authn":{"get":{"tags":["ReflectionService"],"summary":"GetAuthnDescriptor returns information on how to authenticate transactions in the application\nNOTE: this RPC is still experimental and might be subject to breaking changes or removal in\nfuture releases of the cosmos-sdk.","operationId":"EvidenceReflectionService_GetAuthnDescriptor","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.base.reflection.v2alpha1.GetAuthnDescriptorResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/base/reflection/v1beta1/app_descriptor/chain":{"get":{"tags":["ReflectionService"],"summary":"GetChainDescriptor returns the description of the chain","operationId":"EvidenceReflectionService_GetChainDescriptor","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.base.reflection.v2alpha1.GetChainDescriptorResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/base/reflection/v1beta1/app_descriptor/codec":{"get":{"tags":["ReflectionService"],"summary":"GetCodecDescriptor returns the descriptor of the codec of the application","operationId":"EvidenceReflectionService_GetCodecDescriptor","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.base.reflection.v2alpha1.GetCodecDescriptorResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/base/reflection/v1beta1/app_descriptor/configuration":{"get":{"tags":["ReflectionService"],"summary":"GetConfigurationDescriptor returns the descriptor for the sdk.Config of the application","operationId":"EvidenceReflectionService_GetConfigurationDescriptor","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.base.reflection.v2alpha1.GetConfigurationDescriptorResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/base/reflection/v1beta1/app_descriptor/query_services":{"get":{"tags":["ReflectionService"],"summary":"GetQueryServicesDescriptor returns the available gRPC queryable services of the application","operationId":"EvidenceReflectionService_GetQueryServicesDescriptor","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.base.reflection.v2alpha1.GetQueryServicesDescriptorResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/base/reflection/v1beta1/app_descriptor/tx_descriptor":{"get":{"tags":["ReflectionService"],"summary":"GetTxDescriptor returns information on the used transaction object and available msgs that can be used","operationId":"EvidenceReflectionService_GetTxDescriptor","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.base.reflection.v2alpha1.GetTxDescriptorResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/base/reflection/v1beta1/interfaces":{"get":{"tags":["ReflectionService"],"summary":"ListAllInterfaces lists all the interfaces registered in the interface\nregistry.","operationId":"EvidenceReflectionService_ListAllInterfaces","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.base.reflection.v1beta1.ListAllInterfacesResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/base/reflection/v1beta1/interfaces/{interface_name}/implementations":{"get":{"tags":["ReflectionService"],"summary":"ListImplementations list all the concrete types that implement a given\ninterface.","operationId":"EvidenceReflectionService_ListImplementations","parameters":[{"type":"string","description":"interface_name defines the interface to query the implementations for.","name":"interface_name","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.base.reflection.v1beta1.ListImplementationsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/base/tendermint/v1beta1/abci_query":{"get":{"description":"Since: cosmos-sdk 0.46","tags":["Service"],"summary":"ABCIQuery defines a query handler that supports ABCI queries directly to the\napplication, bypassing Tendermint completely. The ABCI query must contain\na valid and supported path, including app, custom, p2p, and store.","operationId":"EvidenceService_ABCIQuery","parameters":[{"type":"string","format":"byte","name":"data","in":"query"},{"type":"string","name":"path","in":"query"},{"type":"string","format":"int64","name":"height","in":"query"},{"type":"boolean","name":"prove","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.base.tendermint.v1beta1.ABCIQueryResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/base/tendermint/v1beta1/blocks/latest":{"get":{"tags":["Service"],"summary":"GetLatestBlock returns the latest block.","operationId":"EvidenceService_GetLatestBlock","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.base.tendermint.v1beta1.GetLatestBlockResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/base/tendermint/v1beta1/blocks/{height}":{"get":{"tags":["Service"],"summary":"GetBlockByHeight queries block for given height.","operationId":"EvidenceService_GetBlockByHeight","parameters":[{"type":"string","format":"int64","name":"height","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.base.tendermint.v1beta1.GetBlockByHeightResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/base/tendermint/v1beta1/node_info":{"get":{"tags":["Service"],"summary":"GetNodeInfo queries the current node info.","operationId":"EvidenceService_GetNodeInfo","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.base.tendermint.v1beta1.GetNodeInfoResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/base/tendermint/v1beta1/syncing":{"get":{"tags":["Service"],"summary":"GetSyncing queries node syncing.","operationId":"EvidenceService_GetSyncing","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.base.tendermint.v1beta1.GetSyncingResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/base/tendermint/v1beta1/validatorsets/latest":{"get":{"tags":["Service"],"summary":"GetLatestValidatorSet queries latest validator-set.","operationId":"EvidenceService_GetLatestValidatorSet","parameters":[{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.base.tendermint.v1beta1.GetLatestValidatorSetResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/base/tendermint/v1beta1/validatorsets/{height}":{"get":{"tags":["Service"],"summary":"GetValidatorSetByHeight queries validator-set at a given height.","operationId":"EvidenceService_GetValidatorSetByHeight","parameters":[{"type":"string","format":"int64","name":"height","in":"path","required":true},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.base.tendermint.v1beta1.GetValidatorSetByHeightResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/circuit/v1/accounts":{"get":{"tags":["Query"],"summary":"Account returns account permissions.","operationId":"EvidenceQuery_AccountsMixin69","parameters":[{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.circuit.v1.AccountsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/circuit/v1/accounts/{address}":{"get":{"tags":["Query"],"summary":"Account returns account permissions.","operationId":"EvidenceQuery_AccountMixin69","parameters":[{"type":"string","name":"address","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.circuit.v1.AccountResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/circuit/v1/disable_list":{"get":{"tags":["Query"],"summary":"DisabledList returns a list of disabled message urls","operationId":"EvidenceQuery_DisabledList","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.circuit.v1.DisabledListResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/consensus/v1/params":{"get":{"tags":["Query"],"summary":"Params queries the parameters of x/consensus module.","operationId":"EvidenceQuery_ParamsMixin72","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.consensus.v1.QueryParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/distribution/v1beta1/community_pool":{"get":{"tags":["Query"],"summary":"CommunityPool queries the community pool coins.","operationId":"EvidenceQuery_CommunityPool","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.distribution.v1beta1.QueryCommunityPoolResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/distribution/v1beta1/delegators/{delegator_address}/rewards":{"get":{"tags":["Query"],"summary":"DelegationTotalRewards queries the total rewards accrued by each\nvalidator.","operationId":"EvidenceQuery_DelegationTotalRewards","parameters":[{"type":"string","description":"delegator_address defines the delegator address to query for.","name":"delegator_address","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.distribution.v1beta1.QueryDelegationTotalRewardsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/distribution/v1beta1/delegators/{delegator_address}/rewards/{validator_address}":{"get":{"tags":["Query"],"summary":"DelegationRewards queries the total rewards accrued by a delegation.","operationId":"EvidenceQuery_DelegationRewards","parameters":[{"type":"string","description":"delegator_address defines the delegator address to query for.","name":"delegator_address","in":"path","required":true},{"type":"string","description":"validator_address defines the validator address to query for.","name":"validator_address","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.distribution.v1beta1.QueryDelegationRewardsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/distribution/v1beta1/delegators/{delegator_address}/validators":{"get":{"tags":["Query"],"summary":"DelegatorValidators queries the validators of a delegator.","operationId":"EvidenceQuery_DelegatorValidators","parameters":[{"type":"string","description":"delegator_address defines the delegator address to query for.","name":"delegator_address","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.distribution.v1beta1.QueryDelegatorValidatorsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/distribution/v1beta1/delegators/{delegator_address}/withdraw_address":{"get":{"tags":["Query"],"summary":"DelegatorWithdrawAddress queries withdraw address of a delegator.","operationId":"EvidenceQuery_DelegatorWithdrawAddress","parameters":[{"type":"string","description":"delegator_address defines the delegator address to query for.","name":"delegator_address","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.distribution.v1beta1.QueryDelegatorWithdrawAddressResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/distribution/v1beta1/params":{"get":{"tags":["Query"],"summary":"Params queries params of the distribution module.","operationId":"EvidenceQuery_ParamsMixin85","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.distribution.v1beta1.QueryParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/distribution/v1beta1/validators/{validator_address}":{"get":{"tags":["Query"],"summary":"ValidatorDistributionInfo queries validator commission and self-delegation rewards for validator","operationId":"EvidenceQuery_ValidatorDistributionInfo","parameters":[{"type":"string","description":"validator_address defines the validator address to query for.","name":"validator_address","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.distribution.v1beta1.QueryValidatorDistributionInfoResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/distribution/v1beta1/validators/{validator_address}/commission":{"get":{"tags":["Query"],"summary":"ValidatorCommission queries accumulated commission for a validator.","operationId":"EvidenceQuery_ValidatorCommission","parameters":[{"type":"string","description":"validator_address defines the validator address to query for.","name":"validator_address","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.distribution.v1beta1.QueryValidatorCommissionResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/distribution/v1beta1/validators/{validator_address}/outstanding_rewards":{"get":{"tags":["Query"],"summary":"ValidatorOutstandingRewards queries rewards of a validator address.","operationId":"EvidenceQuery_ValidatorOutstandingRewards","parameters":[{"type":"string","description":"validator_address defines the validator address to query for.","name":"validator_address","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.distribution.v1beta1.QueryValidatorOutstandingRewardsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/distribution/v1beta1/validators/{validator_address}/slashes":{"get":{"tags":["Query"],"summary":"ValidatorSlashes queries slash events of a validator.","operationId":"EvidenceQuery_ValidatorSlashes","parameters":[{"type":"string","description":"validator_address defines the validator address to query for.","name":"validator_address","in":"path","required":true},{"type":"string","format":"uint64","description":"starting_height defines the optional starting height to query the slashes.","name":"starting_height","in":"query"},{"type":"string","format":"uint64","description":"starting_height defines the optional ending height to query the slashes.","name":"ending_height","in":"query"},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.distribution.v1beta1.QueryValidatorSlashesResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/evidence/v1beta1/evidence":{"get":{"tags":["Query"],"summary":"AllEvidence queries all evidence.","operationId":"EvidenceQuery_AllEvidence","parameters":[{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.evidence.v1beta1.QueryAllEvidenceResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/evidence/v1beta1/evidence/{hash}":{"get":{"tags":["Query"],"summary":"Evidence queries evidence based on evidence hash.","operationId":"EvidenceQuery_Evidence","parameters":[{"type":"string","description":"hash defines the evidence hash of the requested evidence.\n\nSince: cosmos-sdk 0.47","name":"hash","in":"path","required":true},{"type":"string","format":"byte","description":"evidence_hash defines the hash of the requested evidence.\nDeprecated: Use hash, a HEX encoded string, instead.","name":"evidence_hash","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.evidence.v1beta1.QueryEvidenceResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/feegrant/v1beta1/allowance/{granter}/{grantee}":{"get":{"tags":["Query"],"summary":"Allowance returns granted allwance to the grantee by the granter.","operationId":"EvidenceQuery_Allowance","parameters":[{"type":"string","description":"granter is the address of the user granting an allowance of their funds.","name":"granter","in":"path","required":true},{"type":"string","description":"grantee is the address of the user being granted an allowance of another user's funds.","name":"grantee","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.feegrant.v1beta1.QueryAllowanceResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/feegrant/v1beta1/allowances/{grantee}":{"get":{"tags":["Query"],"summary":"Allowances returns all the grants for the given grantee address.","operationId":"EvidenceQuery_Allowances","parameters":[{"type":"string","name":"grantee","in":"path","required":true},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.feegrant.v1beta1.QueryAllowancesResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/feegrant/v1beta1/issued/{granter}":{"get":{"description":"Since: cosmos-sdk 0.46","tags":["Query"],"summary":"AllowancesByGranter returns all the grants given by an address","operationId":"EvidenceQuery_AllowancesByGranter","parameters":[{"type":"string","name":"granter","in":"path","required":true},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.feegrant.v1beta1.QueryAllowancesByGranterResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/gov/v1/constitution":{"get":{"tags":["Query"],"summary":"Constitution queries the chain's constitution.","operationId":"EvidenceQuery_Constitution","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.gov.v1.QueryConstitutionResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/gov/v1/params/{params_type}":{"get":{"tags":["Query"],"summary":"Params queries all parameters of the gov module.","operationId":"EvidenceQuery_ParamsMixin98","parameters":[{"type":"string","description":"params_type defines which parameters to query for, can be one of \"voting\",\n\"tallying\" or \"deposit\".","name":"params_type","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.gov.v1.QueryParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/gov/v1/proposals":{"get":{"tags":["Query"],"summary":"Proposals queries all proposals based on given status.","operationId":"EvidenceQuery_Proposals","parameters":[{"enum":["PROPOSAL_STATUS_UNSPECIFIED","PROPOSAL_STATUS_DEPOSIT_PERIOD","PROPOSAL_STATUS_VOTING_PERIOD","PROPOSAL_STATUS_PASSED","PROPOSAL_STATUS_REJECTED","PROPOSAL_STATUS_FAILED"],"type":"string","default":"PROPOSAL_STATUS_UNSPECIFIED","description":"proposal_status defines the status of the proposals.\n\n - PROPOSAL_STATUS_UNSPECIFIED: PROPOSAL_STATUS_UNSPECIFIED defines the default proposal status.\n - PROPOSAL_STATUS_DEPOSIT_PERIOD: PROPOSAL_STATUS_DEPOSIT_PERIOD defines a proposal status during the deposit\nperiod.\n - PROPOSAL_STATUS_VOTING_PERIOD: PROPOSAL_STATUS_VOTING_PERIOD defines a proposal status during the voting\nperiod.\n - PROPOSAL_STATUS_PASSED: PROPOSAL_STATUS_PASSED defines a proposal status of a proposal that has\npassed.\n - PROPOSAL_STATUS_REJECTED: PROPOSAL_STATUS_REJECTED defines a proposal status of a proposal that has\nbeen rejected.\n - PROPOSAL_STATUS_FAILED: PROPOSAL_STATUS_FAILED defines a proposal status of a proposal that has\nfailed.","name":"proposal_status","in":"query"},{"type":"string","description":"voter defines the voter address for the proposals.","name":"voter","in":"query"},{"type":"string","description":"depositor defines the deposit addresses from the proposals.","name":"depositor","in":"query"},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.gov.v1.QueryProposalsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/gov/v1/proposals/{proposal_id}":{"get":{"tags":["Query"],"summary":"Proposal queries proposal details based on ProposalID.","operationId":"EvidenceQuery_Proposal","parameters":[{"type":"string","format":"uint64","description":"proposal_id defines the unique id of the proposal.","name":"proposal_id","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.gov.v1.QueryProposalResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/gov/v1/proposals/{proposal_id}/deposits":{"get":{"tags":["Query"],"summary":"Deposits queries all deposits of a single proposal.","operationId":"EvidenceQuery_Deposits","parameters":[{"type":"string","format":"uint64","description":"proposal_id defines the unique id of the proposal.","name":"proposal_id","in":"path","required":true},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.gov.v1.QueryDepositsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/gov/v1/proposals/{proposal_id}/deposits/{depositor}":{"get":{"tags":["Query"],"summary":"Deposit queries single deposit information based on proposalID, depositAddr.","operationId":"EvidenceQuery_Deposit","parameters":[{"type":"string","format":"uint64","description":"proposal_id defines the unique id of the proposal.","name":"proposal_id","in":"path","required":true},{"type":"string","description":"depositor defines the deposit addresses from the proposals.","name":"depositor","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.gov.v1.QueryDepositResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/gov/v1/proposals/{proposal_id}/tally":{"get":{"tags":["Query"],"summary":"TallyResult queries the tally of a proposal vote.","operationId":"EvidenceQuery_TallyResult","parameters":[{"type":"string","format":"uint64","description":"proposal_id defines the unique id of the proposal.","name":"proposal_id","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.gov.v1.QueryTallyResultResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/gov/v1/proposals/{proposal_id}/votes":{"get":{"tags":["Query"],"summary":"Votes queries votes of a given proposal.","operationId":"EvidenceQuery_Votes","parameters":[{"type":"string","format":"uint64","description":"proposal_id defines the unique id of the proposal.","name":"proposal_id","in":"path","required":true},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.gov.v1.QueryVotesResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/gov/v1/proposals/{proposal_id}/votes/{voter}":{"get":{"tags":["Query"],"summary":"Vote queries voted information based on proposalID, voterAddr.","operationId":"EvidenceQuery_Vote","parameters":[{"type":"string","format":"uint64","description":"proposal_id defines the unique id of the proposal.","name":"proposal_id","in":"path","required":true},{"type":"string","description":"voter defines the voter address for the proposals.","name":"voter","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.gov.v1.QueryVoteResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/gov/v1beta1/params/{params_type}":{"get":{"tags":["Query"],"summary":"Params queries all parameters of the gov module.","operationId":"EvidenceQuery_ParamsMixin102","parameters":[{"type":"string","description":"params_type defines which parameters to query for, can be one of \"voting\",\n\"tallying\" or \"deposit\".","name":"params_type","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.gov.v1beta1.QueryParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/gov/v1beta1/proposals":{"get":{"tags":["Query"],"summary":"Proposals queries all proposals based on given status.","operationId":"EvidenceQuery_ProposalsMixin102","parameters":[{"enum":["PROPOSAL_STATUS_UNSPECIFIED","PROPOSAL_STATUS_DEPOSIT_PERIOD","PROPOSAL_STATUS_VOTING_PERIOD","PROPOSAL_STATUS_PASSED","PROPOSAL_STATUS_REJECTED","PROPOSAL_STATUS_FAILED"],"type":"string","default":"PROPOSAL_STATUS_UNSPECIFIED","description":"proposal_status defines the status of the proposals.\n\n - PROPOSAL_STATUS_UNSPECIFIED: PROPOSAL_STATUS_UNSPECIFIED defines the default proposal status.\n - PROPOSAL_STATUS_DEPOSIT_PERIOD: PROPOSAL_STATUS_DEPOSIT_PERIOD defines a proposal status during the deposit\nperiod.\n - PROPOSAL_STATUS_VOTING_PERIOD: PROPOSAL_STATUS_VOTING_PERIOD defines a proposal status during the voting\nperiod.\n - PROPOSAL_STATUS_PASSED: PROPOSAL_STATUS_PASSED defines a proposal status of a proposal that has\npassed.\n - PROPOSAL_STATUS_REJECTED: PROPOSAL_STATUS_REJECTED defines a proposal status of a proposal that has\nbeen rejected.\n - PROPOSAL_STATUS_FAILED: PROPOSAL_STATUS_FAILED defines a proposal status of a proposal that has\nfailed.","name":"proposal_status","in":"query"},{"type":"string","description":"voter defines the voter address for the proposals.","name":"voter","in":"query"},{"type":"string","description":"depositor defines the deposit addresses from the proposals.","name":"depositor","in":"query"},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.gov.v1beta1.QueryProposalsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/gov/v1beta1/proposals/{proposal_id}":{"get":{"tags":["Query"],"summary":"Proposal queries proposal details based on ProposalID.","operationId":"EvidenceQuery_ProposalMixin102","parameters":[{"type":"string","format":"uint64","description":"proposal_id defines the unique id of the proposal.","name":"proposal_id","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.gov.v1beta1.QueryProposalResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/gov/v1beta1/proposals/{proposal_id}/deposits":{"get":{"tags":["Query"],"summary":"Deposits queries all deposits of a single proposal.","operationId":"EvidenceQuery_DepositsMixin102","parameters":[{"type":"string","format":"uint64","description":"proposal_id defines the unique id of the proposal.","name":"proposal_id","in":"path","required":true},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.gov.v1beta1.QueryDepositsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/gov/v1beta1/proposals/{proposal_id}/deposits/{depositor}":{"get":{"tags":["Query"],"summary":"Deposit queries single deposit information based on proposalID, depositor address.","operationId":"EvidenceQuery_DepositMixin102","parameters":[{"type":"string","format":"uint64","description":"proposal_id defines the unique id of the proposal.","name":"proposal_id","in":"path","required":true},{"type":"string","description":"depositor defines the deposit addresses from the proposals.","name":"depositor","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.gov.v1beta1.QueryDepositResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/gov/v1beta1/proposals/{proposal_id}/tally":{"get":{"tags":["Query"],"summary":"TallyResult queries the tally of a proposal vote.","operationId":"EvidenceQuery_TallyResultMixin102","parameters":[{"type":"string","format":"uint64","description":"proposal_id defines the unique id of the proposal.","name":"proposal_id","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.gov.v1beta1.QueryTallyResultResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/gov/v1beta1/proposals/{proposal_id}/votes":{"get":{"tags":["Query"],"summary":"Votes queries votes of a given proposal.","operationId":"EvidenceQuery_VotesMixin102","parameters":[{"type":"string","format":"uint64","description":"proposal_id defines the unique id of the proposal.","name":"proposal_id","in":"path","required":true},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.gov.v1beta1.QueryVotesResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/gov/v1beta1/proposals/{proposal_id}/votes/{voter}":{"get":{"tags":["Query"],"summary":"Vote queries voted information based on proposalID, voterAddr.","operationId":"EvidenceQuery_VoteMixin102","parameters":[{"type":"string","format":"uint64","description":"proposal_id defines the unique id of the proposal.","name":"proposal_id","in":"path","required":true},{"type":"string","description":"voter defines the voter address for the proposals.","name":"voter","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.gov.v1beta1.QueryVoteResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/group/v1/group_info/{group_id}":{"get":{"tags":["Query"],"summary":"GroupInfo queries group info based on group id.","operationId":"EvidenceQuery_GroupInfo","parameters":[{"type":"string","format":"uint64","description":"group_id is the unique ID of the group.","name":"group_id","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.group.v1.QueryGroupInfoResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/group/v1/group_members/{group_id}":{"get":{"tags":["Query"],"summary":"GroupMembers queries members of a group by group id.","operationId":"EvidenceQuery_GroupMembers","parameters":[{"type":"string","format":"uint64","description":"group_id is the unique ID of the group.","name":"group_id","in":"path","required":true},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.group.v1.QueryGroupMembersResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/group/v1/group_policies_by_admin/{admin}":{"get":{"tags":["Query"],"summary":"GroupPoliciesByAdmin queries group policies by admin address.","operationId":"EvidenceQuery_GroupPoliciesByAdmin","parameters":[{"type":"string","description":"admin is the admin address of the group policy.","name":"admin","in":"path","required":true},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.group.v1.QueryGroupPoliciesByAdminResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/group/v1/group_policies_by_group/{group_id}":{"get":{"tags":["Query"],"summary":"GroupPoliciesByGroup queries group policies by group id.","operationId":"EvidenceQuery_GroupPoliciesByGroup","parameters":[{"type":"string","format":"uint64","description":"group_id is the unique ID of the group policy's group.","name":"group_id","in":"path","required":true},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.group.v1.QueryGroupPoliciesByGroupResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/group/v1/group_policy_info/{address}":{"get":{"tags":["Query"],"summary":"GroupPolicyInfo queries group policy info based on account address of group policy.","operationId":"EvidenceQuery_GroupPolicyInfo","parameters":[{"type":"string","description":"address is the account address of the group policy.","name":"address","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.group.v1.QueryGroupPolicyInfoResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/group/v1/groups":{"get":{"description":"Since: cosmos-sdk 0.47.1","tags":["Query"],"summary":"Groups queries all groups in state.","operationId":"EvidenceQuery_Groups","parameters":[{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.group.v1.QueryGroupsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/group/v1/groups_by_admin/{admin}":{"get":{"tags":["Query"],"summary":"GroupsByAdmin queries groups by admin address.","operationId":"EvidenceQuery_GroupsByAdmin","parameters":[{"type":"string","description":"admin is the account address of a group's admin.","name":"admin","in":"path","required":true},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.group.v1.QueryGroupsByAdminResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/group/v1/groups_by_member/{address}":{"get":{"tags":["Query"],"summary":"GroupsByMember queries groups by member address.","operationId":"EvidenceQuery_GroupsByMember","parameters":[{"type":"string","description":"address is the group member address.","name":"address","in":"path","required":true},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.group.v1.QueryGroupsByMemberResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/group/v1/proposal/{proposal_id}":{"get":{"tags":["Query"],"summary":"Proposal queries a proposal based on proposal id.","operationId":"EvidenceQuery_ProposalMixin106","parameters":[{"type":"string","format":"uint64","description":"proposal_id is the unique ID of a proposal.","name":"proposal_id","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.group.v1.QueryProposalResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/group/v1/proposals/{proposal_id}/tally":{"get":{"tags":["Query"],"summary":"TallyResult returns the tally result of a proposal. If the proposal is\nstill in voting period, then this query computes the current tally state,\nwhich might not be final. On the other hand, if the proposal is final,\nthen it simply returns the `final_tally_result` state stored in the\nproposal itself.","operationId":"EvidenceQuery_TallyResultMixin106","parameters":[{"type":"string","format":"uint64","description":"proposal_id is the unique id of a proposal.","name":"proposal_id","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.group.v1.QueryTallyResultResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/group/v1/proposals_by_group_policy/{address}":{"get":{"tags":["Query"],"summary":"ProposalsByGroupPolicy queries proposals based on account address of group policy.","operationId":"EvidenceQuery_ProposalsByGroupPolicy","parameters":[{"type":"string","description":"address is the account address of the group policy related to proposals.","name":"address","in":"path","required":true},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.group.v1.QueryProposalsByGroupPolicyResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/group/v1/vote_by_proposal_voter/{proposal_id}/{voter}":{"get":{"tags":["Query"],"summary":"VoteByProposalVoter queries a vote by proposal id and voter.","operationId":"EvidenceQuery_VoteByProposalVoter","parameters":[{"type":"string","format":"uint64","description":"proposal_id is the unique ID of a proposal.","name":"proposal_id","in":"path","required":true},{"type":"string","description":"voter is a proposal voter account address.","name":"voter","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.group.v1.QueryVoteByProposalVoterResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/group/v1/votes_by_proposal/{proposal_id}":{"get":{"tags":["Query"],"summary":"VotesByProposal queries a vote by proposal id.","operationId":"EvidenceQuery_VotesByProposal","parameters":[{"type":"string","format":"uint64","description":"proposal_id is the unique ID of a proposal.","name":"proposal_id","in":"path","required":true},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.group.v1.QueryVotesByProposalResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/group/v1/votes_by_voter/{voter}":{"get":{"tags":["Query"],"summary":"VotesByVoter queries a vote by voter.","operationId":"EvidenceQuery_VotesByVoter","parameters":[{"type":"string","description":"voter is a proposal voter account address.","name":"voter","in":"path","required":true},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.group.v1.QueryVotesByVoterResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/mint/v1beta1/annual_provisions":{"get":{"tags":["Query"],"summary":"AnnualProvisions current minting annual provisions value.","operationId":"EvidenceQuery_AnnualProvisions","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.mint.v1beta1.QueryAnnualProvisionsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/mint/v1beta1/inflation":{"get":{"tags":["Query"],"summary":"Inflation returns the current minting inflation value.","operationId":"EvidenceQuery_Inflation","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.mint.v1beta1.QueryInflationResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/mint/v1beta1/params":{"get":{"tags":["Query"],"summary":"Params returns the total set of minting parameters.","operationId":"EvidenceQuery_ParamsMixin111","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.mint.v1beta1.QueryParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/nft/v1beta1/balance/{owner}/{class_id}":{"get":{"tags":["Query"],"summary":"Balance queries the number of NFTs of a given class owned by the owner, same as balanceOf in ERC721","operationId":"EvidenceQuery_BalanceMixin117","parameters":[{"type":"string","description":"owner is the owner address of the nft","name":"owner","in":"path","required":true},{"type":"string","description":"class_id associated with the nft","name":"class_id","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.nft.v1beta1.QueryBalanceResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/nft/v1beta1/classes":{"get":{"tags":["Query"],"summary":"Classes queries all NFT classes","operationId":"EvidenceQuery_Classes","parameters":[{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.nft.v1beta1.QueryClassesResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/nft/v1beta1/classes/{class_id}":{"get":{"tags":["Query"],"summary":"Class queries an NFT class based on its id","operationId":"EvidenceQuery_Class","parameters":[{"type":"string","description":"class_id associated with the nft","name":"class_id","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.nft.v1beta1.QueryClassResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/nft/v1beta1/nfts":{"get":{"tags":["Query"],"summary":"NFTs queries all NFTs of a given class or owner,choose at least one of the two, similar to tokenByIndex in\nERC721Enumerable","operationId":"EvidenceQuery_NFTs","parameters":[{"type":"string","description":"class_id associated with the nft","name":"class_id","in":"query"},{"type":"string","description":"owner is the owner address of the nft","name":"owner","in":"query"},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.nft.v1beta1.QueryNFTsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/nft/v1beta1/nfts/{class_id}/{id}":{"get":{"tags":["Query"],"summary":"NFT queries an NFT based on its class and id.","operationId":"EvidenceQuery_NFT","parameters":[{"type":"string","description":"class_id associated with the nft","name":"class_id","in":"path","required":true},{"type":"string","description":"id is a unique identifier of the NFT","name":"id","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.nft.v1beta1.QueryNFTResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/nft/v1beta1/owner/{class_id}/{id}":{"get":{"tags":["Query"],"summary":"Owner queries the owner of the NFT based on its class and id, same as ownerOf in ERC721","operationId":"EvidenceQuery_Owner","parameters":[{"type":"string","description":"class_id associated with the nft","name":"class_id","in":"path","required":true},{"type":"string","description":"id is a unique identifier of the NFT","name":"id","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.nft.v1beta1.QueryOwnerResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/nft/v1beta1/supply/{class_id}":{"get":{"tags":["Query"],"summary":"Supply queries the number of NFTs from the given class, same as totalSupply of ERC721.","operationId":"EvidenceQuery_Supply","parameters":[{"type":"string","description":"class_id associated with the nft","name":"class_id","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.nft.v1beta1.QuerySupplyResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/params/v1beta1/params":{"get":{"tags":["Query"],"summary":"Params queries a specific parameter of a module, given its subspace and\nkey.","operationId":"EvidenceQuery_ParamsMixin120","parameters":[{"type":"string","description":"subspace defines the module to query the parameter for.","name":"subspace","in":"query"},{"type":"string","description":"key defines the key of the parameter in the subspace.","name":"key","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.params.v1beta1.QueryParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/params/v1beta1/subspaces":{"get":{"description":"Since: cosmos-sdk 0.46","tags":["Query"],"summary":"Subspaces queries for all registered subspaces and all keys for a subspace.","operationId":"EvidenceQuery_Subspaces","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.params.v1beta1.QuerySubspacesResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/slashing/v1beta1/params":{"get":{"tags":["Query"],"summary":"Params queries the parameters of slashing module","operationId":"EvidenceQuery_ParamsMixin123","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.slashing.v1beta1.QueryParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/slashing/v1beta1/signing_infos":{"get":{"tags":["Query"],"summary":"SigningInfos queries signing info of all validators","operationId":"EvidenceQuery_SigningInfos","parameters":[{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.slashing.v1beta1.QuerySigningInfosResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/slashing/v1beta1/signing_infos/{cons_address}":{"get":{"tags":["Query"],"summary":"SigningInfo queries the signing info of given cons address","operationId":"EvidenceQuery_SigningInfo","parameters":[{"type":"string","description":"cons_address is the address to query signing info of","name":"cons_address","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.slashing.v1beta1.QuerySigningInfoResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/staking/v1beta1/delegations/{delegator_addr}":{"get":{"description":"When called from another module, this query might consume a high amount of\ngas if the pagination field is incorrectly set.","tags":["Query"],"summary":"DelegatorDelegations queries all delegations of a given delegator address.","operationId":"EvidenceQuery_DelegatorDelegations","parameters":[{"type":"string","description":"delegator_addr defines the delegator address to query for.","name":"delegator_addr","in":"path","required":true},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.staking.v1beta1.QueryDelegatorDelegationsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/staking/v1beta1/delegators/{delegator_addr}/redelegations":{"get":{"description":"When called from another module, this query might consume a high amount of\ngas if the pagination field is incorrectly set.","tags":["Query"],"summary":"Redelegations queries redelegations of given address.","operationId":"EvidenceQuery_Redelegations","parameters":[{"type":"string","description":"delegator_addr defines the delegator address to query for.","name":"delegator_addr","in":"path","required":true},{"type":"string","description":"src_validator_addr defines the validator address to redelegate from.","name":"src_validator_addr","in":"query"},{"type":"string","description":"dst_validator_addr defines the validator address to redelegate to.","name":"dst_validator_addr","in":"query"},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.staking.v1beta1.QueryRedelegationsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/staking/v1beta1/delegators/{delegator_addr}/unbonding_delegations":{"get":{"description":"When called from another module, this query might consume a high amount of\ngas if the pagination field is incorrectly set.","tags":["Query"],"summary":"DelegatorUnbondingDelegations queries all unbonding delegations of a given\ndelegator address.","operationId":"EvidenceQuery_DelegatorUnbondingDelegations","parameters":[{"type":"string","description":"delegator_addr defines the delegator address to query for.","name":"delegator_addr","in":"path","required":true},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.staking.v1beta1.QueryDelegatorUnbondingDelegationsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/staking/v1beta1/delegators/{delegator_addr}/validators":{"get":{"description":"When called from another module, this query might consume a high amount of\ngas if the pagination field is incorrectly set.","tags":["Query"],"summary":"DelegatorValidators queries all validators info for given delegator\naddress.","operationId":"EvidenceQuery_DelegatorValidatorsMixin128","parameters":[{"type":"string","description":"delegator_addr defines the delegator address to query for.","name":"delegator_addr","in":"path","required":true},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.staking.v1beta1.QueryDelegatorValidatorsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/staking/v1beta1/delegators/{delegator_addr}/validators/{validator_addr}":{"get":{"tags":["Query"],"summary":"DelegatorValidator queries validator info for given delegator validator\npair.","operationId":"EvidenceQuery_DelegatorValidator","parameters":[{"type":"string","description":"delegator_addr defines the delegator address to query for.","name":"delegator_addr","in":"path","required":true},{"type":"string","description":"validator_addr defines the validator address to query for.","name":"validator_addr","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.staking.v1beta1.QueryDelegatorValidatorResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/staking/v1beta1/historical_info/{height}":{"get":{"tags":["Query"],"summary":"HistoricalInfo queries the historical info for given height.","operationId":"EvidenceQuery_HistoricalInfo","parameters":[{"type":"string","format":"int64","description":"height defines at which height to query the historical info.","name":"height","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.staking.v1beta1.QueryHistoricalInfoResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/staking/v1beta1/params":{"get":{"tags":["Query"],"summary":"Parameters queries the staking parameters.","operationId":"EvidenceQuery_ParamsMixin128","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.staking.v1beta1.QueryParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/staking/v1beta1/pool":{"get":{"tags":["Query"],"summary":"Pool queries the pool info.","operationId":"EvidenceQuery_Pool","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.staking.v1beta1.QueryPoolResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/staking/v1beta1/validators":{"get":{"description":"When called from another module, this query might consume a high amount of\ngas if the pagination field is incorrectly set.","tags":["Query"],"summary":"Validators queries all validators that match the given status.","operationId":"EvidenceQuery_Validators","parameters":[{"type":"string","description":"status enables to query for validators matching a given status.","name":"status","in":"query"},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.staking.v1beta1.QueryValidatorsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/staking/v1beta1/validators/{validator_addr}":{"get":{"tags":["Query"],"summary":"Validator queries validator info for given validator address.","operationId":"EvidenceQuery_Validator","parameters":[{"type":"string","description":"validator_addr defines the validator address to query for.","name":"validator_addr","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.staking.v1beta1.QueryValidatorResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/staking/v1beta1/validators/{validator_addr}/delegations":{"get":{"description":"When called from another module, this query might consume a high amount of\ngas if the pagination field is incorrectly set.","tags":["Query"],"summary":"ValidatorDelegations queries delegate info for given validator.","operationId":"EvidenceQuery_ValidatorDelegations","parameters":[{"type":"string","description":"validator_addr defines the validator address to query for.","name":"validator_addr","in":"path","required":true},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.staking.v1beta1.QueryValidatorDelegationsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/staking/v1beta1/validators/{validator_addr}/delegations/{delegator_addr}":{"get":{"tags":["Query"],"summary":"Delegation queries delegate info for given validator delegator pair.","operationId":"EvidenceQuery_Delegation","parameters":[{"type":"string","description":"validator_addr defines the validator address to query for.","name":"validator_addr","in":"path","required":true},{"type":"string","description":"delegator_addr defines the delegator address to query for.","name":"delegator_addr","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.staking.v1beta1.QueryDelegationResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/staking/v1beta1/validators/{validator_addr}/delegations/{delegator_addr}/unbonding_delegation":{"get":{"tags":["Query"],"summary":"UnbondingDelegation queries unbonding info for given validator delegator\npair.","operationId":"EvidenceQuery_UnbondingDelegation","parameters":[{"type":"string","description":"validator_addr defines the validator address to query for.","name":"validator_addr","in":"path","required":true},{"type":"string","description":"delegator_addr defines the delegator address to query for.","name":"delegator_addr","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.staking.v1beta1.QueryUnbondingDelegationResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/staking/v1beta1/validators/{validator_addr}/unbonding_delegations":{"get":{"description":"When called from another module, this query might consume a high amount of\ngas if the pagination field is incorrectly set.","tags":["Query"],"summary":"ValidatorUnbondingDelegations queries unbonding delegations of a validator.","operationId":"EvidenceQuery_ValidatorUnbondingDelegations","parameters":[{"type":"string","description":"validator_addr defines the validator address to query for.","name":"validator_addr","in":"path","required":true},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.staking.v1beta1.QueryValidatorUnbondingDelegationsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/tx/v1beta1/decode":{"post":{"description":"Since: cosmos-sdk 0.47","tags":["Service"],"summary":"TxDecode decodes the transaction.","operationId":"EvidenceService_TxDecode","parameters":[{"description":"TxDecodeRequest is the request type for the Service.TxDecode\nRPC method.\n\nSince: cosmos-sdk 0.47","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.tx.v1beta1.TxDecodeRequest"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.tx.v1beta1.TxDecodeResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/tx/v1beta1/decode/amino":{"post":{"description":"Since: cosmos-sdk 0.47","tags":["Service"],"summary":"TxDecodeAmino decodes an Amino transaction from encoded bytes to JSON.","operationId":"EvidenceService_TxDecodeAmino","parameters":[{"description":"TxDecodeAminoRequest is the request type for the Service.TxDecodeAmino\nRPC method.\n\nSince: cosmos-sdk 0.47","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.tx.v1beta1.TxDecodeAminoRequest"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.tx.v1beta1.TxDecodeAminoResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/tx/v1beta1/encode":{"post":{"description":"Since: cosmos-sdk 0.47","tags":["Service"],"summary":"TxEncode encodes the transaction.","operationId":"EvidenceService_TxEncode","parameters":[{"description":"TxEncodeRequest is the request type for the Service.TxEncode\nRPC method.\n\nSince: cosmos-sdk 0.47","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.tx.v1beta1.TxEncodeRequest"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.tx.v1beta1.TxEncodeResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/tx/v1beta1/encode/amino":{"post":{"description":"Since: cosmos-sdk 0.47","tags":["Service"],"summary":"TxEncodeAmino encodes an Amino transaction from JSON to encoded bytes.","operationId":"EvidenceService_TxEncodeAmino","parameters":[{"description":"TxEncodeAminoRequest is the request type for the Service.TxEncodeAmino\nRPC method.\n\nSince: cosmos-sdk 0.47","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.tx.v1beta1.TxEncodeAminoRequest"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.tx.v1beta1.TxEncodeAminoResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/tx/v1beta1/simulate":{"post":{"tags":["Service"],"summary":"Simulate simulates executing a transaction for estimating gas usage.","operationId":"EvidenceService_Simulate","parameters":[{"description":"SimulateRequest is the request type for the Service.Simulate\nRPC method.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.tx.v1beta1.SimulateRequest"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.tx.v1beta1.SimulateResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/tx/v1beta1/txs":{"get":{"tags":["Service"],"summary":"GetTxsEvent fetches txs by event.","operationId":"EvidenceService_GetTxsEvent","parameters":[{"type":"array","items":{"type":"string"},"collectionFormat":"multi","description":"events is the list of transaction event type.\nDeprecated post v0.47.x: use query instead, which should contain a valid\nevents query.","name":"events","in":"query"},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"},{"enum":["ORDER_BY_UNSPECIFIED","ORDER_BY_ASC","ORDER_BY_DESC"],"type":"string","default":"ORDER_BY_UNSPECIFIED","description":" - ORDER_BY_UNSPECIFIED: ORDER_BY_UNSPECIFIED specifies an unknown sorting order. OrderBy defaults\nto ASC in this case.\n - ORDER_BY_ASC: ORDER_BY_ASC defines ascending order\n - ORDER_BY_DESC: ORDER_BY_DESC defines descending order","name":"order_by","in":"query"},{"type":"string","format":"uint64","description":"page is the page number to query, starts at 1. If not provided, will\ndefault to first page.","name":"page","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"limit","in":"query"},{"type":"string","description":"query defines the transaction event query that is proxied to Tendermint's\nTxSearch RPC method. The query must be valid.\n\nSince cosmos-sdk 0.50","name":"query","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.tx.v1beta1.GetTxsEventResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}},"post":{"tags":["Service"],"summary":"BroadcastTx broadcast transaction.","operationId":"EvidenceService_BroadcastTx","parameters":[{"description":"BroadcastTxRequest is the request type for the Service.BroadcastTxRequest\nRPC method.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.tx.v1beta1.BroadcastTxRequest"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.tx.v1beta1.BroadcastTxResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/tx/v1beta1/txs/block/{height}":{"get":{"description":"Since: cosmos-sdk 0.45.2","tags":["Service"],"summary":"GetBlockWithTxs fetches a block with decoded txs.","operationId":"EvidenceService_GetBlockWithTxs","parameters":[{"type":"string","format":"int64","description":"height is the height of the block to query.","name":"height","in":"path","required":true},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.tx.v1beta1.GetBlockWithTxsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/tx/v1beta1/txs/{hash}":{"get":{"tags":["Service"],"summary":"GetTx fetches a tx by hash.","operationId":"EvidenceService_GetTx","parameters":[{"type":"string","description":"hash is the tx hash to query, encoded as a hex string.","name":"hash","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.tx.v1beta1.GetTxResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/upgrade/v1beta1/applied_plan/{name}":{"get":{"tags":["Query"],"summary":"AppliedPlan queries a previously applied upgrade plan by its name.","operationId":"EvidenceQuery_AppliedPlan","parameters":[{"type":"string","description":"name is the name of the applied plan to query for.","name":"name","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.upgrade.v1beta1.QueryAppliedPlanResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/upgrade/v1beta1/authority":{"get":{"description":"Since: cosmos-sdk 0.46","tags":["Query"],"summary":"Returns the account with authority to conduct upgrades","operationId":"EvidenceQuery_Authority","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.upgrade.v1beta1.QueryAuthorityResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/upgrade/v1beta1/current_plan":{"get":{"tags":["Query"],"summary":"CurrentPlan queries the current upgrade plan.","operationId":"EvidenceQuery_CurrentPlan","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.upgrade.v1beta1.QueryCurrentPlanResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/upgrade/v1beta1/module_versions":{"get":{"description":"Since: cosmos-sdk 0.43","tags":["Query"],"summary":"ModuleVersions queries the list of module versions from state.","operationId":"EvidenceQuery_ModuleVersions","parameters":[{"type":"string","description":"module_name is a field to query a specific module\nconsensus version from state. Leaving this empty will\nfetch the full list of module versions from state","name":"module_name","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.upgrade.v1beta1.QueryModuleVersionsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/upgrade/v1beta1/upgraded_consensus_state/{last_height}":{"get":{"tags":["Query"],"summary":"UpgradedConsensusState queries the consensus state that will serve\nas a trusted kernel for the next version of this chain. It will only be\nstored at the last height of this chain.\nUpgradedConsensusState RPC not supported with legacy querier\nThis rpc is deprecated now that IBC has its own replacement\n(https://github.com/cosmos/ibc-go/blob/2c880a22e9f9cc75f62b527ca94aa75ce1106001/proto/ibc/core/client/v1/query.proto#L54)","operationId":"EvidenceQuery_UpgradedConsensusState","parameters":[{"type":"string","format":"int64","description":"last height of the current chain must be sent in request\nas this is the height under which next consensus state is stored","name":"last_height","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.upgrade.v1beta1.QueryUpgradedConsensusStateResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.applications.fee.v1.Msg/PayPacketFee":{"post":{"tags":["Msg"],"summary":"PayPacketFee defines a rpc handler method for MsgPayPacketFee\nPayPacketFee is an open callback that may be called by any module/user that wishes to escrow funds in order to\nincentivize the relaying of the packet at the next sequence\nNOTE: This method is intended to be used within a multi msg transaction, where the subsequent msg that follows\ninitiates the lifecycle of the incentivized packet","operationId":"FeeMsg_PayPacketFee","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.applications.fee.v1.MsgPayPacketFee"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.applications.fee.v1.MsgPayPacketFeeResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.applications.fee.v1.Msg/PayPacketFeeAsync":{"post":{"tags":["Msg"],"summary":"PayPacketFeeAsync defines a rpc handler method for MsgPayPacketFeeAsync\nPayPacketFeeAsync is an open callback that may be called by any module/user that wishes to escrow funds in order to\nincentivize the relaying of a known packet (i.e. at a particular sequence)","operationId":"FeeMsg_PayPacketFeeAsync","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.applications.fee.v1.MsgPayPacketFeeAsync"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.applications.fee.v1.MsgPayPacketFeeAsyncResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.applications.fee.v1.Msg/RegisterCounterpartyPayee":{"post":{"tags":["Msg"],"summary":"RegisterCounterpartyPayee defines a rpc handler method for MsgRegisterCounterpartyPayee\nRegisterCounterpartyPayee is called by the relayer on each channelEnd and allows them to specify the counterparty\npayee address before relaying. This ensures they will be properly compensated for forward relaying since\nthe destination chain must include the registered counterparty payee address in the acknowledgement. This function\nmay be called more than once by a relayer, in which case, the latest counterparty payee address is always used.","operationId":"FeeMsg_RegisterCounterpartyPayee","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.applications.fee.v1.MsgRegisterCounterpartyPayee"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.applications.fee.v1.MsgRegisterCounterpartyPayeeResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.applications.fee.v1.Msg/RegisterPayee":{"post":{"tags":["Msg"],"summary":"RegisterPayee defines a rpc handler method for MsgRegisterPayee\nRegisterPayee is called by the relayer on each channelEnd and allows them to set an optional\npayee to which reverse and timeout relayer packet fees will be paid out. The payee should be registered on\nthe source chain from which packets originate as this is where fee distribution takes place. This function may be\ncalled more than once by a relayer, in which case, the latest payee is always used.","operationId":"FeeMsg_RegisterPayee","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.applications.fee.v1.MsgRegisterPayee"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.applications.fee.v1.MsgRegisterPayeeResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.applications.interchain_accounts.controller.v1.Msg/RegisterInterchainAccount":{"post":{"tags":["Msg"],"summary":"RegisterInterchainAccount defines a rpc handler for MsgRegisterInterchainAccount.","operationId":"FeeMsg_RegisterInterchainAccount","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.applications.interchain_accounts.controller.v1.MsgRegisterInterchainAccount"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.applications.interchain_accounts.controller.v1.MsgRegisterInterchainAccountResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.applications.interchain_accounts.controller.v1.Msg/SendTx":{"post":{"tags":["Msg"],"summary":"SendTx defines a rpc handler for MsgSendTx.","operationId":"FeeMsg_SendTx","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.applications.interchain_accounts.controller.v1.MsgSendTx"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.applications.interchain_accounts.controller.v1.MsgSendTxResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.applications.interchain_accounts.controller.v1.Msg/UpdateParams":{"post":{"tags":["Msg"],"summary":"UpdateParams defines a rpc handler for MsgUpdateParams.","operationId":"FeeMsg_UpdateParams","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.applications.interchain_accounts.controller.v1.MsgUpdateParams"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.applications.interchain_accounts.controller.v1.MsgUpdateParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.applications.interchain_accounts.host.v1.Msg/UpdateParams":{"post":{"tags":["Msg"],"summary":"UpdateParams defines a rpc handler for MsgUpdateParams.","operationId":"FeeMsg_UpdateParamsMixin169","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.applications.interchain_accounts.host.v1.MsgUpdateParams"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.applications.interchain_accounts.host.v1.MsgUpdateParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.applications.transfer.v1.Msg/Transfer":{"post":{"tags":["Msg"],"summary":"Transfer defines a rpc handler method for MsgTransfer.","operationId":"FeeMsg_Transfer","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.applications.transfer.v1.MsgTransfer"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.applications.transfer.v1.MsgTransferResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.applications.transfer.v1.Msg/UpdateParams":{"post":{"tags":["Msg"],"summary":"UpdateParams defines a rpc handler for MsgUpdateParams.","operationId":"FeeMsg_UpdateParamsMixin177","parameters":[{"description":"MsgUpdateParams is the Msg/UpdateParams request type.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.applications.transfer.v1.MsgUpdateParams"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.applications.transfer.v1.MsgUpdateParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.core.channel.v1.Msg/Acknowledgement":{"post":{"tags":["Msg"],"summary":"Acknowledgement defines a rpc handler method for MsgAcknowledgement.","operationId":"FeeMsg_Acknowledgement","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.core.channel.v1.MsgAcknowledgement"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v1.MsgAcknowledgementResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.core.channel.v1.Msg/ChannelCloseConfirm":{"post":{"tags":["Msg"],"summary":"ChannelCloseConfirm defines a rpc handler method for\nMsgChannelCloseConfirm.","operationId":"FeeMsg_ChannelCloseConfirm","parameters":[{"description":"MsgChannelCloseConfirm defines a msg sent by a Relayer to Chain B\nto acknowledge the change of channel state to CLOSED on Chain A.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.core.channel.v1.MsgChannelCloseConfirm"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v1.MsgChannelCloseConfirmResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.core.channel.v1.Msg/ChannelCloseInit":{"post":{"tags":["Msg"],"summary":"ChannelCloseInit defines a rpc handler method for MsgChannelCloseInit.","operationId":"FeeMsg_ChannelCloseInit","parameters":[{"description":"MsgChannelCloseInit defines a msg sent by a Relayer to Chain A\nto close a channel with Chain B.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.core.channel.v1.MsgChannelCloseInit"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v1.MsgChannelCloseInitResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.core.channel.v1.Msg/ChannelOpenAck":{"post":{"tags":["Msg"],"summary":"ChannelOpenAck defines a rpc handler method for MsgChannelOpenAck.","operationId":"FeeMsg_ChannelOpenAck","parameters":[{"description":"MsgChannelOpenAck defines a msg sent by a Relayer to Chain A to acknowledge\nthe change of channel state to TRYOPEN on Chain B.\nWARNING: a channel upgrade MUST NOT initialize an upgrade for this channel\nin the same block as executing this message otherwise the counterparty will\nbe incapable of opening.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.core.channel.v1.MsgChannelOpenAck"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v1.MsgChannelOpenAckResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.core.channel.v1.Msg/ChannelOpenConfirm":{"post":{"tags":["Msg"],"summary":"ChannelOpenConfirm defines a rpc handler method for MsgChannelOpenConfirm.","operationId":"FeeMsg_ChannelOpenConfirm","parameters":[{"description":"MsgChannelOpenConfirm defines a msg sent by a Relayer to Chain B to\nacknowledge the change of channel state to OPEN on Chain A.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.core.channel.v1.MsgChannelOpenConfirm"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v1.MsgChannelOpenConfirmResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.core.channel.v1.Msg/ChannelOpenInit":{"post":{"tags":["Msg"],"summary":"ChannelOpenInit defines a rpc handler method for MsgChannelOpenInit.","operationId":"FeeMsg_ChannelOpenInit","parameters":[{"description":"MsgChannelOpenInit defines an sdk.Msg to initialize a channel handshake. It\nis called by a relayer on Chain A.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.core.channel.v1.MsgChannelOpenInit"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v1.MsgChannelOpenInitResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.core.channel.v1.Msg/ChannelOpenTry":{"post":{"tags":["Msg"],"summary":"ChannelOpenTry defines a rpc handler method for MsgChannelOpenTry.","operationId":"FeeMsg_ChannelOpenTry","parameters":[{"description":"MsgChannelOpenInit defines a msg sent by a Relayer to try to open a channel\non Chain B. The version field within the Channel field has been deprecated. Its\nvalue will be ignored by core IBC.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.core.channel.v1.MsgChannelOpenTry"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v1.MsgChannelOpenTryResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.core.channel.v1.Msg/ChannelUpgradeAck":{"post":{"tags":["Msg"],"summary":"ChannelUpgradeAck defines a rpc handler method for MsgChannelUpgradeAck.","operationId":"FeeMsg_ChannelUpgradeAck","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.core.channel.v1.MsgChannelUpgradeAck"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v1.MsgChannelUpgradeAckResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.core.channel.v1.Msg/ChannelUpgradeCancel":{"post":{"tags":["Msg"],"summary":"ChannelUpgradeCancel defines a rpc handler method for MsgChannelUpgradeCancel.","operationId":"FeeMsg_ChannelUpgradeCancel","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.core.channel.v1.MsgChannelUpgradeCancel"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v1.MsgChannelUpgradeCancelResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.core.channel.v1.Msg/ChannelUpgradeConfirm":{"post":{"tags":["Msg"],"summary":"ChannelUpgradeConfirm defines a rpc handler method for MsgChannelUpgradeConfirm.","operationId":"FeeMsg_ChannelUpgradeConfirm","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.core.channel.v1.MsgChannelUpgradeConfirm"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v1.MsgChannelUpgradeConfirmResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.core.channel.v1.Msg/ChannelUpgradeInit":{"post":{"tags":["Msg"],"summary":"ChannelUpgradeInit defines a rpc handler method for MsgChannelUpgradeInit.","operationId":"FeeMsg_ChannelUpgradeInit","parameters":[{"description":"MsgChannelUpgradeInit defines the request type for the ChannelUpgradeInit rpc\nWARNING: Initializing a channel upgrade in the same block as opening the channel\nmay result in the counterparty being incapable of opening.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.core.channel.v1.MsgChannelUpgradeInit"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v1.MsgChannelUpgradeInitResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.core.channel.v1.Msg/ChannelUpgradeOpen":{"post":{"tags":["Msg"],"summary":"ChannelUpgradeOpen defines a rpc handler method for MsgChannelUpgradeOpen.","operationId":"FeeMsg_ChannelUpgradeOpen","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.core.channel.v1.MsgChannelUpgradeOpen"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v1.MsgChannelUpgradeOpenResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.core.channel.v1.Msg/ChannelUpgradeTimeout":{"post":{"tags":["Msg"],"summary":"ChannelUpgradeTimeout defines a rpc handler method for MsgChannelUpgradeTimeout.","operationId":"FeeMsg_ChannelUpgradeTimeout","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.core.channel.v1.MsgChannelUpgradeTimeout"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v1.MsgChannelUpgradeTimeoutResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.core.channel.v1.Msg/ChannelUpgradeTry":{"post":{"tags":["Msg"],"summary":"ChannelUpgradeTry defines a rpc handler method for MsgChannelUpgradeTry.","operationId":"FeeMsg_ChannelUpgradeTry","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.core.channel.v1.MsgChannelUpgradeTry"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v1.MsgChannelUpgradeTryResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.core.channel.v1.Msg/PruneAcknowledgements":{"post":{"tags":["Msg"],"summary":"PruneAcknowledgements defines a rpc handler method for MsgPruneAcknowledgements.","operationId":"FeeMsg_PruneAcknowledgements","parameters":[{"description":"MsgPruneAcknowledgements defines the request type for the PruneAcknowledgements rpc.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.core.channel.v1.MsgPruneAcknowledgements"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v1.MsgPruneAcknowledgementsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.core.channel.v1.Msg/RecvPacket":{"post":{"tags":["Msg"],"summary":"RecvPacket defines a rpc handler method for MsgRecvPacket.","operationId":"FeeMsg_RecvPacket","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.core.channel.v1.MsgRecvPacket"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v1.MsgRecvPacketResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.core.channel.v1.Msg/Timeout":{"post":{"tags":["Msg"],"summary":"Timeout defines a rpc handler method for MsgTimeout.","operationId":"FeeMsg_Timeout","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.core.channel.v1.MsgTimeout"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v1.MsgTimeoutResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.core.channel.v1.Msg/TimeoutOnClose":{"post":{"tags":["Msg"],"summary":"TimeoutOnClose defines a rpc handler method for MsgTimeoutOnClose.","operationId":"FeeMsg_TimeoutOnClose","parameters":[{"description":"MsgTimeoutOnClose timed-out packet upon counterparty channel closure.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.core.channel.v1.MsgTimeoutOnClose"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v1.MsgTimeoutOnCloseResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.core.channel.v1.Msg/UpdateChannelParams":{"post":{"tags":["Msg"],"summary":"UpdateChannelParams defines a rpc handler method for MsgUpdateParams.","operationId":"FeeMsg_UpdateChannelParams","parameters":[{"description":"MsgUpdateParams is the MsgUpdateParams request type.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.core.channel.v1.MsgUpdateParams"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v1.MsgUpdateParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.core.client.v1.Msg/CreateClient":{"post":{"tags":["Msg"],"summary":"CreateClient defines a rpc handler method for MsgCreateClient.","operationId":"FeeMsg_CreateClient","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.core.client.v1.MsgCreateClient"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.client.v1.MsgCreateClientResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.core.client.v1.Msg/IBCSoftwareUpgrade":{"post":{"tags":["Msg"],"summary":"IBCSoftwareUpgrade defines a rpc handler method for MsgIBCSoftwareUpgrade.","operationId":"FeeMsg_IBCSoftwareUpgrade","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.core.client.v1.MsgIBCSoftwareUpgrade"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.client.v1.MsgIBCSoftwareUpgradeResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.core.client.v1.Msg/RecoverClient":{"post":{"tags":["Msg"],"summary":"RecoverClient defines a rpc handler method for MsgRecoverClient.","operationId":"FeeMsg_RecoverClient","parameters":[{"description":"MsgRecoverClient defines the message used to recover a frozen or expired client.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.core.client.v1.MsgRecoverClient"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.client.v1.MsgRecoverClientResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.core.client.v1.Msg/SubmitMisbehaviour":{"post":{"tags":["Msg"],"summary":"SubmitMisbehaviour defines a rpc handler method for MsgSubmitMisbehaviour.","operationId":"FeeMsg_SubmitMisbehaviour","parameters":[{"description":"MsgSubmitMisbehaviour defines an sdk.Msg type that submits Evidence for\nlight client misbehaviour.\nThis message has been deprecated. Use MsgUpdateClient instead.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.core.client.v1.MsgSubmitMisbehaviour"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.client.v1.MsgSubmitMisbehaviourResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.core.client.v1.Msg/UpdateClient":{"post":{"tags":["Msg"],"summary":"UpdateClient defines a rpc handler method for MsgUpdateClient.","operationId":"FeeMsg_UpdateClient","parameters":[{"description":"MsgUpdateClient defines an sdk.Msg to update a IBC client state using\nthe given client message.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.core.client.v1.MsgUpdateClient"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.client.v1.MsgUpdateClientResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.core.client.v1.Msg/UpdateClientParams":{"post":{"tags":["Msg"],"summary":"UpdateClientParams defines a rpc handler method for MsgUpdateParams.","operationId":"FeeMsg_UpdateClientParams","parameters":[{"description":"MsgUpdateParams defines the sdk.Msg type to update the client parameters.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.core.client.v1.MsgUpdateParams"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.client.v1.MsgUpdateParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.core.client.v1.Msg/UpgradeClient":{"post":{"tags":["Msg"],"summary":"UpgradeClient defines a rpc handler method for MsgUpgradeClient.","operationId":"FeeMsg_UpgradeClient","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.core.client.v1.MsgUpgradeClient"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.client.v1.MsgUpgradeClientResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.core.connection.v1.Msg/ConnectionOpenAck":{"post":{"tags":["Msg"],"summary":"ConnectionOpenAck defines a rpc handler method for MsgConnectionOpenAck.","operationId":"FeeMsg_ConnectionOpenAck","parameters":[{"description":"MsgConnectionOpenAck defines a msg sent by a Relayer to Chain A to\nacknowledge the change of connection state to TRYOPEN on Chain B.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.core.connection.v1.MsgConnectionOpenAck"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.connection.v1.MsgConnectionOpenAckResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.core.connection.v1.Msg/ConnectionOpenConfirm":{"post":{"tags":["Msg"],"summary":"ConnectionOpenConfirm defines a rpc handler method for\nMsgConnectionOpenConfirm.","operationId":"FeeMsg_ConnectionOpenConfirm","parameters":[{"description":"MsgConnectionOpenConfirm defines a msg sent by a Relayer to Chain B to\nacknowledge the change of connection state to OPEN on Chain A.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.core.connection.v1.MsgConnectionOpenConfirm"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.connection.v1.MsgConnectionOpenConfirmResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.core.connection.v1.Msg/ConnectionOpenInit":{"post":{"tags":["Msg"],"summary":"ConnectionOpenInit defines a rpc handler method for MsgConnectionOpenInit.","operationId":"FeeMsg_ConnectionOpenInit","parameters":[{"description":"MsgConnectionOpenInit defines the msg sent by an account on Chain A to\ninitialize a connection with Chain B.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.core.connection.v1.MsgConnectionOpenInit"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.connection.v1.MsgConnectionOpenInitResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.core.connection.v1.Msg/ConnectionOpenTry":{"post":{"tags":["Msg"],"summary":"ConnectionOpenTry defines a rpc handler method for MsgConnectionOpenTry.","operationId":"FeeMsg_ConnectionOpenTry","parameters":[{"description":"MsgConnectionOpenTry defines a msg sent by a Relayer to try to open a\nconnection on Chain B.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.core.connection.v1.MsgConnectionOpenTry"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.connection.v1.MsgConnectionOpenTryResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.core.connection.v1.Msg/UpdateConnectionParams":{"post":{"tags":["Msg"],"summary":"UpdateConnectionParams defines a rpc handler method for\nMsgUpdateParams.","operationId":"FeeMsg_UpdateConnectionParams","parameters":[{"description":"MsgUpdateParams defines the sdk.Msg type to update the connection parameters.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.core.connection.v1.MsgUpdateParams"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.connection.v1.MsgUpdateParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.lightclients.wasm.v1.Msg/MigrateContract":{"post":{"tags":["Msg"],"summary":"MigrateContract defines a rpc handler method for MsgMigrateContract.","operationId":"FeeMsg_MigrateContract","parameters":[{"description":"MsgMigrateContract defines the request type for the MigrateContract rpc.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.lightclients.wasm.v1.MsgMigrateContract"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.lightclients.wasm.v1.MsgMigrateContractResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.lightclients.wasm.v1.Msg/RemoveChecksum":{"post":{"tags":["Msg"],"summary":"RemoveChecksum defines a rpc handler method for MsgRemoveChecksum.","operationId":"FeeMsg_RemoveChecksum","parameters":[{"description":"MsgRemoveChecksum defines the request type for the MsgRemoveChecksum rpc.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.lightclients.wasm.v1.MsgRemoveChecksum"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.lightclients.wasm.v1.MsgRemoveChecksumResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.lightclients.wasm.v1.Msg/StoreCode":{"post":{"tags":["Msg"],"summary":"StoreCode defines a rpc handler method for MsgStoreCode.","operationId":"FeeMsg_StoreCode","parameters":[{"description":"MsgStoreCode defines the request type for the StoreCode rpc.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.lightclients.wasm.v1.MsgStoreCode"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.lightclients.wasm.v1.MsgStoreCodeResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/apps/fee/v1/channels/{channel_id}/ports/{port_id}/fee_enabled":{"get":{"tags":["Query"],"summary":"FeeEnabledChannel returns true if the provided port and channel identifiers belong to a fee enabled channel","operationId":"FeeQuery_FeeEnabledChannel","parameters":[{"type":"string","description":"unique channel identifier","name":"channel_id","in":"path","required":true},{"type":"string","description":"unique port identifier","name":"port_id","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.applications.fee.v1.QueryFeeEnabledChannelResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/apps/fee/v1/channels/{channel_id}/ports/{port_id}/incentivized_packets":{"get":{"tags":["Query"],"summary":"Gets all incentivized packets for a specific channel","operationId":"FeeQuery_IncentivizedPacketsForChannel","parameters":[{"type":"string","name":"channel_id","in":"path","required":true},{"type":"string","name":"port_id","in":"path","required":true},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"},{"type":"string","format":"uint64","description":"Height to query at","name":"query_height","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.applications.fee.v1.QueryIncentivizedPacketsForChannelResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/apps/fee/v1/channels/{channel_id}/relayers/{relayer}/counterparty_payee":{"get":{"tags":["Query"],"summary":"CounterpartyPayee returns the registered counterparty payee for forward relaying","operationId":"FeeQuery_CounterpartyPayee","parameters":[{"type":"string","description":"unique channel identifier","name":"channel_id","in":"path","required":true},{"type":"string","description":"the relayer address to which the counterparty is registered","name":"relayer","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.applications.fee.v1.QueryCounterpartyPayeeResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/apps/fee/v1/channels/{channel_id}/relayers/{relayer}/payee":{"get":{"tags":["Query"],"summary":"Payee returns the registered payee address for a specific channel given the relayer address","operationId":"FeeQuery_Payee","parameters":[{"type":"string","description":"unique channel identifier","name":"channel_id","in":"path","required":true},{"type":"string","description":"the relayer address to which the distribution address is registered","name":"relayer","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.applications.fee.v1.QueryPayeeResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/apps/fee/v1/channels/{packet_id.channel_id}/ports/{packet_id.port_id}/sequences/{packet_id.sequence}/incentivized_packet":{"get":{"tags":["Query"],"summary":"IncentivizedPacket returns all packet fees for a packet given its identifier","operationId":"FeeQuery_IncentivizedPacket","parameters":[{"type":"string","description":"channel unique identifier","name":"packet_id.channel_id","in":"path","required":true},{"type":"string","description":"channel port identifier","name":"packet_id.port_id","in":"path","required":true},{"type":"string","format":"uint64","description":"packet sequence","name":"packet_id.sequence","in":"path","required":true},{"type":"string","format":"uint64","description":"block height at which to query","name":"query_height","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.applications.fee.v1.QueryIncentivizedPacketResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/apps/fee/v1/channels/{packet_id.channel_id}/ports/{packet_id.port_id}/sequences/{packet_id.sequence}/total_ack_fees":{"get":{"tags":["Query"],"summary":"TotalAckFees returns the total acknowledgement fees for a packet given its identifier","operationId":"FeeQuery_TotalAckFees","parameters":[{"type":"string","description":"channel unique identifier","name":"packet_id.channel_id","in":"path","required":true},{"type":"string","description":"channel port identifier","name":"packet_id.port_id","in":"path","required":true},{"type":"string","format":"uint64","description":"packet sequence","name":"packet_id.sequence","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.applications.fee.v1.QueryTotalAckFeesResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/apps/fee/v1/channels/{packet_id.channel_id}/ports/{packet_id.port_id}/sequences/{packet_id.sequence}/total_recv_fees":{"get":{"tags":["Query"],"summary":"TotalRecvFees returns the total receive fees for a packet given its identifier","operationId":"FeeQuery_TotalRecvFees","parameters":[{"type":"string","description":"channel unique identifier","name":"packet_id.channel_id","in":"path","required":true},{"type":"string","description":"channel port identifier","name":"packet_id.port_id","in":"path","required":true},{"type":"string","format":"uint64","description":"packet sequence","name":"packet_id.sequence","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.applications.fee.v1.QueryTotalRecvFeesResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/apps/fee/v1/channels/{packet_id.channel_id}/ports/{packet_id.port_id}/sequences/{packet_id.sequence}/total_timeout_fees":{"get":{"tags":["Query"],"summary":"TotalTimeoutFees returns the total timeout fees for a packet given its identifier","operationId":"FeeQuery_TotalTimeoutFees","parameters":[{"type":"string","description":"channel unique identifier","name":"packet_id.channel_id","in":"path","required":true},{"type":"string","description":"channel port identifier","name":"packet_id.port_id","in":"path","required":true},{"type":"string","format":"uint64","description":"packet sequence","name":"packet_id.sequence","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.applications.fee.v1.QueryTotalTimeoutFeesResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/apps/fee/v1/fee_enabled":{"get":{"tags":["Query"],"summary":"FeeEnabledChannels returns a list of all fee enabled channels","operationId":"FeeQuery_FeeEnabledChannels","parameters":[{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"},{"type":"string","format":"uint64","description":"block height at which to query","name":"query_height","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.applications.fee.v1.QueryFeeEnabledChannelsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/apps/fee/v1/incentivized_packets":{"get":{"tags":["Query"],"summary":"IncentivizedPackets returns all incentivized packets and their associated fees","operationId":"FeeQuery_IncentivizedPackets","parameters":[{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"},{"type":"string","format":"uint64","description":"block height at which to query","name":"query_height","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.applications.fee.v1.QueryIncentivizedPacketsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/apps/interchain_accounts/controller/v1/owners/{owner}/connections/{connection_id}":{"get":{"tags":["Query"],"summary":"InterchainAccount returns the interchain account address for a given owner address on a given connection","operationId":"FeeQuery_InterchainAccount","parameters":[{"type":"string","name":"owner","in":"path","required":true},{"type":"string","name":"connection_id","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.applications.interchain_accounts.controller.v1.QueryInterchainAccountResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/apps/interchain_accounts/controller/v1/params":{"get":{"tags":["Query"],"summary":"Params queries all parameters of the ICA controller submodule.","operationId":"FeeQuery_Params","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.applications.interchain_accounts.controller.v1.QueryParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/apps/interchain_accounts/host/v1/params":{"get":{"tags":["Query"],"summary":"Params queries all parameters of the ICA host submodule.","operationId":"FeeQuery_ParamsMixin168","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.applications.interchain_accounts.host.v1.QueryParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/apps/transfer/v1/channels/{channel_id}/ports/{port_id}/escrow_address":{"get":{"tags":["Query"],"summary":"EscrowAddress returns the escrow address for a particular port and channel id.","operationId":"FeeQuery_EscrowAddress","parameters":[{"type":"string","description":"unique channel identifier","name":"channel_id","in":"path","required":true},{"type":"string","description":"unique port identifier","name":"port_id","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.applications.transfer.v1.QueryEscrowAddressResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/apps/transfer/v1/denom_hashes/{trace}":{"get":{"tags":["Query"],"summary":"DenomHash queries a denomination hash information.","operationId":"FeeQuery_DenomHash","parameters":[{"pattern":".+","type":"string","description":"The denomination trace ([port_id]/[channel_id])+/[denom]","name":"trace","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.applications.transfer.v1.QueryDenomHashResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/apps/transfer/v1/denom_traces":{"get":{"tags":["Query"],"summary":"DenomTraces queries all denomination traces.","operationId":"FeeQuery_DenomTraces","parameters":[{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.applications.transfer.v1.QueryDenomTracesResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/apps/transfer/v1/denom_traces/{hash}":{"get":{"tags":["Query"],"summary":"DenomTrace queries a denomination trace information.","operationId":"FeeQuery_DenomTrace","parameters":[{"pattern":".+","type":"string","description":"hash (in hex format) or denom (full denom with ibc prefix) of the denomination trace information.","name":"hash","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.applications.transfer.v1.QueryDenomTraceResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/apps/transfer/v1/denoms/{denom}/total_escrow":{"get":{"tags":["Query"],"summary":"TotalEscrowForDenom returns the total amount of tokens in escrow based on the denom.","operationId":"FeeQuery_TotalEscrowForDenom","parameters":[{"pattern":".+","type":"string","name":"denom","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.applications.transfer.v1.QueryTotalEscrowForDenomResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/apps/transfer/v1/params":{"get":{"tags":["Query"],"summary":"Params queries all parameters of the ibc-transfer module.","operationId":"FeeQuery_ParamsMixin175","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.applications.transfer.v1.QueryParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/channel/v1/channels":{"get":{"tags":["Query"],"summary":"Channels queries all the IBC channels of a chain.","operationId":"FeeQuery_Channels","parameters":[{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v1.QueryChannelsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}":{"get":{"tags":["Query"],"summary":"Channel queries an IBC Channel.","operationId":"FeeQuery_Channel","parameters":[{"type":"string","description":"channel unique identifier","name":"channel_id","in":"path","required":true},{"type":"string","description":"port unique identifier","name":"port_id","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v1.QueryChannelResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/client_state":{"get":{"tags":["Query"],"summary":"ChannelClientState queries for the client state for the channel associated\nwith the provided channel identifiers.","operationId":"FeeQuery_ChannelClientState","parameters":[{"type":"string","description":"channel unique identifier","name":"channel_id","in":"path","required":true},{"type":"string","description":"port unique identifier","name":"port_id","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v1.QueryChannelClientStateResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/consensus_state/revision/{revision_number}/height/{revision_height}":{"get":{"tags":["Query"],"summary":"ChannelConsensusState queries for the consensus state for the channel\nassociated with the provided channel identifiers.","operationId":"FeeQuery_ChannelConsensusState","parameters":[{"type":"string","description":"channel unique identifier","name":"channel_id","in":"path","required":true},{"type":"string","description":"port unique identifier","name":"port_id","in":"path","required":true},{"type":"string","format":"uint64","description":"revision number of the consensus state","name":"revision_number","in":"path","required":true},{"type":"string","format":"uint64","description":"revision height of the consensus state","name":"revision_height","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v1.QueryChannelConsensusStateResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/next_sequence":{"get":{"tags":["Query"],"summary":"NextSequenceReceive returns the next receive sequence for a given channel.","operationId":"FeeQuery_NextSequenceReceive","parameters":[{"type":"string","description":"channel unique identifier","name":"channel_id","in":"path","required":true},{"type":"string","description":"port unique identifier","name":"port_id","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v1.QueryNextSequenceReceiveResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/next_sequence_send":{"get":{"tags":["Query"],"summary":"NextSequenceSend returns the next send sequence for a given channel.","operationId":"FeeQuery_NextSequenceSend","parameters":[{"type":"string","description":"channel unique identifier","name":"channel_id","in":"path","required":true},{"type":"string","description":"port unique identifier","name":"port_id","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v1.QueryNextSequenceSendResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/packet_acknowledgements":{"get":{"tags":["Query"],"summary":"PacketAcknowledgements returns all the packet acknowledgements associated\nwith a channel.","operationId":"FeeQuery_PacketAcknowledgements","parameters":[{"type":"string","description":"channel unique identifier","name":"channel_id","in":"path","required":true},{"type":"string","description":"port unique identifier","name":"port_id","in":"path","required":true},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"},{"type":"array","items":{"type":"string","format":"uint64"},"collectionFormat":"multi","description":"list of packet sequences","name":"packet_commitment_sequences","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v1.QueryPacketAcknowledgementsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/packet_acks/{sequence}":{"get":{"tags":["Query"],"summary":"PacketAcknowledgement queries a stored packet acknowledgement hash.","operationId":"FeeQuery_PacketAcknowledgement","parameters":[{"type":"string","description":"channel unique identifier","name":"channel_id","in":"path","required":true},{"type":"string","description":"port unique identifier","name":"port_id","in":"path","required":true},{"type":"string","format":"uint64","description":"packet sequence","name":"sequence","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v1.QueryPacketAcknowledgementResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/packet_commitments":{"get":{"tags":["Query"],"summary":"PacketCommitments returns all the packet commitments hashes associated\nwith a channel.","operationId":"FeeQuery_PacketCommitments","parameters":[{"type":"string","description":"channel unique identifier","name":"channel_id","in":"path","required":true},{"type":"string","description":"port unique identifier","name":"port_id","in":"path","required":true},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v1.QueryPacketCommitmentsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/packet_commitments/{packet_ack_sequences}/unreceived_acks":{"get":{"tags":["Query"],"summary":"UnreceivedAcks returns all the unreceived IBC acknowledgements associated\nwith a channel and sequences.","operationId":"FeeQuery_UnreceivedAcks","parameters":[{"type":"string","description":"channel unique identifier","name":"channel_id","in":"path","required":true},{"type":"string","description":"port unique identifier","name":"port_id","in":"path","required":true},{"minItems":1,"type":"array","items":{"type":"string","format":"uint64"},"collectionFormat":"csv","description":"list of acknowledgement sequences","name":"packet_ack_sequences","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v1.QueryUnreceivedAcksResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/packet_commitments/{packet_commitment_sequences}/unreceived_packets":{"get":{"tags":["Query"],"summary":"UnreceivedPackets returns all the unreceived IBC packets associated with a\nchannel and sequences.","operationId":"FeeQuery_UnreceivedPackets","parameters":[{"type":"string","description":"channel unique identifier","name":"channel_id","in":"path","required":true},{"type":"string","description":"port unique identifier","name":"port_id","in":"path","required":true},{"minItems":1,"type":"array","items":{"type":"string","format":"uint64"},"collectionFormat":"csv","description":"list of packet sequences","name":"packet_commitment_sequences","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v1.QueryUnreceivedPacketsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/packet_commitments/{sequence}":{"get":{"tags":["Query"],"summary":"PacketCommitment queries a stored packet commitment hash.","operationId":"FeeQuery_PacketCommitment","parameters":[{"type":"string","description":"channel unique identifier","name":"channel_id","in":"path","required":true},{"type":"string","description":"port unique identifier","name":"port_id","in":"path","required":true},{"type":"string","format":"uint64","description":"packet sequence","name":"sequence","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v1.QueryPacketCommitmentResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/packet_receipts/{sequence}":{"get":{"tags":["Query"],"summary":"PacketReceipt queries if a given packet sequence has been received on the\nqueried chain","operationId":"FeeQuery_PacketReceipt","parameters":[{"type":"string","description":"channel unique identifier","name":"channel_id","in":"path","required":true},{"type":"string","description":"port unique identifier","name":"port_id","in":"path","required":true},{"type":"string","format":"uint64","description":"packet sequence","name":"sequence","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v1.QueryPacketReceiptResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/upgrade":{"get":{"tags":["Query"],"summary":"Upgrade returns the upgrade for a given port and channel id.","operationId":"FeeQuery_Upgrade","parameters":[{"type":"string","name":"channel_id","in":"path","required":true},{"type":"string","name":"port_id","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v1.QueryUpgradeResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/upgrade_error":{"get":{"tags":["Query"],"summary":"UpgradeError returns the error receipt if the upgrade handshake failed.","operationId":"FeeQuery_UpgradeError","parameters":[{"type":"string","name":"channel_id","in":"path","required":true},{"type":"string","name":"port_id","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v1.QueryUpgradeErrorResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/channel/v1/connections/{connection}/channels":{"get":{"tags":["Query"],"summary":"ConnectionChannels queries all the channels associated with a connection\nend.","operationId":"FeeQuery_ConnectionChannels","parameters":[{"type":"string","description":"connection unique identifier","name":"connection","in":"path","required":true},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v1.QueryConnectionChannelsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/channel/v1/params":{"get":{"tags":["Query"],"summary":"ChannelParams queries all parameters of the ibc channel submodule.","operationId":"FeeQuery_ChannelParams","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v1.QueryChannelParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/client/v1/client_states":{"get":{"tags":["Query"],"summary":"ClientStates queries all the IBC light clients of a chain.","operationId":"FeeQuery_ClientStates","parameters":[{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.client.v1.QueryClientStatesResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/client/v1/client_states/{client_id}":{"get":{"tags":["Query"],"summary":"ClientState queries an IBC light client.","operationId":"FeeQuery_ClientState","parameters":[{"type":"string","description":"client state unique identifier","name":"client_id","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.client.v1.QueryClientStateResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/client/v1/client_status/{client_id}":{"get":{"tags":["Query"],"summary":"Status queries the status of an IBC client.","operationId":"FeeQuery_ClientStatus","parameters":[{"type":"string","description":"client unique identifier","name":"client_id","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.client.v1.QueryClientStatusResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/client/v1/consensus_states/{client_id}":{"get":{"tags":["Query"],"summary":"ConsensusStates queries all the consensus state associated with a given\nclient.","operationId":"FeeQuery_ConsensusStates","parameters":[{"type":"string","description":"client identifier","name":"client_id","in":"path","required":true},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.client.v1.QueryConsensusStatesResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/client/v1/consensus_states/{client_id}/heights":{"get":{"tags":["Query"],"summary":"ConsensusStateHeights queries the height of every consensus states associated with a given client.","operationId":"FeeQuery_ConsensusStateHeights","parameters":[{"type":"string","description":"client identifier","name":"client_id","in":"path","required":true},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.client.v1.QueryConsensusStateHeightsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/client/v1/consensus_states/{client_id}/revision/{revision_number}/height/{revision_height}":{"get":{"tags":["Query"],"summary":"ConsensusState queries a consensus state associated with a client state at\na given height.","operationId":"FeeQuery_ConsensusState","parameters":[{"type":"string","description":"client identifier","name":"client_id","in":"path","required":true},{"type":"string","format":"uint64","description":"consensus state revision number","name":"revision_number","in":"path","required":true},{"type":"string","format":"uint64","description":"consensus state revision height","name":"revision_height","in":"path","required":true},{"type":"boolean","description":"latest_height overrrides the height field and queries the latest stored\nConsensusState","name":"latest_height","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.client.v1.QueryConsensusStateResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/client/v1/params":{"get":{"tags":["Query"],"summary":"ClientParams queries all parameters of the ibc client submodule.","operationId":"FeeQuery_ClientParams","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.client.v1.QueryClientParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/client/v1/upgraded_client_states":{"get":{"tags":["Query"],"summary":"UpgradedClientState queries an Upgraded IBC light client.","operationId":"FeeQuery_UpgradedClientState","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.client.v1.QueryUpgradedClientStateResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/client/v1/upgraded_consensus_states":{"get":{"tags":["Query"],"summary":"UpgradedConsensusState queries an Upgraded IBC consensus state.","operationId":"FeeQuery_UpgradedConsensusState","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.client.v1.QueryUpgradedConsensusStateResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/connection/v1/client_connections/{client_id}":{"get":{"tags":["Query"],"summary":"ClientConnections queries the connection paths associated with a client\nstate.","operationId":"FeeQuery_ClientConnections","parameters":[{"type":"string","description":"client identifier associated with a connection","name":"client_id","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.connection.v1.QueryClientConnectionsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/connection/v1/connections":{"get":{"tags":["Query"],"summary":"Connections queries all the IBC connections of a chain.","operationId":"FeeQuery_Connections","parameters":[{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.connection.v1.QueryConnectionsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/connection/v1/connections/{connection_id}":{"get":{"tags":["Query"],"summary":"Connection queries an IBC connection end.","operationId":"FeeQuery_Connection","parameters":[{"type":"string","description":"connection unique identifier","name":"connection_id","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.connection.v1.QueryConnectionResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/connection/v1/connections/{connection_id}/client_state":{"get":{"tags":["Query"],"summary":"ConnectionClientState queries the client state associated with the\nconnection.","operationId":"FeeQuery_ConnectionClientState","parameters":[{"type":"string","description":"connection identifier","name":"connection_id","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.connection.v1.QueryConnectionClientStateResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/connection/v1/connections/{connection_id}/consensus_state/revision/{revision_number}/height/{revision_height}":{"get":{"tags":["Query"],"summary":"ConnectionConsensusState queries the consensus state associated with the\nconnection.","operationId":"FeeQuery_ConnectionConsensusState","parameters":[{"type":"string","description":"connection identifier","name":"connection_id","in":"path","required":true},{"type":"string","format":"uint64","name":"revision_number","in":"path","required":true},{"type":"string","format":"uint64","name":"revision_height","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.connection.v1.QueryConnectionConsensusStateResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/connection/v1/params":{"get":{"tags":["Query"],"summary":"ConnectionParams queries all parameters of the ibc connection submodule.","operationId":"FeeQuery_ConnectionParams","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.connection.v1.QueryConnectionParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/lightclients/wasm/v1/checksums":{"get":{"tags":["Query"],"summary":"Get all Wasm checksums","operationId":"FeeQuery_Checksums","parameters":[{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.lightclients.wasm.v1.QueryChecksumsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/lightclients/wasm/v1/checksums/{checksum}/code":{"get":{"tags":["Query"],"summary":"Get Wasm code for given checksum","operationId":"FeeQuery_Code","parameters":[{"type":"string","description":"checksum is a hex encoded string of the code stored.","name":"checksum","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.lightclients.wasm.v1.QueryCodeResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/pokt-network/poktroll/application/application":{"get":{"tags":["Query"],"operationId":"GithubCompoktNetworkpoktrollQuery_AllApplications","parameters":[{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/poktroll.application.QueryAllApplicationsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/pokt-network/poktroll/application/application/{address}":{"get":{"tags":["Query"],"summary":"Queries a list of Application items.","operationId":"GithubCompoktNetworkpoktrollQuery_Application","parameters":[{"type":"string","name":"address","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/poktroll.application.QueryGetApplicationResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/pokt-network/poktroll/application/params":{"get":{"tags":["Query"],"summary":"Parameters queries the parameters of the module.","operationId":"GithubCompoktNetworkpoktrollQuery_Params","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/poktroll.application.QueryParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/pokt-network/poktroll/gateway/gateway":{"get":{"tags":["Query"],"operationId":"GithubCompoktNetworkpoktrollQuery_AllGateways","parameters":[{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/poktroll.gateway.QueryAllGatewaysResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/pokt-network/poktroll/gateway/gateway/{address}":{"get":{"tags":["Query"],"summary":"Queries a list of Gateway items.","operationId":"GithubCompoktNetworkpoktrollQuery_Gateway","parameters":[{"type":"string","name":"address","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/poktroll.gateway.QueryGetGatewayResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/pokt-network/poktroll/gateway/params":{"get":{"tags":["Query"],"summary":"Parameters queries the parameters of the module.","operationId":"GithubCompoktNetworkpoktrollQuery_ParamsMixin9","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/poktroll.gateway.QueryParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/pokt-network/poktroll/proof/claim":{"get":{"tags":["Query"],"operationId":"GithubCompoktNetworkpoktrollQuery_AllClaims","parameters":[{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"},{"type":"string","name":"supplier_operator_address","in":"query"},{"type":"string","name":"session_id","in":"query"},{"type":"string","format":"uint64","name":"session_end_height","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/poktroll.proof.QueryAllClaimsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/pokt-network/poktroll/proof/claim/{session_id}/{supplier_operator_address}":{"get":{"tags":["Query"],"summary":"Queries a list of Claim items.","operationId":"GithubCompoktNetworkpoktrollQuery_Claim","parameters":[{"type":"string","name":"session_id","in":"path","required":true},{"type":"string","name":"supplier_operator_address","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/poktroll.proof.QueryGetClaimResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/pokt-network/poktroll/proof/params":{"get":{"tags":["Query"],"summary":"Parameters queries the parameters of the module.","operationId":"GithubCompoktNetworkpoktrollQuery_ParamsMixin15","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/poktroll.proof.QueryParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/pokt-network/poktroll/proof/proof":{"get":{"tags":["Query"],"operationId":"GithubCompoktNetworkpoktrollQuery_AllProofs","parameters":[{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"},{"type":"string","name":"supplier_operator_address","in":"query"},{"type":"string","name":"session_id","in":"query"},{"type":"string","format":"uint64","name":"session_end_height","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/poktroll.proof.QueryAllProofsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/pokt-network/poktroll/proof/proof/{session_id}/{supplier_operator_address}":{"get":{"tags":["Query"],"summary":"Queries a list of Proof items.","operationId":"GithubCompoktNetworkpoktrollQuery_Proof","parameters":[{"type":"string","name":"session_id","in":"path","required":true},{"type":"string","name":"supplier_operator_address","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/poktroll.proof.QueryGetProofResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/pokt-network/poktroll/service/params":{"get":{"tags":["Query"],"summary":"Parameters queries the parameters of the module.","operationId":"GithubCompoktNetworkpoktrollQuery_ParamsMixin20","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/poktroll.service.QueryParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/pokt-network/poktroll/service/service":{"get":{"tags":["Query"],"operationId":"GithubCompoktNetworkpoktrollQuery_AllServices","parameters":[{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/poktroll.service.QueryAllServicesResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/pokt-network/poktroll/service/service/{id}":{"get":{"tags":["Query"],"summary":"Queries a list of Service items.","operationId":"GithubCompoktNetworkpoktrollQuery_Service","parameters":[{"type":"string","description":"TODO_IMPROVE: We could support getting services by name.","name":"id","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/poktroll.service.QueryGetServiceResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/pokt-network/poktroll/session/get_session":{"get":{"tags":["Query"],"summary":"Queries the session given app_address, service and block_height.","operationId":"GithubCompoktNetworkpoktrollQuery_GetSession","parameters":[{"type":"string","description":"The Bech32 address of the application.","name":"application_address","in":"query"},{"type":"string","description":"For example, what if we want to request a session for a certain service but with some additional configs that identify it?\n\nUnique identifier for the service","name":"service.id","in":"query"},{"type":"string","description":"TODO_MAINNET: Remove this.\n\n(Optional) Semantic human readable name for the service","name":"service.name","in":"query"},{"type":"string","format":"uint64","description":"The cost of a single relay for this service in terms of compute units.\nMust be used alongside the global 'compute_units_to_tokens_multipler' to calculate the cost of a relay for this service.\ncost_per_relay_for_specific_service = compute_units_per_relay_for_specific_service * compute_units_to_tokens_multipler_global_value\n\nCompute units required per relay for this service","name":"service.compute_units_per_relay","in":"query"},{"type":"string","description":"The owner address that created the service.\nIt is the address that receives rewards based on the Service's on-chain usage\nIt is the only address that can update the service configuration (e.g. compute_units_per_relay),\nor make other updates to it.\n\nThe Bech32 address of the service owner / creator","name":"service.owner_address","in":"query"},{"type":"string","format":"int64","description":"The block height to query the session for","name":"block_height","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/poktroll.session.QueryGetSessionResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/pokt-network/poktroll/session/params":{"get":{"tags":["Query"],"summary":"Parameters queries the parameters of the module.","operationId":"GithubCompoktNetworkpoktrollQuery_ParamsMixin25","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/poktroll.session.QueryParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/pokt-network/poktroll/shared/params":{"get":{"tags":["Query"],"summary":"Parameters queries the parameters of the module.","operationId":"GithubCompoktNetworkpoktrollQuery_ParamsMixin30","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/poktroll.shared.QueryParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/pokt-network/poktroll/supplier/params":{"get":{"tags":["Query"],"summary":"Parameters queries the parameters of the module.","operationId":"GithubCompoktNetworkpoktrollQuery_ParamsMixin36","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/poktroll.supplier.QueryParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/pokt-network/poktroll/supplier/supplier":{"get":{"tags":["Query"],"operationId":"GithubCompoktNetworkpoktrollQuery_AllSuppliers","parameters":[{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/poktroll.supplier.QueryAllSuppliersResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/pokt-network/poktroll/supplier/supplier/{operator_address}":{"get":{"tags":["Query"],"summary":"Queries a list of Supplier items.","operationId":"GithubCompoktNetworkpoktrollQuery_Supplier","parameters":[{"type":"string","name":"operator_address","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/poktroll.supplier.QueryGetSupplierResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/pokt-network/poktroll/tokenomics/params":{"get":{"tags":["Query"],"summary":"Parameters queries the parameters of the module.","operationId":"GithubCompoktNetworkpoktrollQuery_ParamsMixin41","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/poktroll.tokenomics.QueryParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/pokt-network/poktroll/tokenomics/relay_mining_difficulty":{"get":{"tags":["Query"],"operationId":"GithubCompoktNetworkpoktrollQuery_RelayMiningDifficultyAll","parameters":[{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/poktroll.tokenomics.QueryAllRelayMiningDifficultyResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/pokt-network/poktroll/tokenomics/relay_mining_difficulty/{serviceId}":{"get":{"tags":["Query"],"summary":"Queries a list of RelayMiningDifficulty items.","operationId":"GithubCompoktNetworkpoktrollQuery_RelayMiningDifficulty","parameters":[{"type":"string","name":"serviceId","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/poktroll.tokenomics.QueryGetRelayMiningDifficultyResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/poktroll.application.Msg/DelegateToGateway":{"post":{"tags":["Msg"],"operationId":"GithubCompoktNetworkpoktrollMsg_DelegateToGateway","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/poktroll.application.MsgDelegateToGateway"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/poktroll.application.MsgDelegateToGatewayResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/poktroll.application.Msg/StakeApplication":{"post":{"tags":["Msg"],"operationId":"GithubCompoktNetworkpoktrollMsg_StakeApplication","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/poktroll.application.MsgStakeApplication"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/poktroll.application.MsgStakeApplicationResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/poktroll.application.Msg/UndelegateFromGateway":{"post":{"tags":["Msg"],"operationId":"GithubCompoktNetworkpoktrollMsg_UndelegateFromGateway","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/poktroll.application.MsgUndelegateFromGateway"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/poktroll.application.MsgUndelegateFromGatewayResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/poktroll.application.Msg/UnstakeApplication":{"post":{"tags":["Msg"],"operationId":"GithubCompoktNetworkpoktrollMsg_UnstakeApplication","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/poktroll.application.MsgUnstakeApplication"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/poktroll.application.MsgUnstakeApplicationResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/poktroll.application.Msg/UpdateParams":{"post":{"tags":["Msg"],"summary":"UpdateParams defines a (governance) operation for updating the module\nparameters. The authority defaults to the x/gov module account.","operationId":"GithubCompoktNetworkpoktrollMsg_UpdateParams","parameters":[{"description":"MsgUpdateParams is the Msg/UpdateParams request type.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/poktroll.application.MsgUpdateParams"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/poktroll.application.MsgUpdateParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/poktroll.gateway.Msg/StakeGateway":{"post":{"tags":["Msg"],"operationId":"GithubCompoktNetworkpoktrollMsg_StakeGateway","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/poktroll.gateway.MsgStakeGateway"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/poktroll.gateway.MsgStakeGatewayResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/poktroll.gateway.Msg/UnstakeGateway":{"post":{"tags":["Msg"],"operationId":"GithubCompoktNetworkpoktrollMsg_UnstakeGateway","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/poktroll.gateway.MsgUnstakeGateway"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/poktroll.gateway.MsgUnstakeGatewayResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/poktroll.gateway.Msg/UpdateParams":{"post":{"tags":["Msg"],"summary":"UpdateParams defines a (governance) operation for updating the module\nparameters. The authority defaults to the x/gov module account.","operationId":"GithubCompoktNetworkpoktrollMsg_UpdateParamsMixin10","parameters":[{"description":"MsgUpdateParams is the Msg/UpdateParams request type.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/poktroll.gateway.MsgUpdateParams"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/poktroll.gateway.MsgUpdateParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/poktroll.proof.Msg/CreateClaim":{"post":{"tags":["Msg"],"operationId":"GithubCompoktNetworkpoktrollMsg_CreateClaim","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/poktroll.proof.MsgCreateClaim"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/poktroll.proof.MsgCreateClaimResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/poktroll.proof.Msg/SubmitProof":{"post":{"tags":["Msg"],"operationId":"GithubCompoktNetworkpoktrollMsg_SubmitProof","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/poktroll.proof.MsgSubmitProof"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/poktroll.proof.MsgSubmitProofResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/poktroll.proof.Msg/UpdateParam":{"post":{"tags":["Msg"],"operationId":"GithubCompoktNetworkpoktrollMsg_UpdateParam","parameters":[{"description":"MsgUpdateParam is the Msg/UpdateParam request type to update a single param.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/poktroll.proof.MsgUpdateParam"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/poktroll.proof.MsgUpdateParamResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/poktroll.proof.Msg/UpdateParams":{"post":{"tags":["Msg"],"summary":"UpdateParams defines a (governance) operation for updating the module\nparameters. The authority defaults to the x/gov module account.","operationId":"GithubCompoktNetworkpoktrollMsg_UpdateParamsMixin16","parameters":[{"description":"MsgUpdateParams is the Msg/UpdateParams request type to update all params at once.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/poktroll.proof.MsgUpdateParams"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/poktroll.proof.MsgUpdateParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/poktroll.service.Msg/AddService":{"post":{"tags":["Msg"],"operationId":"GithubCompoktNetworkpoktrollMsg_AddService","parameters":[{"description":"MsgAddService defines a message for adding a new message to the network.\nServices can be added by any actor in the network making them truly\npermissionless.\nTODO_BETA: Add Champions / Sources once its fully defined.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/poktroll.service.MsgAddService"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/poktroll.service.MsgAddServiceResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/poktroll.service.Msg/UpdateParams":{"post":{"tags":["Msg"],"summary":"UpdateParams defines a (governance) operation for updating the module\nparameters. The authority defaults to the x/gov module account.","operationId":"GithubCompoktNetworkpoktrollMsg_UpdateParamsMixin22","parameters":[{"description":"MsgUpdateParams is the Msg/UpdateParams request type.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/poktroll.service.MsgUpdateParams"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/poktroll.service.MsgUpdateParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/poktroll.session.Msg/UpdateParams":{"post":{"tags":["Msg"],"summary":"UpdateParams defines a (governance) operation for updating the module\nparameters. The authority defaults to the x/gov module account.","operationId":"GithubCompoktNetworkpoktrollMsg_UpdateParamsMixin26","parameters":[{"description":"MsgUpdateParams is the Msg/UpdateParams request type.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/poktroll.session.MsgUpdateParams"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/poktroll.session.MsgUpdateParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/poktroll.shared.Msg/UpdateParam":{"post":{"tags":["Msg"],"operationId":"GithubCompoktNetworkpoktrollMsg_UpdateParamMixin33","parameters":[{"description":"MsgUpdateParam is the Msg/UpdateParam request type to update a single param.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/poktroll.shared.MsgUpdateParam"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/poktroll.shared.MsgUpdateParamResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/poktroll.shared.Msg/UpdateParams":{"post":{"tags":["Msg"],"summary":"UpdateParams defines a (governance) operation for updating the module\nparameters. The authority defaults to the x/gov module account.","operationId":"GithubCompoktNetworkpoktrollMsg_UpdateParamsMixin33","parameters":[{"description":"MsgUpdateParams is the Msg/UpdateParams request type.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/poktroll.shared.MsgUpdateParams"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/poktroll.shared.MsgUpdateParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/poktroll.supplier.Msg/StakeSupplier":{"post":{"tags":["Msg"],"operationId":"GithubCompoktNetworkpoktrollMsg_StakeSupplier","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/poktroll.supplier.MsgStakeSupplier"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/poktroll.supplier.MsgStakeSupplierResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/poktroll.supplier.Msg/UnstakeSupplier":{"post":{"tags":["Msg"],"operationId":"GithubCompoktNetworkpoktrollMsg_UnstakeSupplier","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/poktroll.supplier.MsgUnstakeSupplier"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/poktroll.supplier.MsgUnstakeSupplierResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/poktroll.supplier.Msg/UpdateParams":{"post":{"tags":["Msg"],"summary":"UpdateParams defines a (governance) operation for updating the module\nparameters. The authority defaults to the x/gov module account.","operationId":"GithubCompoktNetworkpoktrollMsg_UpdateParamsMixin37","parameters":[{"description":"MsgUpdateParams is the Msg/UpdateParams request type.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/poktroll.supplier.MsgUpdateParams"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/poktroll.supplier.MsgUpdateParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/poktroll.tokenomics.Msg/UpdateParam":{"post":{"tags":["Msg"],"operationId":"GithubCompoktNetworkpoktrollMsg_UpdateParamMixin43","parameters":[{"description":"MsgUpdateParam is the Msg/UpdateParam request type to update a single param.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/poktroll.tokenomics.MsgUpdateParam"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/poktroll.tokenomics.MsgUpdateParamResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/poktroll.tokenomics.Msg/UpdateParams":{"post":{"tags":["Msg"],"summary":"UpdateParams defines a (governance) operation for updating the module\nparameters. The authority defaults to the x/gov module account.","operationId":"GithubCompoktNetworkpoktrollMsg_UpdateParamsMixin43","parameters":[{"description":"MsgUpdateParams is the Msg/UpdateParams request type to update all params at once.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/poktroll.tokenomics.MsgUpdateParams"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/poktroll.tokenomics.MsgUpdateParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tendermint.abci.ABCI/ApplySnapshotChunk":{"post":{"tags":["ABCI"],"operationId":"EvidenceABCI_ApplySnapshotChunk","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tendermint.abci.RequestApplySnapshotChunk"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tendermint.abci.ResponseApplySnapshotChunk"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tendermint.abci.ABCI/CheckTx":{"post":{"tags":["ABCI"],"operationId":"EvidenceABCI_CheckTx","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tendermint.abci.RequestCheckTx"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tendermint.abci.ResponseCheckTx"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tendermint.abci.ABCI/Commit":{"post":{"tags":["ABCI"],"operationId":"EvidenceABCI_Commit","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tendermint.abci.RequestCommit"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tendermint.abci.ResponseCommit"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tendermint.abci.ABCI/Echo":{"post":{"tags":["ABCI"],"operationId":"EvidenceABCI_Echo","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tendermint.abci.RequestEcho"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tendermint.abci.ResponseEcho"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tendermint.abci.ABCI/ExtendVote":{"post":{"tags":["ABCI"],"operationId":"EvidenceABCI_ExtendVote","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tendermint.abci.RequestExtendVote"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tendermint.abci.ResponseExtendVote"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tendermint.abci.ABCI/FinalizeBlock":{"post":{"tags":["ABCI"],"operationId":"EvidenceABCI_FinalizeBlock","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tendermint.abci.RequestFinalizeBlock"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tendermint.abci.ResponseFinalizeBlock"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tendermint.abci.ABCI/Flush":{"post":{"tags":["ABCI"],"operationId":"EvidenceABCI_Flush","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tendermint.abci.RequestFlush"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tendermint.abci.ResponseFlush"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tendermint.abci.ABCI/Info":{"post":{"tags":["ABCI"],"operationId":"EvidenceABCI_Info","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tendermint.abci.RequestInfo"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tendermint.abci.ResponseInfo"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tendermint.abci.ABCI/InitChain":{"post":{"tags":["ABCI"],"operationId":"EvidenceABCI_InitChain","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tendermint.abci.RequestInitChain"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tendermint.abci.ResponseInitChain"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tendermint.abci.ABCI/ListSnapshots":{"post":{"tags":["ABCI"],"operationId":"EvidenceABCI_ListSnapshots","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tendermint.abci.RequestListSnapshots"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tendermint.abci.ResponseListSnapshots"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tendermint.abci.ABCI/LoadSnapshotChunk":{"post":{"tags":["ABCI"],"operationId":"EvidenceABCI_LoadSnapshotChunk","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tendermint.abci.RequestLoadSnapshotChunk"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tendermint.abci.ResponseLoadSnapshotChunk"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tendermint.abci.ABCI/OfferSnapshot":{"post":{"tags":["ABCI"],"operationId":"EvidenceABCI_OfferSnapshot","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tendermint.abci.RequestOfferSnapshot"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tendermint.abci.ResponseOfferSnapshot"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tendermint.abci.ABCI/PrepareProposal":{"post":{"tags":["ABCI"],"operationId":"EvidenceABCI_PrepareProposal","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tendermint.abci.RequestPrepareProposal"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tendermint.abci.ResponsePrepareProposal"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tendermint.abci.ABCI/ProcessProposal":{"post":{"tags":["ABCI"],"operationId":"EvidenceABCI_ProcessProposal","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tendermint.abci.RequestProcessProposal"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tendermint.abci.ResponseProcessProposal"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tendermint.abci.ABCI/Query":{"post":{"tags":["ABCI"],"operationId":"EvidenceABCI_Query","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tendermint.abci.RequestQuery"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tendermint.abci.ResponseQuery"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tendermint.abci.ABCI/VerifyVoteExtension":{"post":{"tags":["ABCI"],"operationId":"EvidenceABCI_VerifyVoteExtension","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tendermint.abci.RequestVerifyVoteExtension"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tendermint.abci.ResponseVerifyVoteExtension"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}}},"definitions":{"cosmos.auth.v1beta1.AddressBytesToStringResponse":{"description":"AddressBytesToStringResponse is the response type for AddressString rpc method.\n\nSince: cosmos-sdk 0.46","type":"object","properties":{"address_string":{"type":"string"}}},"cosmos.auth.v1beta1.AddressStringToBytesResponse":{"description":"AddressStringToBytesResponse is the response type for AddressBytes rpc method.\n\nSince: cosmos-sdk 0.46","type":"object","properties":{"address_bytes":{"type":"string","format":"byte"}}},"cosmos.auth.v1beta1.BaseAccount":{"description":"BaseAccount defines a base account type. It contains all the necessary fields\nfor basic account functionality. Any custom account type should extend this\ntype for additional functionality (e.g. vesting).","type":"object","properties":{"account_number":{"type":"string","format":"uint64"},"address":{"type":"string"},"pub_key":{"$ref":"#/definitions/google.protobuf.Any"},"sequence":{"type":"string","format":"uint64"}}},"cosmos.auth.v1beta1.Bech32PrefixResponse":{"description":"Bech32PrefixResponse is the response type for Bech32Prefix rpc method.\n\nSince: cosmos-sdk 0.46","type":"object","properties":{"bech32_prefix":{"type":"string"}}},"cosmos.auth.v1beta1.MsgUpdateParams":{"description":"MsgUpdateParams is the Msg/UpdateParams request type.\n\nSince: cosmos-sdk 0.47","type":"object","properties":{"authority":{"description":"authority is the address that controls the module (defaults to x/gov unless overwritten).","type":"string"},"params":{"description":"params defines the x/auth parameters to update.\n\nNOTE: All parameters must be supplied.","$ref":"#/definitions/cosmos.auth.v1beta1.Params"}}},"cosmos.auth.v1beta1.MsgUpdateParamsResponse":{"description":"MsgUpdateParamsResponse defines the response structure for executing a\nMsgUpdateParams message.\n\nSince: cosmos-sdk 0.47","type":"object"},"cosmos.auth.v1beta1.Params":{"description":"Params defines the parameters for the auth module.","type":"object","properties":{"max_memo_characters":{"type":"string","format":"uint64"},"sig_verify_cost_ed25519":{"type":"string","format":"uint64"},"sig_verify_cost_secp256k1":{"type":"string","format":"uint64"},"tx_sig_limit":{"type":"string","format":"uint64"},"tx_size_cost_per_byte":{"type":"string","format":"uint64"}}},"cosmos.auth.v1beta1.QueryAccountAddressByIDResponse":{"description":"Since: cosmos-sdk 0.46.2","type":"object","title":"QueryAccountAddressByIDResponse is the response type for AccountAddressByID rpc method","properties":{"account_address":{"type":"string"}}},"cosmos.auth.v1beta1.QueryAccountInfoResponse":{"description":"QueryAccountInfoResponse is the Query/AccountInfo response type.\n\nSince: cosmos-sdk 0.47","type":"object","properties":{"info":{"description":"info is the account info which is represented by BaseAccount.","$ref":"#/definitions/cosmos.auth.v1beta1.BaseAccount"}}},"cosmos.auth.v1beta1.QueryAccountResponse":{"description":"QueryAccountResponse is the response type for the Query/Account RPC method.","type":"object","properties":{"account":{"description":"account defines the account of the corresponding address.","$ref":"#/definitions/google.protobuf.Any"}}},"cosmos.auth.v1beta1.QueryAccountsResponse":{"description":"QueryAccountsResponse is the response type for the Query/Accounts RPC method.\n\nSince: cosmos-sdk 0.43","type":"object","properties":{"accounts":{"type":"array","title":"accounts are the existing accounts","items":{"type":"object","$ref":"#/definitions/google.protobuf.Any"}},"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"cosmos.auth.v1beta1.QueryModuleAccountByNameResponse":{"description":"QueryModuleAccountByNameResponse is the response type for the Query/ModuleAccountByName RPC method.","type":"object","properties":{"account":{"$ref":"#/definitions/google.protobuf.Any"}}},"cosmos.auth.v1beta1.QueryModuleAccountsResponse":{"description":"QueryModuleAccountsResponse is the response type for the Query/ModuleAccounts RPC method.\n\nSince: cosmos-sdk 0.46","type":"object","properties":{"accounts":{"type":"array","items":{"type":"object","$ref":"#/definitions/google.protobuf.Any"}}}},"cosmos.auth.v1beta1.QueryParamsResponse":{"description":"QueryParamsResponse is the response type for the Query/Params RPC method.","type":"object","properties":{"params":{"description":"params defines the parameters of the module.","$ref":"#/definitions/cosmos.auth.v1beta1.Params"}}},"cosmos.authz.v1beta1.Grant":{"description":"Grant gives permissions to execute\nthe provide method with expiration time.","type":"object","properties":{"authorization":{"$ref":"#/definitions/google.protobuf.Any"},"expiration":{"type":"string","format":"date-time","title":"time when the grant will expire and will be pruned. If null, then the grant\ndoesn't have a time expiration (other conditions in `authorization`\nmay apply to invalidate the grant)"}}},"cosmos.authz.v1beta1.GrantAuthorization":{"type":"object","title":"GrantAuthorization extends a grant with both the addresses of the grantee and granter.\nIt is used in genesis.proto and query.proto","properties":{"authorization":{"$ref":"#/definitions/google.protobuf.Any"},"expiration":{"type":"string","format":"date-time"},"grantee":{"type":"string"},"granter":{"type":"string"}}},"cosmos.authz.v1beta1.MsgExec":{"description":"MsgExec attempts to execute the provided messages using\nauthorizations granted to the grantee. Each message should have only\none signer corresponding to the granter of the authorization.","type":"object","properties":{"grantee":{"type":"string"},"msgs":{"description":"Execute Msg.\nThe x/authz will try to find a grant matching (msg.signers[0], grantee, MsgTypeURL(msg))\ntriple and validate it.","type":"array","items":{"type":"object","$ref":"#/definitions/google.protobuf.Any"}}}},"cosmos.authz.v1beta1.MsgExecResponse":{"description":"MsgExecResponse defines the Msg/MsgExecResponse response type.","type":"object","properties":{"results":{"type":"array","items":{"type":"string","format":"byte"}}}},"cosmos.authz.v1beta1.MsgGrant":{"description":"MsgGrant is a request type for Grant method. It declares authorization to the grantee\non behalf of the granter with the provided expiration time.","type":"object","properties":{"grant":{"$ref":"#/definitions/cosmos.authz.v1beta1.Grant"},"grantee":{"type":"string"},"granter":{"type":"string"}}},"cosmos.authz.v1beta1.MsgGrantResponse":{"description":"MsgGrantResponse defines the Msg/MsgGrant response type.","type":"object"},"cosmos.authz.v1beta1.MsgRevoke":{"description":"MsgRevoke revokes any authorization with the provided sdk.Msg type on the\ngranter's account with that has been granted to the grantee.","type":"object","properties":{"grantee":{"type":"string"},"granter":{"type":"string"},"msg_type_url":{"type":"string"}}},"cosmos.authz.v1beta1.MsgRevokeResponse":{"description":"MsgRevokeResponse defines the Msg/MsgRevokeResponse response type.","type":"object"},"cosmos.authz.v1beta1.QueryGranteeGrantsResponse":{"description":"QueryGranteeGrantsResponse is the response type for the Query/GranteeGrants RPC method.","type":"object","properties":{"grants":{"description":"grants is a list of grants granted to the grantee.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.authz.v1beta1.GrantAuthorization"}},"pagination":{"description":"pagination defines an pagination for the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"cosmos.authz.v1beta1.QueryGranterGrantsResponse":{"description":"QueryGranterGrantsResponse is the response type for the Query/GranterGrants RPC method.","type":"object","properties":{"grants":{"description":"grants is a list of grants granted by the granter.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.authz.v1beta1.GrantAuthorization"}},"pagination":{"description":"pagination defines an pagination for the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"cosmos.authz.v1beta1.QueryGrantsResponse":{"description":"QueryGrantsResponse is the response type for the Query/Authorizations RPC method.","type":"object","properties":{"grants":{"description":"authorizations is a list of grants granted for grantee by granter.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.authz.v1beta1.Grant"}},"pagination":{"description":"pagination defines an pagination for the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"cosmos.autocli.v1.AppOptionsRequest":{"description":"AppOptionsRequest is the RemoteInfoService/AppOptions request type.","type":"object"},"cosmos.autocli.v1.AppOptionsResponse":{"description":"AppOptionsResponse is the RemoteInfoService/AppOptions response type.","type":"object","properties":{"module_options":{"description":"module_options is a map of module name to autocli module options.","type":"object","additionalProperties":{"$ref":"#/definitions/cosmos.autocli.v1.ModuleOptions"}}}},"cosmos.autocli.v1.FlagOptions":{"description":"FlagOptions are options for flags generated from rpc request fields.\nBy default, all request fields are configured as flags based on the\nkebab-case name of the field. Fields can be turned into positional arguments\ninstead by using RpcCommandOptions.positional_args.","type":"object","properties":{"default_value":{"description":"default_value is the default value as text.","type":"string"},"deprecated":{"description":"deprecated is the usage text to show if this flag is deprecated.","type":"string"},"hidden":{"type":"boolean","title":"hidden hides the flag from help/usage text"},"name":{"description":"name is an alternate name to use for the field flag.","type":"string"},"shorthand":{"description":"shorthand is a one-letter abbreviated flag.","type":"string"},"shorthand_deprecated":{"description":"shorthand_deprecated is the usage text to show if the shorthand of this flag is deprecated.","type":"string"},"usage":{"description":"usage is the help message.","type":"string"}}},"cosmos.autocli.v1.ModuleOptions":{"description":"ModuleOptions describes the CLI options for a Cosmos SDK module.","type":"object","properties":{"query":{"description":"query describes the queries commands for the module.","$ref":"#/definitions/cosmos.autocli.v1.ServiceCommandDescriptor"},"tx":{"description":"tx describes the tx commands for the module.","$ref":"#/definitions/cosmos.autocli.v1.ServiceCommandDescriptor"}}},"cosmos.autocli.v1.PositionalArgDescriptor":{"description":"PositionalArgDescriptor describes a positional argument.","type":"object","properties":{"proto_field":{"description":"proto_field specifies the proto field to use as the positional arg. Any\nfields used as positional args will not have a flag generated.","type":"string"},"varargs":{"description":"varargs makes a positional parameter a varargs parameter. This can only be\napplied to last positional parameter and the proto_field must a repeated\nfield.","type":"boolean"}}},"cosmos.autocli.v1.RpcCommandOptions":{"description":"RpcCommandOptions specifies options for commands generated from protobuf\nrpc methods.","type":"object","properties":{"alias":{"description":"alias is an array of aliases that can be used instead of the first word in Use.","type":"array","items":{"type":"string"}},"deprecated":{"description":"deprecated defines, if this command is deprecated and should print this string when used.","type":"string"},"example":{"description":"example is examples of how to use the command.","type":"string"},"flag_options":{"description":"flag_options are options for flags generated from rpc request fields.\nBy default all request fields are configured as flags. They can\nalso be configured as positional args instead using positional_args.","type":"object","additionalProperties":{"$ref":"#/definitions/cosmos.autocli.v1.FlagOptions"}},"long":{"description":"long is the long message shown in the 'help \u003cthis-command\u003e' output.","type":"string"},"positional_args":{"description":"positional_args specifies positional arguments for the command.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.autocli.v1.PositionalArgDescriptor"}},"rpc_method":{"description":"rpc_method is short name of the protobuf rpc method that this command is\ngenerated from.","type":"string"},"short":{"description":"short is the short description shown in the 'help' output.","type":"string"},"skip":{"description":"skip specifies whether to skip this rpc method when generating commands.","type":"boolean"},"suggest_for":{"description":"suggest_for is an array of command names for which this command will be suggested -\nsimilar to aliases but only suggests.","type":"array","items":{"type":"string"}},"use":{"description":"use is the one-line usage method. It also allows specifying an alternate\nname for the command as the first word of the usage text.\n\nBy default the name of an rpc command is the kebab-case short name of the\nrpc method.","type":"string"},"version":{"description":"version defines the version for this command. If this value is non-empty and the command does not\ndefine a \"version\" flag, a \"version\" boolean flag will be added to the command and, if specified,\nwill print content of the \"Version\" variable. A shorthand \"v\" flag will also be added if the\ncommand does not define one.","type":"string"}}},"cosmos.autocli.v1.ServiceCommandDescriptor":{"description":"ServiceCommandDescriptor describes a CLI command based on a protobuf service.","type":"object","properties":{"rpc_command_options":{"description":"rpc_command_options are options for commands generated from rpc methods.\nIf no options are specified for a given rpc method on the service, a\ncommand will be generated for that method with the default options.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.autocli.v1.RpcCommandOptions"}},"service":{"description":"service is the fully qualified name of the protobuf service to build\nthe command from. It can be left empty if sub_commands are used instead\nwhich may be the case if a module provides multiple tx and/or query services.","type":"string"},"sub_commands":{"description":"sub_commands is a map of optional sub-commands for this command based on\ndifferent protobuf services. The map key is used as the name of the\nsub-command.","type":"object","additionalProperties":{"$ref":"#/definitions/cosmos.autocli.v1.ServiceCommandDescriptor"}}}},"cosmos.bank.v1beta1.DenomOwner":{"description":"DenomOwner defines structure representing an account that owns or holds a\nparticular denominated token. It contains the account address and account\nbalance of the denominated token.\n\nSince: cosmos-sdk 0.46","type":"object","properties":{"address":{"description":"address defines the address that owns a particular denomination.","type":"string"},"balance":{"description":"balance is the balance of the denominated coin for an account.","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}}},"cosmos.bank.v1beta1.DenomUnit":{"description":"DenomUnit represents a struct that describes a given\ndenomination unit of the basic token.","type":"object","properties":{"aliases":{"type":"array","title":"aliases is a list of string aliases for the given denom","items":{"type":"string"}},"denom":{"description":"denom represents the string name of the given denom unit (e.g uatom).","type":"string"},"exponent":{"description":"exponent represents power of 10 exponent that one must\nraise the base_denom to in order to equal the given DenomUnit's denom\n1 denom = 10^exponent base_denom\n(e.g. with a base_denom of uatom, one can create a DenomUnit of 'atom' with\nexponent = 6, thus: 1 atom = 10^6 uatom).","type":"integer","format":"int64"}}},"cosmos.bank.v1beta1.Input":{"description":"Input models transaction input.","type":"object","properties":{"address":{"type":"string"},"coins":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}}}},"cosmos.bank.v1beta1.Metadata":{"description":"Metadata represents a struct that describes\na basic token.","type":"object","properties":{"base":{"description":"base represents the base denom (should be the DenomUnit with exponent = 0).","type":"string"},"denom_units":{"type":"array","title":"denom_units represents the list of DenomUnit's for a given coin","items":{"type":"object","$ref":"#/definitions/cosmos.bank.v1beta1.DenomUnit"}},"description":{"type":"string"},"display":{"description":"display indicates the suggested denom that should be\ndisplayed in clients.","type":"string"},"name":{"description":"Since: cosmos-sdk 0.43","type":"string","title":"name defines the name of the token (eg: Cosmos Atom)"},"symbol":{"description":"symbol is the token symbol usually shown on exchanges (eg: ATOM). This can\nbe the same as the display.\n\nSince: cosmos-sdk 0.43","type":"string"},"uri":{"description":"URI to a document (on or off-chain) that contains additional information. Optional.\n\nSince: cosmos-sdk 0.46","type":"string"},"uri_hash":{"description":"URIHash is a sha256 hash of a document pointed by URI. It's used to verify that\nthe document didn't change. Optional.\n\nSince: cosmos-sdk 0.46","type":"string"}}},"cosmos.bank.v1beta1.MsgMultiSend":{"description":"MsgMultiSend represents an arbitrary multi-in, multi-out send message.","type":"object","properties":{"inputs":{"description":"Inputs, despite being `repeated`, only allows one sender input. This is\nchecked in MsgMultiSend's ValidateBasic.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.bank.v1beta1.Input"}},"outputs":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.bank.v1beta1.Output"}}}},"cosmos.bank.v1beta1.MsgMultiSendResponse":{"description":"MsgMultiSendResponse defines the Msg/MultiSend response type.","type":"object"},"cosmos.bank.v1beta1.MsgSend":{"description":"MsgSend represents a message to send coins from one account to another.","type":"object","properties":{"amount":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}},"from_address":{"type":"string"},"to_address":{"type":"string"}}},"cosmos.bank.v1beta1.MsgSendResponse":{"description":"MsgSendResponse defines the Msg/Send response type.","type":"object"},"cosmos.bank.v1beta1.MsgSetSendEnabled":{"description":"MsgSetSendEnabled is the Msg/SetSendEnabled request type.\n\nOnly entries to add/update/delete need to be included.\nExisting SendEnabled entries that are not included in this\nmessage are left unchanged.\n\nSince: cosmos-sdk 0.47","type":"object","properties":{"authority":{"description":"authority is the address that controls the module.","type":"string"},"send_enabled":{"description":"send_enabled is the list of entries to add or update.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.bank.v1beta1.SendEnabled"}},"use_default_for":{"description":"use_default_for is a list of denoms that should use the params.default_send_enabled value.\nDenoms listed here will have their SendEnabled entries deleted.\nIf a denom is included that doesn't have a SendEnabled entry,\nit will be ignored.","type":"array","items":{"type":"string"}}}},"cosmos.bank.v1beta1.MsgSetSendEnabledResponse":{"description":"MsgSetSendEnabledResponse defines the Msg/SetSendEnabled response type.\n\nSince: cosmos-sdk 0.47","type":"object"},"cosmos.bank.v1beta1.MsgUpdateParams":{"description":"MsgUpdateParams is the Msg/UpdateParams request type.\n\nSince: cosmos-sdk 0.47","type":"object","properties":{"authority":{"description":"authority is the address that controls the module (defaults to x/gov unless overwritten).","type":"string"},"params":{"description":"params defines the x/bank parameters to update.\n\nNOTE: All parameters must be supplied.","$ref":"#/definitions/cosmos.bank.v1beta1.Params"}}},"cosmos.bank.v1beta1.MsgUpdateParamsResponse":{"description":"MsgUpdateParamsResponse defines the response structure for executing a\nMsgUpdateParams message.\n\nSince: cosmos-sdk 0.47","type":"object"},"cosmos.bank.v1beta1.Output":{"description":"Output models transaction outputs.","type":"object","properties":{"address":{"type":"string"},"coins":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}}}},"cosmos.bank.v1beta1.Params":{"description":"Params defines the parameters for the bank module.","type":"object","properties":{"default_send_enabled":{"type":"boolean"},"send_enabled":{"description":"Deprecated: Use of SendEnabled in params is deprecated.\nFor genesis, use the newly added send_enabled field in the genesis object.\nStorage, lookup, and manipulation of this information is now in the keeper.\n\nAs of cosmos-sdk 0.47, this only exists for backwards compatibility of genesis files.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.bank.v1beta1.SendEnabled"}}}},"cosmos.bank.v1beta1.QueryAllBalancesResponse":{"description":"QueryAllBalancesResponse is the response type for the Query/AllBalances RPC\nmethod.","type":"object","properties":{"balances":{"description":"balances is the balances of all the coins.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}},"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"cosmos.bank.v1beta1.QueryBalanceResponse":{"description":"QueryBalanceResponse is the response type for the Query/Balance RPC method.","type":"object","properties":{"balance":{"description":"balance is the balance of the coin.","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}}},"cosmos.bank.v1beta1.QueryDenomMetadataByQueryStringResponse":{"description":"QueryDenomMetadataByQueryStringResponse is the response type for the Query/DenomMetadata RPC\nmethod. Identical with QueryDenomMetadataResponse but receives denom as query string in request.","type":"object","properties":{"metadata":{"description":"metadata describes and provides all the client information for the requested token.","$ref":"#/definitions/cosmos.bank.v1beta1.Metadata"}}},"cosmos.bank.v1beta1.QueryDenomMetadataResponse":{"description":"QueryDenomMetadataResponse is the response type for the Query/DenomMetadata RPC\nmethod.","type":"object","properties":{"metadata":{"description":"metadata describes and provides all the client information for the requested token.","$ref":"#/definitions/cosmos.bank.v1beta1.Metadata"}}},"cosmos.bank.v1beta1.QueryDenomOwnersByQueryResponse":{"description":"QueryDenomOwnersByQueryResponse defines the RPC response of a DenomOwnersByQuery RPC query.\n\nSince: cosmos-sdk 0.50.3","type":"object","properties":{"denom_owners":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.bank.v1beta1.DenomOwner"}},"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"cosmos.bank.v1beta1.QueryDenomOwnersResponse":{"description":"QueryDenomOwnersResponse defines the RPC response of a DenomOwners RPC query.\n\nSince: cosmos-sdk 0.46","type":"object","properties":{"denom_owners":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.bank.v1beta1.DenomOwner"}},"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"cosmos.bank.v1beta1.QueryDenomsMetadataResponse":{"description":"QueryDenomsMetadataResponse is the response type for the Query/DenomsMetadata RPC\nmethod.","type":"object","properties":{"metadatas":{"description":"metadata provides the client information for all the registered tokens.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.bank.v1beta1.Metadata"}},"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"cosmos.bank.v1beta1.QueryParamsResponse":{"description":"QueryParamsResponse defines the response type for querying x/bank parameters.","type":"object","properties":{"params":{"description":"params provides the parameters of the bank module.","$ref":"#/definitions/cosmos.bank.v1beta1.Params"}}},"cosmos.bank.v1beta1.QuerySendEnabledResponse":{"description":"QuerySendEnabledResponse defines the RPC response of a SendEnable query.\n\nSince: cosmos-sdk 0.47","type":"object","properties":{"pagination":{"description":"pagination defines the pagination in the response. This field is only\npopulated if the denoms field in the request is empty.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"},"send_enabled":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.bank.v1beta1.SendEnabled"}}}},"cosmos.bank.v1beta1.QuerySpendableBalanceByDenomResponse":{"description":"QuerySpendableBalanceByDenomResponse defines the gRPC response structure for\nquerying an account's spendable balance for a specific denom.\n\nSince: cosmos-sdk 0.47","type":"object","properties":{"balance":{"description":"balance is the balance of the coin.","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}}},"cosmos.bank.v1beta1.QuerySpendableBalancesResponse":{"description":"QuerySpendableBalancesResponse defines the gRPC response structure for querying\nan account's spendable balances.\n\nSince: cosmos-sdk 0.46","type":"object","properties":{"balances":{"description":"balances is the spendable balances of all the coins.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}},"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"cosmos.bank.v1beta1.QuerySupplyOfResponse":{"description":"QuerySupplyOfResponse is the response type for the Query/SupplyOf RPC method.","type":"object","properties":{"amount":{"description":"amount is the supply of the coin.","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}}},"cosmos.bank.v1beta1.QueryTotalSupplyResponse":{"type":"object","title":"QueryTotalSupplyResponse is the response type for the Query/TotalSupply RPC\nmethod","properties":{"pagination":{"description":"pagination defines the pagination in the response.\n\nSince: cosmos-sdk 0.43","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"},"supply":{"type":"array","title":"supply is the supply of the coins","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}}}},"cosmos.bank.v1beta1.SendEnabled":{"description":"SendEnabled maps coin denom to a send_enabled status (whether a denom is\nsendable).","type":"object","properties":{"denom":{"type":"string"},"enabled":{"type":"boolean"}}},"cosmos.base.abci.v1beta1.ABCIMessageLog":{"description":"ABCIMessageLog defines a structure containing an indexed tx ABCI message log.","type":"object","properties":{"events":{"description":"Events contains a slice of Event objects that were emitted during some\nexecution.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.abci.v1beta1.StringEvent"}},"log":{"type":"string"},"msg_index":{"type":"integer","format":"int64"}}},"cosmos.base.abci.v1beta1.Attribute":{"description":"Attribute defines an attribute wrapper where the key and value are\nstrings instead of raw bytes.","type":"object","properties":{"key":{"type":"string"},"value":{"type":"string"}}},"cosmos.base.abci.v1beta1.GasInfo":{"description":"GasInfo defines tx execution gas context.","type":"object","properties":{"gas_used":{"description":"GasUsed is the amount of gas actually consumed.","type":"string","format":"uint64"},"gas_wanted":{"description":"GasWanted is the maximum units of work we allow this tx to perform.","type":"string","format":"uint64"}}},"cosmos.base.abci.v1beta1.Result":{"description":"Result is the union of ResponseFormat and ResponseCheckTx.","type":"object","properties":{"data":{"description":"Data is any data returned from message or handler execution. It MUST be\nlength prefixed in order to separate data from multiple message executions.\nDeprecated. This field is still populated, but prefer msg_response instead\nbecause it also contains the Msg response typeURL.","type":"string","format":"byte"},"events":{"description":"Events contains a slice of Event objects that were emitted during message\nor handler execution.","type":"array","items":{"type":"object","$ref":"#/definitions/tendermint.abci.Event"}},"log":{"description":"Log contains the log information from message or handler execution.","type":"string"},"msg_responses":{"description":"msg_responses contains the Msg handler responses type packed in Anys.\n\nSince: cosmos-sdk 0.46","type":"array","items":{"type":"object","$ref":"#/definitions/google.protobuf.Any"}}}},"cosmos.base.abci.v1beta1.StringEvent":{"description":"StringEvent defines en Event object wrapper where all the attributes\ncontain key/value pairs that are strings instead of raw bytes.","type":"object","properties":{"attributes":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.abci.v1beta1.Attribute"}},"type":{"type":"string"}}},"cosmos.base.abci.v1beta1.TxResponse":{"description":"TxResponse defines a structure containing relevant tx data and metadata. The\ntags are stringified and the log is JSON decoded.","type":"object","properties":{"code":{"description":"Response code.","type":"integer","format":"int64"},"codespace":{"type":"string","title":"Namespace for the Code"},"data":{"description":"Result bytes, if any.","type":"string"},"events":{"description":"Events defines all the events emitted by processing a transaction. Note,\nthese events include those emitted by processing all the messages and those\nemitted from the ante. Whereas Logs contains the events, with\nadditional metadata, emitted only by processing the messages.\n\nSince: cosmos-sdk 0.42.11, 0.44.5, 0.45","type":"array","items":{"type":"object","$ref":"#/definitions/tendermint.abci.Event"}},"gas_used":{"description":"Amount of gas consumed by transaction.","type":"string","format":"int64"},"gas_wanted":{"description":"Amount of gas requested for transaction.","type":"string","format":"int64"},"height":{"type":"string","format":"int64","title":"The block height"},"info":{"description":"Additional information. May be non-deterministic.","type":"string"},"logs":{"description":"The output of the application's logger (typed). May be non-deterministic.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.abci.v1beta1.ABCIMessageLog"}},"raw_log":{"description":"The output of the application's logger (raw string). May be\nnon-deterministic.","type":"string"},"timestamp":{"description":"Time of the previous block. For heights \u003e 1, it's the weighted median of\nthe timestamps of the valid votes in the block.LastCommit. For height == 1,\nit's genesis time.","type":"string"},"tx":{"description":"The request transaction bytes.","$ref":"#/definitions/google.protobuf.Any"},"txhash":{"description":"The transaction hash.","type":"string"}}},"cosmos.base.node.v1beta1.ConfigResponse":{"description":"ConfigResponse defines the response structure for the Config gRPC query.","type":"object","properties":{"halt_height":{"type":"string","format":"uint64"},"minimum_gas_price":{"type":"string"},"pruning_interval":{"type":"string"},"pruning_keep_recent":{"type":"string"}}},"cosmos.base.node.v1beta1.StatusResponse":{"description":"StateResponse defines the response structure for the status of a node.","type":"object","properties":{"app_hash":{"type":"string","format":"byte","title":"app hash of the current block"},"earliest_store_height":{"type":"string","format":"uint64","title":"earliest block height available in the store"},"height":{"type":"string","format":"uint64","title":"current block height"},"timestamp":{"type":"string","format":"date-time","title":"block height timestamp"},"validator_hash":{"type":"string","format":"byte","title":"validator hash provided by the consensus header"}}},"cosmos.base.query.v1beta1.PageRequest":{"description":"message SomeRequest {\n Foo some_parameter = 1;\n PageRequest pagination = 2;\n }","type":"object","title":"PageRequest is to be embedded in gRPC request messages for efficient\npagination. Ex:","properties":{"count_total":{"description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","type":"boolean"},"key":{"description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","type":"string","format":"byte"},"limit":{"description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","type":"string","format":"uint64"},"offset":{"description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","type":"string","format":"uint64"},"reverse":{"description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","type":"boolean"}}},"cosmos.base.query.v1beta1.PageResponse":{"description":"PageResponse is to be embedded in gRPC response messages where the\ncorresponding request message has used PageRequest.\n\n message SomeResponse {\n repeated Bar results = 1;\n PageResponse page = 2;\n }","type":"object","properties":{"next_key":{"description":"next_key is the key to be passed to PageRequest.key to\nquery the next page most efficiently. It will be empty if\nthere are no more results.","type":"string","format":"byte"},"total":{"type":"string","format":"uint64","title":"total is total number of results available if PageRequest.count_total\nwas set, its value is undefined otherwise"}}},"cosmos.base.reflection.v1beta1.ListAllInterfacesResponse":{"description":"ListAllInterfacesResponse is the response type of the ListAllInterfaces RPC.","type":"object","properties":{"interface_names":{"description":"interface_names is an array of all the registered interfaces.","type":"array","items":{"type":"string"}}}},"cosmos.base.reflection.v1beta1.ListImplementationsResponse":{"description":"ListImplementationsResponse is the response type of the ListImplementations\nRPC.","type":"object","properties":{"implementation_message_names":{"type":"array","items":{"type":"string"}}}},"cosmos.base.reflection.v2alpha1.AuthnDescriptor":{"type":"object","title":"AuthnDescriptor provides information on how to sign transactions without relying\non the online RPCs GetTxMetadata and CombineUnsignedTxAndSignatures","properties":{"sign_modes":{"type":"array","title":"sign_modes defines the supported signature algorithm","items":{"type":"object","$ref":"#/definitions/cosmos.base.reflection.v2alpha1.SigningModeDescriptor"}}}},"cosmos.base.reflection.v2alpha1.ChainDescriptor":{"type":"object","title":"ChainDescriptor describes chain information of the application","properties":{"id":{"type":"string","title":"id is the chain id"}}},"cosmos.base.reflection.v2alpha1.CodecDescriptor":{"type":"object","title":"CodecDescriptor describes the registered interfaces and provides metadata information on the types","properties":{"interfaces":{"type":"array","title":"interfaces is a list of the registerted interfaces descriptors","items":{"type":"object","$ref":"#/definitions/cosmos.base.reflection.v2alpha1.InterfaceDescriptor"}}}},"cosmos.base.reflection.v2alpha1.ConfigurationDescriptor":{"type":"object","title":"ConfigurationDescriptor contains metadata information on the sdk.Config","properties":{"bech32_account_address_prefix":{"type":"string","title":"bech32_account_address_prefix is the account address prefix"}}},"cosmos.base.reflection.v2alpha1.GetAuthnDescriptorResponse":{"type":"object","title":"GetAuthnDescriptorResponse is the response returned by the GetAuthnDescriptor RPC","properties":{"authn":{"title":"authn describes how to authenticate to the application when sending transactions","$ref":"#/definitions/cosmos.base.reflection.v2alpha1.AuthnDescriptor"}}},"cosmos.base.reflection.v2alpha1.GetChainDescriptorResponse":{"type":"object","title":"GetChainDescriptorResponse is the response returned by the GetChainDescriptor RPC","properties":{"chain":{"title":"chain describes application chain information","$ref":"#/definitions/cosmos.base.reflection.v2alpha1.ChainDescriptor"}}},"cosmos.base.reflection.v2alpha1.GetCodecDescriptorResponse":{"type":"object","title":"GetCodecDescriptorResponse is the response returned by the GetCodecDescriptor RPC","properties":{"codec":{"title":"codec describes the application codec such as registered interfaces and implementations","$ref":"#/definitions/cosmos.base.reflection.v2alpha1.CodecDescriptor"}}},"cosmos.base.reflection.v2alpha1.GetConfigurationDescriptorResponse":{"type":"object","title":"GetConfigurationDescriptorResponse is the response returned by the GetConfigurationDescriptor RPC","properties":{"config":{"title":"config describes the application's sdk.Config","$ref":"#/definitions/cosmos.base.reflection.v2alpha1.ConfigurationDescriptor"}}},"cosmos.base.reflection.v2alpha1.GetQueryServicesDescriptorResponse":{"type":"object","title":"GetQueryServicesDescriptorResponse is the response returned by the GetQueryServicesDescriptor RPC","properties":{"queries":{"title":"queries provides information on the available queryable services","$ref":"#/definitions/cosmos.base.reflection.v2alpha1.QueryServicesDescriptor"}}},"cosmos.base.reflection.v2alpha1.GetTxDescriptorResponse":{"type":"object","title":"GetTxDescriptorResponse is the response returned by the GetTxDescriptor RPC","properties":{"tx":{"title":"tx provides information on msgs that can be forwarded to the application\nalongside the accepted transaction protobuf type","$ref":"#/definitions/cosmos.base.reflection.v2alpha1.TxDescriptor"}}},"cosmos.base.reflection.v2alpha1.InterfaceAcceptingMessageDescriptor":{"type":"object","title":"InterfaceAcceptingMessageDescriptor describes a protobuf message which contains\nan interface represented as a google.protobuf.Any","properties":{"field_descriptor_names":{"type":"array","title":"field_descriptor_names is a list of the protobuf name (not fullname) of the field\nwhich contains the interface as google.protobuf.Any (the interface is the same, but\nit can be in multiple fields of the same proto message)","items":{"type":"string"}},"fullname":{"type":"string","title":"fullname is the protobuf fullname of the type containing the interface"}}},"cosmos.base.reflection.v2alpha1.InterfaceDescriptor":{"type":"object","title":"InterfaceDescriptor describes the implementation of an interface","properties":{"fullname":{"type":"string","title":"fullname is the name of the interface"},"interface_accepting_messages":{"type":"array","title":"interface_accepting_messages contains information regarding the proto messages which contain the interface as\ngoogle.protobuf.Any field","items":{"type":"object","$ref":"#/definitions/cosmos.base.reflection.v2alpha1.InterfaceAcceptingMessageDescriptor"}},"interface_implementers":{"type":"array","title":"interface_implementers is a list of the descriptors of the interface implementers","items":{"type":"object","$ref":"#/definitions/cosmos.base.reflection.v2alpha1.InterfaceImplementerDescriptor"}}}},"cosmos.base.reflection.v2alpha1.InterfaceImplementerDescriptor":{"type":"object","title":"InterfaceImplementerDescriptor describes an interface implementer","properties":{"fullname":{"type":"string","title":"fullname is the protobuf queryable name of the interface implementer"},"type_url":{"type":"string","title":"type_url defines the type URL used when marshalling the type as any\nthis is required so we can provide type safe google.protobuf.Any marshalling and\nunmarshalling, making sure that we don't accept just 'any' type\nin our interface fields"}}},"cosmos.base.reflection.v2alpha1.MsgDescriptor":{"type":"object","title":"MsgDescriptor describes a cosmos-sdk message that can be delivered with a transaction","properties":{"msg_type_url":{"description":"msg_type_url contains the TypeURL of a sdk.Msg.","type":"string"}}},"cosmos.base.reflection.v2alpha1.QueryMethodDescriptor":{"type":"object","title":"QueryMethodDescriptor describes a queryable method of a query service\nno other info is provided beside method name and tendermint queryable path\nbecause it would be redundant with the grpc reflection service","properties":{"full_query_path":{"type":"string","title":"full_query_path is the path that can be used to query\nthis method via tendermint abci.Query"},"name":{"type":"string","title":"name is the protobuf name (not fullname) of the method"}}},"cosmos.base.reflection.v2alpha1.QueryServiceDescriptor":{"type":"object","title":"QueryServiceDescriptor describes a cosmos-sdk queryable service","properties":{"fullname":{"type":"string","title":"fullname is the protobuf fullname of the service descriptor"},"is_module":{"type":"boolean","title":"is_module describes if this service is actually exposed by an application's module"},"methods":{"type":"array","title":"methods provides a list of query service methods","items":{"type":"object","$ref":"#/definitions/cosmos.base.reflection.v2alpha1.QueryMethodDescriptor"}}}},"cosmos.base.reflection.v2alpha1.QueryServicesDescriptor":{"type":"object","title":"QueryServicesDescriptor contains the list of cosmos-sdk queriable services","properties":{"query_services":{"type":"array","title":"query_services is a list of cosmos-sdk QueryServiceDescriptor","items":{"type":"object","$ref":"#/definitions/cosmos.base.reflection.v2alpha1.QueryServiceDescriptor"}}}},"cosmos.base.reflection.v2alpha1.SigningModeDescriptor":{"type":"object","title":"SigningModeDescriptor provides information on a signing flow of the application\nNOTE(fdymylja): here we could go as far as providing an entire flow on how\nto sign a message given a SigningModeDescriptor, but it's better to think about\nthis another time","properties":{"authn_info_provider_method_fullname":{"type":"string","title":"authn_info_provider_method_fullname defines the fullname of the method to call to get\nthe metadata required to authenticate using the provided sign_modes"},"name":{"type":"string","title":"name defines the unique name of the signing mode"},"number":{"type":"integer","format":"int32","title":"number is the unique int32 identifier for the sign_mode enum"}}},"cosmos.base.reflection.v2alpha1.TxDescriptor":{"type":"object","title":"TxDescriptor describes the accepted transaction type","properties":{"fullname":{"description":"fullname is the protobuf fullname of the raw transaction type (for instance the tx.Tx type)\nit is not meant to support polymorphism of transaction types, it is supposed to be used by\nreflection clients to understand if they can handle a specific transaction type in an application.","type":"string"},"msgs":{"type":"array","title":"msgs lists the accepted application messages (sdk.Msg)","items":{"type":"object","$ref":"#/definitions/cosmos.base.reflection.v2alpha1.MsgDescriptor"}}}},"cosmos.base.tendermint.v1beta1.ABCIQueryResponse":{"description":"ABCIQueryResponse defines the response structure for the ABCIQuery gRPC query.\n\nNote: This type is a duplicate of the ResponseQuery proto type defined in\nTendermint.","type":"object","properties":{"code":{"type":"integer","format":"int64"},"codespace":{"type":"string"},"height":{"type":"string","format":"int64"},"index":{"type":"string","format":"int64"},"info":{"type":"string","title":"nondeterministic"},"key":{"type":"string","format":"byte"},"log":{"type":"string","title":"nondeterministic"},"proof_ops":{"$ref":"#/definitions/cosmos.base.tendermint.v1beta1.ProofOps"},"value":{"type":"string","format":"byte"}}},"cosmos.base.tendermint.v1beta1.Block":{"description":"Block is tendermint type Block, with the Header proposer address\nfield converted to bech32 string.","type":"object","properties":{"data":{"$ref":"#/definitions/tendermint.types.Data"},"evidence":{"$ref":"#/definitions/tendermint.types.EvidenceList"},"header":{"$ref":"#/definitions/cosmos.base.tendermint.v1beta1.Header"},"last_commit":{"$ref":"#/definitions/tendermint.types.Commit"}}},"cosmos.base.tendermint.v1beta1.GetBlockByHeightResponse":{"description":"GetBlockByHeightResponse is the response type for the Query/GetBlockByHeight RPC method.","type":"object","properties":{"block":{"title":"Deprecated: please use `sdk_block` instead","$ref":"#/definitions/tendermint.types.Block"},"block_id":{"$ref":"#/definitions/tendermint.types.BlockID"},"sdk_block":{"title":"Since: cosmos-sdk 0.47","$ref":"#/definitions/cosmos.base.tendermint.v1beta1.Block"}}},"cosmos.base.tendermint.v1beta1.GetLatestBlockResponse":{"description":"GetLatestBlockResponse is the response type for the Query/GetLatestBlock RPC method.","type":"object","properties":{"block":{"title":"Deprecated: please use `sdk_block` instead","$ref":"#/definitions/tendermint.types.Block"},"block_id":{"$ref":"#/definitions/tendermint.types.BlockID"},"sdk_block":{"title":"Since: cosmos-sdk 0.47","$ref":"#/definitions/cosmos.base.tendermint.v1beta1.Block"}}},"cosmos.base.tendermint.v1beta1.GetLatestValidatorSetResponse":{"description":"GetLatestValidatorSetResponse is the response type for the Query/GetValidatorSetByHeight RPC method.","type":"object","properties":{"block_height":{"type":"string","format":"int64"},"pagination":{"description":"pagination defines an pagination for the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"},"validators":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.tendermint.v1beta1.Validator"}}}},"cosmos.base.tendermint.v1beta1.GetNodeInfoResponse":{"description":"GetNodeInfoResponse is the response type for the Query/GetNodeInfo RPC method.","type":"object","properties":{"application_version":{"$ref":"#/definitions/cosmos.base.tendermint.v1beta1.VersionInfo"},"default_node_info":{"$ref":"#/definitions/tendermint.p2p.DefaultNodeInfo"}}},"cosmos.base.tendermint.v1beta1.GetSyncingResponse":{"description":"GetSyncingResponse is the response type for the Query/GetSyncing RPC method.","type":"object","properties":{"syncing":{"type":"boolean"}}},"cosmos.base.tendermint.v1beta1.GetValidatorSetByHeightResponse":{"description":"GetValidatorSetByHeightResponse is the response type for the Query/GetValidatorSetByHeight RPC method.","type":"object","properties":{"block_height":{"type":"string","format":"int64"},"pagination":{"description":"pagination defines an pagination for the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"},"validators":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.tendermint.v1beta1.Validator"}}}},"cosmos.base.tendermint.v1beta1.Header":{"description":"Header defines the structure of a Tendermint block header.","type":"object","properties":{"app_hash":{"type":"string","format":"byte","title":"state after txs from the previous block"},"chain_id":{"type":"string"},"consensus_hash":{"type":"string","format":"byte","title":"consensus params for current block"},"data_hash":{"type":"string","format":"byte","title":"transactions"},"evidence_hash":{"description":"evidence included in the block","type":"string","format":"byte","title":"consensus info"},"height":{"type":"string","format":"int64"},"last_block_id":{"title":"prev block info","$ref":"#/definitions/tendermint.types.BlockID"},"last_commit_hash":{"description":"commit from validators from the last block","type":"string","format":"byte","title":"hashes of block data"},"last_results_hash":{"type":"string","format":"byte","title":"root hash of all results from the txs from the previous block"},"next_validators_hash":{"type":"string","format":"byte","title":"validators for the next block"},"proposer_address":{"description":"proposer_address is the original block proposer address, formatted as a Bech32 string.\nIn Tendermint, this type is `bytes`, but in the SDK, we convert it to a Bech32 string\nfor better UX.\n\noriginal proposer of the block","type":"string"},"time":{"type":"string","format":"date-time"},"validators_hash":{"description":"validators for the current block","type":"string","format":"byte","title":"hashes from the app output from the prev block"},"version":{"title":"basic block info","$ref":"#/definitions/tendermint.version.Consensus"}}},"cosmos.base.tendermint.v1beta1.Module":{"type":"object","title":"Module is the type for VersionInfo","properties":{"path":{"type":"string","title":"module path"},"sum":{"type":"string","title":"checksum"},"version":{"type":"string","title":"module version"}}},"cosmos.base.tendermint.v1beta1.ProofOp":{"description":"ProofOp defines an operation used for calculating Merkle root. The data could\nbe arbitrary format, providing necessary data for example neighbouring node\nhash.\n\nNote: This type is a duplicate of the ProofOp proto type defined in Tendermint.","type":"object","properties":{"data":{"type":"string","format":"byte"},"key":{"type":"string","format":"byte"},"type":{"type":"string"}}},"cosmos.base.tendermint.v1beta1.ProofOps":{"description":"ProofOps is Merkle proof defined by the list of ProofOps.\n\nNote: This type is a duplicate of the ProofOps proto type defined in Tendermint.","type":"object","properties":{"ops":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.tendermint.v1beta1.ProofOp"}}}},"cosmos.base.tendermint.v1beta1.Validator":{"description":"Validator is the type for the validator-set.","type":"object","properties":{"address":{"type":"string"},"proposer_priority":{"type":"string","format":"int64"},"pub_key":{"$ref":"#/definitions/google.protobuf.Any"},"voting_power":{"type":"string","format":"int64"}}},"cosmos.base.tendermint.v1beta1.VersionInfo":{"description":"VersionInfo is the type for the GetNodeInfoResponse message.","type":"object","properties":{"app_name":{"type":"string"},"build_deps":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.tendermint.v1beta1.Module"}},"build_tags":{"type":"string"},"cosmos_sdk_version":{"type":"string","title":"Since: cosmos-sdk 0.43"},"git_commit":{"type":"string"},"go_version":{"type":"string"},"name":{"type":"string"},"version":{"type":"string"}}},"cosmos.base.v1beta1.Coin":{"description":"Coin defines a token with a denomination and an amount.\n\nNOTE: The amount field is an Int which implements the custom method\nsignatures required by gogoproto.","type":"object","properties":{"amount":{"type":"string"},"denom":{"type":"string"}}},"cosmos.base.v1beta1.DecCoin":{"description":"DecCoin defines a token with a denomination and a decimal amount.\n\nNOTE: The amount field is an Dec which implements the custom method\nsignatures required by gogoproto.","type":"object","properties":{"amount":{"type":"string"},"denom":{"type":"string"}}},"cosmos.circuit.v1.AccountResponse":{"description":"AccountResponse is the response type for the Query/Account RPC method.","type":"object","properties":{"permission":{"$ref":"#/definitions/cosmos.circuit.v1.Permissions"}}},"cosmos.circuit.v1.AccountsResponse":{"description":"AccountsResponse is the response type for the Query/Accounts RPC method.","type":"object","properties":{"accounts":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.circuit.v1.GenesisAccountPermissions"}},"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"cosmos.circuit.v1.DisabledListResponse":{"description":"DisabledListResponse is the response type for the Query/DisabledList RPC method.","type":"object","properties":{"disabled_list":{"type":"array","items":{"type":"string"}}}},"cosmos.circuit.v1.GenesisAccountPermissions":{"type":"object","title":"GenesisAccountPermissions is the account permissions for the circuit breaker in genesis","properties":{"address":{"type":"string"},"permissions":{"$ref":"#/definitions/cosmos.circuit.v1.Permissions"}}},"cosmos.circuit.v1.MsgAuthorizeCircuitBreaker":{"description":"MsgAuthorizeCircuitBreaker defines the Msg/AuthorizeCircuitBreaker request type.","type":"object","properties":{"grantee":{"description":"grantee is the account authorized with the provided permissions.","type":"string"},"granter":{"description":"granter is the granter of the circuit breaker permissions and must have\nLEVEL_SUPER_ADMIN.","type":"string"},"permissions":{"description":"permissions are the circuit breaker permissions that the grantee receives.\nThese will overwrite any existing permissions. LEVEL_NONE_UNSPECIFIED can\nbe specified to revoke all permissions.","$ref":"#/definitions/cosmos.circuit.v1.Permissions"}}},"cosmos.circuit.v1.MsgAuthorizeCircuitBreakerResponse":{"description":"MsgAuthorizeCircuitBreakerResponse defines the Msg/AuthorizeCircuitBreaker response type.","type":"object","properties":{"success":{"type":"boolean"}}},"cosmos.circuit.v1.MsgResetCircuitBreaker":{"description":"MsgResetCircuitBreaker defines the Msg/ResetCircuitBreaker request type.","type":"object","properties":{"authority":{"description":"authority is the account authorized to trip or reset the circuit breaker.","type":"string"},"msg_type_urls":{"description":"msg_type_urls specifies a list of Msg type URLs to resume processing. If\nit is left empty all Msg processing for type URLs that the account is\nauthorized to trip will resume.","type":"array","items":{"type":"string"}}}},"cosmos.circuit.v1.MsgResetCircuitBreakerResponse":{"description":"MsgResetCircuitBreakerResponse defines the Msg/ResetCircuitBreaker response type.","type":"object","properties":{"success":{"type":"boolean"}}},"cosmos.circuit.v1.MsgTripCircuitBreaker":{"description":"MsgTripCircuitBreaker defines the Msg/TripCircuitBreaker request type.","type":"object","properties":{"authority":{"description":"authority is the account authorized to trip the circuit breaker.","type":"string"},"msg_type_urls":{"description":"msg_type_urls specifies a list of type URLs to immediately stop processing.\nIF IT IS LEFT EMPTY, ALL MSG PROCESSING WILL STOP IMMEDIATELY.\nThis value is validated against the authority's permissions and if the\nauthority does not have permissions to trip the specified msg type URLs\n(or all URLs), the operation will fail.","type":"array","items":{"type":"string"}}}},"cosmos.circuit.v1.MsgTripCircuitBreakerResponse":{"description":"MsgTripCircuitBreakerResponse defines the Msg/TripCircuitBreaker response type.","type":"object","properties":{"success":{"type":"boolean"}}},"cosmos.circuit.v1.Permissions":{"description":"Permissions are the permissions that an account has to trip\nor reset the circuit breaker.","type":"object","properties":{"level":{"description":"level is the level of permissions granted to this account.","$ref":"#/definitions/cosmos.circuit.v1.Permissions.Level"},"limit_type_urls":{"description":"limit_type_urls is used with LEVEL_SOME_MSGS to limit the lists of Msg type\nURLs that the account can trip. It is an error to use limit_type_urls with\na level other than LEVEL_SOME_MSGS.","type":"array","items":{"type":"string"}}}},"cosmos.circuit.v1.Permissions.Level":{"description":"Level is the permission level.\n\n - LEVEL_NONE_UNSPECIFIED: LEVEL_NONE_UNSPECIFIED indicates that the account will have no circuit\nbreaker permissions.\n - LEVEL_SOME_MSGS: LEVEL_SOME_MSGS indicates that the account will have permission to\ntrip or reset the circuit breaker for some Msg type URLs. If this level\nis chosen, a non-empty list of Msg type URLs must be provided in\nlimit_type_urls.\n - LEVEL_ALL_MSGS: LEVEL_ALL_MSGS indicates that the account can trip or reset the circuit\nbreaker for Msg's of all type URLs.\n - LEVEL_SUPER_ADMIN: LEVEL_SUPER_ADMIN indicates that the account can take all circuit breaker\nactions and can grant permissions to other accounts.","type":"string","default":"LEVEL_NONE_UNSPECIFIED","enum":["LEVEL_NONE_UNSPECIFIED","LEVEL_SOME_MSGS","LEVEL_ALL_MSGS","LEVEL_SUPER_ADMIN"]},"cosmos.consensus.v1.MsgUpdateParams":{"description":"MsgUpdateParams is the Msg/UpdateParams request type.","type":"object","properties":{"abci":{"title":"Since: cosmos-sdk 0.50","$ref":"#/definitions/tendermint.types.ABCIParams"},"authority":{"description":"authority is the address that controls the module (defaults to x/gov unless overwritten).","type":"string"},"block":{"description":"params defines the x/consensus parameters to update.\nVersionsParams is not included in this Msg because it is tracked\nsepararately in x/upgrade.\n\nNOTE: All parameters must be supplied.","$ref":"#/definitions/tendermint.types.BlockParams"},"evidence":{"$ref":"#/definitions/tendermint.types.EvidenceParams"},"validator":{"$ref":"#/definitions/tendermint.types.ValidatorParams"}}},"cosmos.consensus.v1.MsgUpdateParamsResponse":{"description":"MsgUpdateParamsResponse defines the response structure for executing a\nMsgUpdateParams message.","type":"object"},"cosmos.consensus.v1.QueryParamsResponse":{"description":"QueryParamsResponse defines the response type for querying x/consensus parameters.","type":"object","properties":{"params":{"description":"params are the tendermint consensus params stored in the consensus module.\nPlease note that `params.version` is not populated in this response, it is\ntracked separately in the x/upgrade module.","$ref":"#/definitions/tendermint.types.ConsensusParams"}}},"cosmos.crisis.v1beta1.MsgUpdateParams":{"description":"MsgUpdateParams is the Msg/UpdateParams request type.\n\nSince: cosmos-sdk 0.47","type":"object","properties":{"authority":{"description":"authority is the address that controls the module (defaults to x/gov unless overwritten).","type":"string"},"constant_fee":{"description":"constant_fee defines the x/crisis parameter.","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}}},"cosmos.crisis.v1beta1.MsgUpdateParamsResponse":{"description":"MsgUpdateParamsResponse defines the response structure for executing a\nMsgUpdateParams message.\n\nSince: cosmos-sdk 0.47","type":"object"},"cosmos.crisis.v1beta1.MsgVerifyInvariant":{"description":"MsgVerifyInvariant represents a message to verify a particular invariance.","type":"object","properties":{"invariant_module_name":{"description":"name of the invariant module.","type":"string"},"invariant_route":{"description":"invariant_route is the msg's invariant route.","type":"string"},"sender":{"description":"sender is the account address of private key to send coins to fee collector account.","type":"string"}}},"cosmos.crisis.v1beta1.MsgVerifyInvariantResponse":{"description":"MsgVerifyInvariantResponse defines the Msg/VerifyInvariant response type.","type":"object"},"cosmos.crypto.multisig.v1beta1.CompactBitArray":{"description":"CompactBitArray is an implementation of a space efficient bit array.\nThis is used to ensure that the encoded data takes up a minimal amount of\nspace after proto encoding.\nThis is not thread safe, and is not intended for concurrent usage.","type":"object","properties":{"elems":{"type":"string","format":"byte"},"extra_bits_stored":{"type":"integer","format":"int64"}}},"cosmos.distribution.v1beta1.DelegationDelegatorReward":{"description":"DelegationDelegatorReward represents the properties\nof a delegator's delegation reward.","type":"object","properties":{"reward":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.DecCoin"}},"validator_address":{"type":"string"}}},"cosmos.distribution.v1beta1.MsgCommunityPoolSpend":{"description":"MsgCommunityPoolSpend defines a message for sending tokens from the community\npool to another account. This message is typically executed via a governance\nproposal with the governance module being the executing authority.\n\nSince: cosmos-sdk 0.47","type":"object","properties":{"amount":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}},"authority":{"description":"authority is the address that controls the module (defaults to x/gov unless overwritten).","type":"string"},"recipient":{"type":"string"}}},"cosmos.distribution.v1beta1.MsgCommunityPoolSpendResponse":{"description":"MsgCommunityPoolSpendResponse defines the response to executing a\nMsgCommunityPoolSpend message.\n\nSince: cosmos-sdk 0.47","type":"object"},"cosmos.distribution.v1beta1.MsgDepositValidatorRewardsPool":{"description":"DepositValidatorRewardsPool defines the request structure to provide\nadditional rewards to delegators from a specific validator.\n\nSince: cosmos-sdk 0.50","type":"object","properties":{"amount":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}},"depositor":{"type":"string"},"validator_address":{"type":"string"}}},"cosmos.distribution.v1beta1.MsgDepositValidatorRewardsPoolResponse":{"description":"MsgDepositValidatorRewardsPoolResponse defines the response to executing a\nMsgDepositValidatorRewardsPool message.\n\nSince: cosmos-sdk 0.50","type":"object"},"cosmos.distribution.v1beta1.MsgFundCommunityPool":{"description":"MsgFundCommunityPool allows an account to directly\nfund the community pool.","type":"object","properties":{"amount":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}},"depositor":{"type":"string"}}},"cosmos.distribution.v1beta1.MsgFundCommunityPoolResponse":{"description":"MsgFundCommunityPoolResponse defines the Msg/FundCommunityPool response type.","type":"object"},"cosmos.distribution.v1beta1.MsgSetWithdrawAddress":{"description":"MsgSetWithdrawAddress sets the withdraw address for\na delegator (or validator self-delegation).","type":"object","properties":{"delegator_address":{"type":"string"},"withdraw_address":{"type":"string"}}},"cosmos.distribution.v1beta1.MsgSetWithdrawAddressResponse":{"description":"MsgSetWithdrawAddressResponse defines the Msg/SetWithdrawAddress response\ntype.","type":"object"},"cosmos.distribution.v1beta1.MsgUpdateParams":{"description":"MsgUpdateParams is the Msg/UpdateParams request type.\n\nSince: cosmos-sdk 0.47","type":"object","properties":{"authority":{"description":"authority is the address that controls the module (defaults to x/gov unless overwritten).","type":"string"},"params":{"description":"params defines the x/distribution parameters to update.\n\nNOTE: All parameters must be supplied.","$ref":"#/definitions/cosmos.distribution.v1beta1.Params"}}},"cosmos.distribution.v1beta1.MsgUpdateParamsResponse":{"description":"MsgUpdateParamsResponse defines the response structure for executing a\nMsgUpdateParams message.\n\nSince: cosmos-sdk 0.47","type":"object"},"cosmos.distribution.v1beta1.MsgWithdrawDelegatorReward":{"description":"MsgWithdrawDelegatorReward represents delegation withdrawal to a delegator\nfrom a single validator.","type":"object","properties":{"delegator_address":{"type":"string"},"validator_address":{"type":"string"}}},"cosmos.distribution.v1beta1.MsgWithdrawDelegatorRewardResponse":{"description":"MsgWithdrawDelegatorRewardResponse defines the Msg/WithdrawDelegatorReward\nresponse type.","type":"object","properties":{"amount":{"type":"array","title":"Since: cosmos-sdk 0.46","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}}}},"cosmos.distribution.v1beta1.MsgWithdrawValidatorCommission":{"description":"MsgWithdrawValidatorCommission withdraws the full commission to the validator\naddress.","type":"object","properties":{"validator_address":{"type":"string"}}},"cosmos.distribution.v1beta1.MsgWithdrawValidatorCommissionResponse":{"description":"MsgWithdrawValidatorCommissionResponse defines the\nMsg/WithdrawValidatorCommission response type.","type":"object","properties":{"amount":{"type":"array","title":"Since: cosmos-sdk 0.46","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}}}},"cosmos.distribution.v1beta1.Params":{"description":"Params defines the set of params for the distribution module.","type":"object","properties":{"base_proposer_reward":{"description":"Deprecated: The base_proposer_reward field is deprecated and is no longer used\nin the x/distribution module's reward mechanism.","type":"string"},"bonus_proposer_reward":{"description":"Deprecated: The bonus_proposer_reward field is deprecated and is no longer used\nin the x/distribution module's reward mechanism.","type":"string"},"community_tax":{"type":"string"},"withdraw_addr_enabled":{"type":"boolean"}}},"cosmos.distribution.v1beta1.QueryCommunityPoolResponse":{"description":"QueryCommunityPoolResponse is the response type for the Query/CommunityPool\nRPC method.","type":"object","properties":{"pool":{"description":"pool defines community pool's coins.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.DecCoin"}}}},"cosmos.distribution.v1beta1.QueryDelegationRewardsResponse":{"description":"QueryDelegationRewardsResponse is the response type for the\nQuery/DelegationRewards RPC method.","type":"object","properties":{"rewards":{"description":"rewards defines the rewards accrued by a delegation.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.DecCoin"}}}},"cosmos.distribution.v1beta1.QueryDelegationTotalRewardsResponse":{"description":"QueryDelegationTotalRewardsResponse is the response type for the\nQuery/DelegationTotalRewards RPC method.","type":"object","properties":{"rewards":{"description":"rewards defines all the rewards accrued by a delegator.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.distribution.v1beta1.DelegationDelegatorReward"}},"total":{"description":"total defines the sum of all the rewards.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.DecCoin"}}}},"cosmos.distribution.v1beta1.QueryDelegatorValidatorsResponse":{"description":"QueryDelegatorValidatorsResponse is the response type for the\nQuery/DelegatorValidators RPC method.","type":"object","properties":{"validators":{"description":"validators defines the validators a delegator is delegating for.","type":"array","items":{"type":"string"}}}},"cosmos.distribution.v1beta1.QueryDelegatorWithdrawAddressResponse":{"description":"QueryDelegatorWithdrawAddressResponse is the response type for the\nQuery/DelegatorWithdrawAddress RPC method.","type":"object","properties":{"withdraw_address":{"description":"withdraw_address defines the delegator address to query for.","type":"string"}}},"cosmos.distribution.v1beta1.QueryParamsResponse":{"description":"QueryParamsResponse is the response type for the Query/Params RPC method.","type":"object","properties":{"params":{"description":"params defines the parameters of the module.","$ref":"#/definitions/cosmos.distribution.v1beta1.Params"}}},"cosmos.distribution.v1beta1.QueryValidatorCommissionResponse":{"type":"object","title":"QueryValidatorCommissionResponse is the response type for the\nQuery/ValidatorCommission RPC method","properties":{"commission":{"description":"commission defines the commission the validator received.","$ref":"#/definitions/cosmos.distribution.v1beta1.ValidatorAccumulatedCommission"}}},"cosmos.distribution.v1beta1.QueryValidatorDistributionInfoResponse":{"description":"QueryValidatorDistributionInfoResponse is the response type for the Query/ValidatorDistributionInfo RPC method.","type":"object","properties":{"commission":{"description":"commission defines the commission the validator received.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.DecCoin"}},"operator_address":{"description":"operator_address defines the validator operator address.","type":"string"},"self_bond_rewards":{"description":"self_bond_rewards defines the self delegations rewards.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.DecCoin"}}}},"cosmos.distribution.v1beta1.QueryValidatorOutstandingRewardsResponse":{"description":"QueryValidatorOutstandingRewardsResponse is the response type for the\nQuery/ValidatorOutstandingRewards RPC method.","type":"object","properties":{"rewards":{"$ref":"#/definitions/cosmos.distribution.v1beta1.ValidatorOutstandingRewards"}}},"cosmos.distribution.v1beta1.QueryValidatorSlashesResponse":{"description":"QueryValidatorSlashesResponse is the response type for the\nQuery/ValidatorSlashes RPC method.","type":"object","properties":{"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"},"slashes":{"description":"slashes defines the slashes the validator received.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.distribution.v1beta1.ValidatorSlashEvent"}}}},"cosmos.distribution.v1beta1.ValidatorAccumulatedCommission":{"description":"ValidatorAccumulatedCommission represents accumulated commission\nfor a validator kept as a running counter, can be withdrawn at any time.","type":"object","properties":{"commission":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.DecCoin"}}}},"cosmos.distribution.v1beta1.ValidatorOutstandingRewards":{"description":"ValidatorOutstandingRewards represents outstanding (un-withdrawn) rewards\nfor a validator inexpensive to track, allows simple sanity checks.","type":"object","properties":{"rewards":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.DecCoin"}}}},"cosmos.distribution.v1beta1.ValidatorSlashEvent":{"description":"ValidatorSlashEvent represents a validator slash event.\nHeight is implicit within the store key.\nThis is needed to calculate appropriate amount of staking tokens\nfor delegations which are withdrawn after a slash has occurred.","type":"object","properties":{"fraction":{"type":"string"},"validator_period":{"type":"string","format":"uint64"}}},"cosmos.evidence.v1beta1.MsgSubmitEvidence":{"description":"MsgSubmitEvidence represents a message that supports submitting arbitrary\nEvidence of misbehavior such as equivocation or counterfactual signing.","type":"object","properties":{"evidence":{"description":"evidence defines the evidence of misbehavior.","$ref":"#/definitions/google.protobuf.Any"},"submitter":{"description":"submitter is the signer account address of evidence.","type":"string"}}},"cosmos.evidence.v1beta1.MsgSubmitEvidenceResponse":{"description":"MsgSubmitEvidenceResponse defines the Msg/SubmitEvidence response type.","type":"object","properties":{"hash":{"description":"hash defines the hash of the evidence.","type":"string","format":"byte"}}},"cosmos.evidence.v1beta1.QueryAllEvidenceResponse":{"description":"QueryAllEvidenceResponse is the response type for the Query/AllEvidence RPC\nmethod.","type":"object","properties":{"evidence":{"description":"evidence returns all evidences.","type":"array","items":{"type":"object","$ref":"#/definitions/google.protobuf.Any"}},"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"cosmos.evidence.v1beta1.QueryEvidenceResponse":{"description":"QueryEvidenceResponse is the response type for the Query/Evidence RPC method.","type":"object","properties":{"evidence":{"description":"evidence returns the requested evidence.","$ref":"#/definitions/google.protobuf.Any"}}},"cosmos.feegrant.v1beta1.Grant":{"type":"object","title":"Grant is stored in the KVStore to record a grant with full context","properties":{"allowance":{"description":"allowance can be any of basic, periodic, allowed fee allowance.","$ref":"#/definitions/google.protobuf.Any"},"grantee":{"description":"grantee is the address of the user being granted an allowance of another user's funds.","type":"string"},"granter":{"description":"granter is the address of the user granting an allowance of their funds.","type":"string"}}},"cosmos.feegrant.v1beta1.MsgGrantAllowance":{"description":"MsgGrantAllowance adds permission for Grantee to spend up to Allowance\nof fees from the account of Granter.","type":"object","properties":{"allowance":{"description":"allowance can be any of basic, periodic, allowed fee allowance.","$ref":"#/definitions/google.protobuf.Any"},"grantee":{"description":"grantee is the address of the user being granted an allowance of another user's funds.","type":"string"},"granter":{"description":"granter is the address of the user granting an allowance of their funds.","type":"string"}}},"cosmos.feegrant.v1beta1.MsgGrantAllowanceResponse":{"description":"MsgGrantAllowanceResponse defines the Msg/GrantAllowanceResponse response type.","type":"object"},"cosmos.feegrant.v1beta1.MsgPruneAllowances":{"description":"MsgPruneAllowances prunes expired fee allowances.\n\nSince cosmos-sdk 0.50","type":"object","properties":{"pruner":{"description":"pruner is the address of the user pruning expired allowances.","type":"string"}}},"cosmos.feegrant.v1beta1.MsgPruneAllowancesResponse":{"description":"MsgPruneAllowancesResponse defines the Msg/PruneAllowancesResponse response type.\n\nSince cosmos-sdk 0.50","type":"object"},"cosmos.feegrant.v1beta1.MsgRevokeAllowance":{"description":"MsgRevokeAllowance removes any existing Allowance from Granter to Grantee.","type":"object","properties":{"grantee":{"description":"grantee is the address of the user being granted an allowance of another user's funds.","type":"string"},"granter":{"description":"granter is the address of the user granting an allowance of their funds.","type":"string"}}},"cosmos.feegrant.v1beta1.MsgRevokeAllowanceResponse":{"description":"MsgRevokeAllowanceResponse defines the Msg/RevokeAllowanceResponse response type.","type":"object"},"cosmos.feegrant.v1beta1.QueryAllowanceResponse":{"description":"QueryAllowanceResponse is the response type for the Query/Allowance RPC method.","type":"object","properties":{"allowance":{"description":"allowance is a allowance granted for grantee by granter.","$ref":"#/definitions/cosmos.feegrant.v1beta1.Grant"}}},"cosmos.feegrant.v1beta1.QueryAllowancesByGranterResponse":{"description":"QueryAllowancesByGranterResponse is the response type for the Query/AllowancesByGranter RPC method.\n\nSince: cosmos-sdk 0.46","type":"object","properties":{"allowances":{"description":"allowances that have been issued by the granter.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.feegrant.v1beta1.Grant"}},"pagination":{"description":"pagination defines an pagination for the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"cosmos.feegrant.v1beta1.QueryAllowancesResponse":{"description":"QueryAllowancesResponse is the response type for the Query/Allowances RPC method.","type":"object","properties":{"allowances":{"description":"allowances are allowance's granted for grantee by granter.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.feegrant.v1beta1.Grant"}},"pagination":{"description":"pagination defines an pagination for the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"cosmos.gov.v1.Deposit":{"description":"Deposit defines an amount deposited by an account address to an active\nproposal.","type":"object","properties":{"amount":{"description":"amount to be deposited by depositor.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}},"depositor":{"description":"depositor defines the deposit addresses from the proposals.","type":"string"},"proposal_id":{"description":"proposal_id defines the unique id of the proposal.","type":"string","format":"uint64"}}},"cosmos.gov.v1.DepositParams":{"description":"DepositParams defines the params for deposits on governance proposals.","type":"object","properties":{"max_deposit_period":{"description":"Maximum period for Atom holders to deposit on a proposal. Initial value: 2\nmonths.","type":"string"},"min_deposit":{"description":"Minimum deposit for a proposal to enter voting period.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}}}},"cosmos.gov.v1.MsgCancelProposal":{"description":"MsgCancelProposal is the Msg/CancelProposal request type.\n\nSince: cosmos-sdk 0.50","type":"object","properties":{"proposal_id":{"description":"proposal_id defines the unique id of the proposal.","type":"string","format":"uint64"},"proposer":{"description":"proposer is the account address of the proposer.","type":"string"}}},"cosmos.gov.v1.MsgCancelProposalResponse":{"description":"MsgCancelProposalResponse defines the response structure for executing a\nMsgCancelProposal message.\n\nSince: cosmos-sdk 0.50","type":"object","properties":{"canceled_height":{"description":"canceled_height defines the block height at which the proposal is canceled.","type":"string","format":"uint64"},"canceled_time":{"description":"canceled_time is the time when proposal is canceled.","type":"string","format":"date-time"},"proposal_id":{"description":"proposal_id defines the unique id of the proposal.","type":"string","format":"uint64"}}},"cosmos.gov.v1.MsgDeposit":{"description":"MsgDeposit defines a message to submit a deposit to an existing proposal.","type":"object","properties":{"amount":{"description":"amount to be deposited by depositor.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}},"depositor":{"description":"depositor defines the deposit addresses from the proposals.","type":"string"},"proposal_id":{"description":"proposal_id defines the unique id of the proposal.","type":"string","format":"uint64"}}},"cosmos.gov.v1.MsgDepositResponse":{"description":"MsgDepositResponse defines the Msg/Deposit response type.","type":"object"},"cosmos.gov.v1.MsgExecLegacyContent":{"description":"MsgExecLegacyContent is used to wrap the legacy content field into a message.\nThis ensures backwards compatibility with v1beta1.MsgSubmitProposal.","type":"object","properties":{"authority":{"description":"authority must be the gov module address.","type":"string"},"content":{"description":"content is the proposal's content.","$ref":"#/definitions/google.protobuf.Any"}}},"cosmos.gov.v1.MsgExecLegacyContentResponse":{"description":"MsgExecLegacyContentResponse defines the Msg/ExecLegacyContent response type.","type":"object"},"cosmos.gov.v1.MsgSubmitProposal":{"description":"MsgSubmitProposal defines an sdk.Msg type that supports submitting arbitrary\nproposal Content.","type":"object","properties":{"expedited":{"description":"Since: cosmos-sdk 0.50","type":"boolean","title":"expedited defines if the proposal is expedited or not"},"initial_deposit":{"description":"initial_deposit is the deposit value that must be paid at proposal submission.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}},"messages":{"description":"messages are the arbitrary messages to be executed if proposal passes.","type":"array","items":{"type":"object","$ref":"#/definitions/google.protobuf.Any"}},"metadata":{"description":"metadata is any arbitrary metadata attached to the proposal.","type":"string"},"proposer":{"description":"proposer is the account address of the proposer.","type":"string"},"summary":{"description":"Since: cosmos-sdk 0.47","type":"string","title":"summary is the summary of the proposal"},"title":{"description":"title is the title of the proposal.\n\nSince: cosmos-sdk 0.47","type":"string"}}},"cosmos.gov.v1.MsgSubmitProposalResponse":{"description":"MsgSubmitProposalResponse defines the Msg/SubmitProposal response type.","type":"object","properties":{"proposal_id":{"description":"proposal_id defines the unique id of the proposal.","type":"string","format":"uint64"}}},"cosmos.gov.v1.MsgUpdateParams":{"description":"MsgUpdateParams is the Msg/UpdateParams request type.\n\nSince: cosmos-sdk 0.47","type":"object","properties":{"authority":{"description":"authority is the address that controls the module (defaults to x/gov unless overwritten).","type":"string"},"params":{"description":"params defines the x/gov parameters to update.\n\nNOTE: All parameters must be supplied.","$ref":"#/definitions/cosmos.gov.v1.Params"}}},"cosmos.gov.v1.MsgUpdateParamsResponse":{"description":"MsgUpdateParamsResponse defines the response structure for executing a\nMsgUpdateParams message.\n\nSince: cosmos-sdk 0.47","type":"object"},"cosmos.gov.v1.MsgVote":{"description":"MsgVote defines a message to cast a vote.","type":"object","properties":{"metadata":{"description":"metadata is any arbitrary metadata attached to the Vote.","type":"string"},"option":{"description":"option defines the vote option.","$ref":"#/definitions/cosmos.gov.v1.VoteOption"},"proposal_id":{"description":"proposal_id defines the unique id of the proposal.","type":"string","format":"uint64"},"voter":{"description":"voter is the voter address for the proposal.","type":"string"}}},"cosmos.gov.v1.MsgVoteResponse":{"description":"MsgVoteResponse defines the Msg/Vote response type.","type":"object"},"cosmos.gov.v1.MsgVoteWeighted":{"description":"MsgVoteWeighted defines a message to cast a vote.","type":"object","properties":{"metadata":{"description":"metadata is any arbitrary metadata attached to the VoteWeighted.","type":"string"},"options":{"description":"options defines the weighted vote options.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.gov.v1.WeightedVoteOption"}},"proposal_id":{"description":"proposal_id defines the unique id of the proposal.","type":"string","format":"uint64"},"voter":{"description":"voter is the voter address for the proposal.","type":"string"}}},"cosmos.gov.v1.MsgVoteWeightedResponse":{"description":"MsgVoteWeightedResponse defines the Msg/VoteWeighted response type.","type":"object"},"cosmos.gov.v1.Params":{"description":"Params defines the parameters for the x/gov module.\n\nSince: cosmos-sdk 0.47","type":"object","properties":{"burn_proposal_deposit_prevote":{"type":"boolean","title":"burn deposits if the proposal does not enter voting period"},"burn_vote_quorum":{"type":"boolean","title":"burn deposits if a proposal does not meet quorum"},"burn_vote_veto":{"type":"boolean","title":"burn deposits if quorum with vote type no_veto is met"},"expedited_min_deposit":{"description":"Minimum expedited deposit for a proposal to enter voting period.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}},"expedited_threshold":{"description":"Minimum proportion of Yes votes for proposal to pass. Default value: 0.67.\n\nSince: cosmos-sdk 0.50","type":"string"},"expedited_voting_period":{"description":"Duration of the voting period of an expedited proposal.\n\nSince: cosmos-sdk 0.50","type":"string"},"max_deposit_period":{"description":"Maximum period for Atom holders to deposit on a proposal. Initial value: 2\nmonths.","type":"string"},"min_deposit":{"description":"Minimum deposit for a proposal to enter voting period.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}},"min_deposit_ratio":{"description":"The ratio representing the proportion of the deposit value minimum that must be met when making a deposit.\nDefault value: 0.01. Meaning that for a chain with a min_deposit of 100stake, a deposit of 1stake would be\nrequired.\n\nSince: cosmos-sdk 0.50","type":"string"},"min_initial_deposit_ratio":{"description":"The ratio representing the proportion of the deposit value that must be paid at proposal submission.","type":"string"},"proposal_cancel_dest":{"description":"The address which will receive (proposal_cancel_ratio * deposit) proposal deposits.\nIf empty, the (proposal_cancel_ratio * deposit) proposal deposits will be burned.\n\nSince: cosmos-sdk 0.50","type":"string"},"proposal_cancel_ratio":{"description":"The cancel ratio which will not be returned back to the depositors when a proposal is cancelled.\n\nSince: cosmos-sdk 0.50","type":"string"},"quorum":{"description":"Minimum percentage of total stake needed to vote for a result to be\n considered valid.","type":"string"},"threshold":{"description":"Minimum proportion of Yes votes for proposal to pass. Default value: 0.5.","type":"string"},"veto_threshold":{"description":"Minimum value of Veto votes to Total votes ratio for proposal to be\n vetoed. Default value: 1/3.","type":"string"},"voting_period":{"description":"Duration of the voting period.","type":"string"}}},"cosmos.gov.v1.Proposal":{"description":"Proposal defines the core field members of a governance proposal.","type":"object","properties":{"deposit_end_time":{"description":"deposit_end_time is the end time for deposition.","type":"string","format":"date-time"},"expedited":{"description":"Since: cosmos-sdk 0.50","type":"boolean","title":"expedited defines if the proposal is expedited"},"failed_reason":{"description":"Since: cosmos-sdk 0.50","type":"string","title":"failed_reason defines the reason why the proposal failed"},"final_tally_result":{"description":"final_tally_result is the final tally result of the proposal. When\nquerying a proposal via gRPC, this field is not populated until the\nproposal's voting period has ended.","$ref":"#/definitions/cosmos.gov.v1.TallyResult"},"id":{"description":"id defines the unique id of the proposal.","type":"string","format":"uint64"},"messages":{"description":"messages are the arbitrary messages to be executed if the proposal passes.","type":"array","items":{"type":"object","$ref":"#/definitions/google.protobuf.Any"}},"metadata":{"type":"string","title":"metadata is any arbitrary metadata attached to the proposal.\nthe recommended format of the metadata is to be found here:\nhttps://docs.cosmos.network/v0.47/modules/gov#proposal-3"},"proposer":{"description":"Since: cosmos-sdk 0.47","type":"string","title":"proposer is the address of the proposal sumbitter"},"status":{"description":"status defines the proposal status.","$ref":"#/definitions/cosmos.gov.v1.ProposalStatus"},"submit_time":{"description":"submit_time is the time of proposal submission.","type":"string","format":"date-time"},"summary":{"description":"Since: cosmos-sdk 0.47","type":"string","title":"summary is a short summary of the proposal"},"title":{"description":"Since: cosmos-sdk 0.47","type":"string","title":"title is the title of the proposal"},"total_deposit":{"description":"total_deposit is the total deposit on the proposal.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}},"voting_end_time":{"description":"voting_end_time is the end time of voting on a proposal.","type":"string","format":"date-time"},"voting_start_time":{"description":"voting_start_time is the starting time to vote on a proposal.","type":"string","format":"date-time"}}},"cosmos.gov.v1.ProposalStatus":{"description":"ProposalStatus enumerates the valid statuses of a proposal.\n\n - PROPOSAL_STATUS_UNSPECIFIED: PROPOSAL_STATUS_UNSPECIFIED defines the default proposal status.\n - PROPOSAL_STATUS_DEPOSIT_PERIOD: PROPOSAL_STATUS_DEPOSIT_PERIOD defines a proposal status during the deposit\nperiod.\n - PROPOSAL_STATUS_VOTING_PERIOD: PROPOSAL_STATUS_VOTING_PERIOD defines a proposal status during the voting\nperiod.\n - PROPOSAL_STATUS_PASSED: PROPOSAL_STATUS_PASSED defines a proposal status of a proposal that has\npassed.\n - PROPOSAL_STATUS_REJECTED: PROPOSAL_STATUS_REJECTED defines a proposal status of a proposal that has\nbeen rejected.\n - PROPOSAL_STATUS_FAILED: PROPOSAL_STATUS_FAILED defines a proposal status of a proposal that has\nfailed.","type":"string","default":"PROPOSAL_STATUS_UNSPECIFIED","enum":["PROPOSAL_STATUS_UNSPECIFIED","PROPOSAL_STATUS_DEPOSIT_PERIOD","PROPOSAL_STATUS_VOTING_PERIOD","PROPOSAL_STATUS_PASSED","PROPOSAL_STATUS_REJECTED","PROPOSAL_STATUS_FAILED"]},"cosmos.gov.v1.QueryConstitutionResponse":{"type":"object","title":"QueryConstitutionResponse is the response type for the Query/Constitution RPC method","properties":{"constitution":{"type":"string"}}},"cosmos.gov.v1.QueryDepositResponse":{"description":"QueryDepositResponse is the response type for the Query/Deposit RPC method.","type":"object","properties":{"deposit":{"description":"deposit defines the requested deposit.","$ref":"#/definitions/cosmos.gov.v1.Deposit"}}},"cosmos.gov.v1.QueryDepositsResponse":{"description":"QueryDepositsResponse is the response type for the Query/Deposits RPC method.","type":"object","properties":{"deposits":{"description":"deposits defines the requested deposits.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.gov.v1.Deposit"}},"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"cosmos.gov.v1.QueryParamsResponse":{"description":"QueryParamsResponse is the response type for the Query/Params RPC method.","type":"object","properties":{"deposit_params":{"description":"Deprecated: Prefer to use `params` instead.\ndeposit_params defines the parameters related to deposit.","$ref":"#/definitions/cosmos.gov.v1.DepositParams"},"params":{"description":"params defines all the paramaters of x/gov module.\n\nSince: cosmos-sdk 0.47","$ref":"#/definitions/cosmos.gov.v1.Params"},"tally_params":{"description":"Deprecated: Prefer to use `params` instead.\ntally_params defines the parameters related to tally.","$ref":"#/definitions/cosmos.gov.v1.TallyParams"},"voting_params":{"description":"Deprecated: Prefer to use `params` instead.\nvoting_params defines the parameters related to voting.","$ref":"#/definitions/cosmos.gov.v1.VotingParams"}}},"cosmos.gov.v1.QueryProposalResponse":{"description":"QueryProposalResponse is the response type for the Query/Proposal RPC method.","type":"object","properties":{"proposal":{"description":"proposal is the requested governance proposal.","$ref":"#/definitions/cosmos.gov.v1.Proposal"}}},"cosmos.gov.v1.QueryProposalsResponse":{"description":"QueryProposalsResponse is the response type for the Query/Proposals RPC\nmethod.","type":"object","properties":{"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"},"proposals":{"description":"proposals defines all the requested governance proposals.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.gov.v1.Proposal"}}}},"cosmos.gov.v1.QueryTallyResultResponse":{"description":"QueryTallyResultResponse is the response type for the Query/Tally RPC method.","type":"object","properties":{"tally":{"description":"tally defines the requested tally.","$ref":"#/definitions/cosmos.gov.v1.TallyResult"}}},"cosmos.gov.v1.QueryVoteResponse":{"description":"QueryVoteResponse is the response type for the Query/Vote RPC method.","type":"object","properties":{"vote":{"description":"vote defines the queried vote.","$ref":"#/definitions/cosmos.gov.v1.Vote"}}},"cosmos.gov.v1.QueryVotesResponse":{"description":"QueryVotesResponse is the response type for the Query/Votes RPC method.","type":"object","properties":{"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"},"votes":{"description":"votes defines the queried votes.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.gov.v1.Vote"}}}},"cosmos.gov.v1.TallyParams":{"description":"TallyParams defines the params for tallying votes on governance proposals.","type":"object","properties":{"quorum":{"description":"Minimum percentage of total stake needed to vote for a result to be\nconsidered valid.","type":"string"},"threshold":{"description":"Minimum proportion of Yes votes for proposal to pass. Default value: 0.5.","type":"string"},"veto_threshold":{"description":"Minimum value of Veto votes to Total votes ratio for proposal to be\nvetoed. Default value: 1/3.","type":"string"}}},"cosmos.gov.v1.TallyResult":{"description":"TallyResult defines a standard tally for a governance proposal.","type":"object","properties":{"abstain_count":{"description":"abstain_count is the number of abstain votes on a proposal.","type":"string"},"no_count":{"description":"no_count is the number of no votes on a proposal.","type":"string"},"no_with_veto_count":{"description":"no_with_veto_count is the number of no with veto votes on a proposal.","type":"string"},"yes_count":{"description":"yes_count is the number of yes votes on a proposal.","type":"string"}}},"cosmos.gov.v1.Vote":{"description":"Vote defines a vote on a governance proposal.\nA Vote consists of a proposal ID, the voter, and the vote option.","type":"object","properties":{"metadata":{"type":"string","title":"metadata is any arbitrary metadata attached to the vote.\nthe recommended format of the metadata is to be found here: https://docs.cosmos.network/v0.47/modules/gov#vote-5"},"options":{"description":"options is the weighted vote options.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.gov.v1.WeightedVoteOption"}},"proposal_id":{"description":"proposal_id defines the unique id of the proposal.","type":"string","format":"uint64"},"voter":{"description":"voter is the voter address of the proposal.","type":"string"}}},"cosmos.gov.v1.VoteOption":{"description":"VoteOption enumerates the valid vote options for a given governance proposal.\n\n - VOTE_OPTION_UNSPECIFIED: VOTE_OPTION_UNSPECIFIED defines a no-op vote option.\n - VOTE_OPTION_YES: VOTE_OPTION_YES defines a yes vote option.\n - VOTE_OPTION_ABSTAIN: VOTE_OPTION_ABSTAIN defines an abstain vote option.\n - VOTE_OPTION_NO: VOTE_OPTION_NO defines a no vote option.\n - VOTE_OPTION_NO_WITH_VETO: VOTE_OPTION_NO_WITH_VETO defines a no with veto vote option.","type":"string","default":"VOTE_OPTION_UNSPECIFIED","enum":["VOTE_OPTION_UNSPECIFIED","VOTE_OPTION_YES","VOTE_OPTION_ABSTAIN","VOTE_OPTION_NO","VOTE_OPTION_NO_WITH_VETO"]},"cosmos.gov.v1.VotingParams":{"description":"VotingParams defines the params for voting on governance proposals.","type":"object","properties":{"voting_period":{"description":"Duration of the voting period.","type":"string"}}},"cosmos.gov.v1.WeightedVoteOption":{"description":"WeightedVoteOption defines a unit of vote for vote split.","type":"object","properties":{"option":{"description":"option defines the valid vote options, it must not contain duplicate vote options.","$ref":"#/definitions/cosmos.gov.v1.VoteOption"},"weight":{"description":"weight is the vote weight associated with the vote option.","type":"string"}}},"cosmos.gov.v1beta1.Deposit":{"description":"Deposit defines an amount deposited by an account address to an active\nproposal.","type":"object","properties":{"amount":{"description":"amount to be deposited by depositor.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}},"depositor":{"description":"depositor defines the deposit addresses from the proposals.","type":"string"},"proposal_id":{"description":"proposal_id defines the unique id of the proposal.","type":"string","format":"uint64"}}},"cosmos.gov.v1beta1.DepositParams":{"description":"DepositParams defines the params for deposits on governance proposals.","type":"object","properties":{"max_deposit_period":{"description":"Maximum period for Atom holders to deposit on a proposal. Initial value: 2\nmonths.","type":"string"},"min_deposit":{"description":"Minimum deposit for a proposal to enter voting period.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}}}},"cosmos.gov.v1beta1.MsgDeposit":{"description":"MsgDeposit defines a message to submit a deposit to an existing proposal.","type":"object","properties":{"amount":{"description":"amount to be deposited by depositor.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}},"depositor":{"description":"depositor defines the deposit addresses from the proposals.","type":"string"},"proposal_id":{"description":"proposal_id defines the unique id of the proposal.","type":"string","format":"uint64"}}},"cosmos.gov.v1beta1.MsgDepositResponse":{"description":"MsgDepositResponse defines the Msg/Deposit response type.","type":"object"},"cosmos.gov.v1beta1.MsgSubmitProposal":{"description":"MsgSubmitProposal defines an sdk.Msg type that supports submitting arbitrary\nproposal Content.","type":"object","properties":{"content":{"description":"content is the proposal's content.","$ref":"#/definitions/google.protobuf.Any"},"initial_deposit":{"description":"initial_deposit is the deposit value that must be paid at proposal submission.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}},"proposer":{"description":"proposer is the account address of the proposer.","type":"string"}}},"cosmos.gov.v1beta1.MsgSubmitProposalResponse":{"description":"MsgSubmitProposalResponse defines the Msg/SubmitProposal response type.","type":"object","properties":{"proposal_id":{"description":"proposal_id defines the unique id of the proposal.","type":"string","format":"uint64"}}},"cosmos.gov.v1beta1.MsgVote":{"description":"MsgVote defines a message to cast a vote.","type":"object","properties":{"option":{"description":"option defines the vote option.","$ref":"#/definitions/cosmos.gov.v1beta1.VoteOption"},"proposal_id":{"description":"proposal_id defines the unique id of the proposal.","type":"string","format":"uint64"},"voter":{"description":"voter is the voter address for the proposal.","type":"string"}}},"cosmos.gov.v1beta1.MsgVoteResponse":{"description":"MsgVoteResponse defines the Msg/Vote response type.","type":"object"},"cosmos.gov.v1beta1.MsgVoteWeighted":{"description":"MsgVoteWeighted defines a message to cast a vote.\n\nSince: cosmos-sdk 0.43","type":"object","properties":{"options":{"description":"options defines the weighted vote options.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.gov.v1beta1.WeightedVoteOption"}},"proposal_id":{"description":"proposal_id defines the unique id of the proposal.","type":"string","format":"uint64"},"voter":{"description":"voter is the voter address for the proposal.","type":"string"}}},"cosmos.gov.v1beta1.MsgVoteWeightedResponse":{"description":"MsgVoteWeightedResponse defines the Msg/VoteWeighted response type.\n\nSince: cosmos-sdk 0.43","type":"object"},"cosmos.gov.v1beta1.Proposal":{"description":"Proposal defines the core field members of a governance proposal.","type":"object","properties":{"content":{"description":"content is the proposal's content.","$ref":"#/definitions/google.protobuf.Any"},"deposit_end_time":{"description":"deposit_end_time is the end time for deposition.","type":"string","format":"date-time"},"final_tally_result":{"description":"final_tally_result is the final tally result of the proposal. When\nquerying a proposal via gRPC, this field is not populated until the\nproposal's voting period has ended.","$ref":"#/definitions/cosmos.gov.v1beta1.TallyResult"},"proposal_id":{"description":"proposal_id defines the unique id of the proposal.","type":"string","format":"uint64"},"status":{"description":"status defines the proposal status.","$ref":"#/definitions/cosmos.gov.v1beta1.ProposalStatus"},"submit_time":{"description":"submit_time is the time of proposal submission.","type":"string","format":"date-time"},"total_deposit":{"description":"total_deposit is the total deposit on the proposal.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}},"voting_end_time":{"description":"voting_end_time is the end time of voting on a proposal.","type":"string","format":"date-time"},"voting_start_time":{"description":"voting_start_time is the starting time to vote on a proposal.","type":"string","format":"date-time"}}},"cosmos.gov.v1beta1.ProposalStatus":{"description":"ProposalStatus enumerates the valid statuses of a proposal.\n\n - PROPOSAL_STATUS_UNSPECIFIED: PROPOSAL_STATUS_UNSPECIFIED defines the default proposal status.\n - PROPOSAL_STATUS_DEPOSIT_PERIOD: PROPOSAL_STATUS_DEPOSIT_PERIOD defines a proposal status during the deposit\nperiod.\n - PROPOSAL_STATUS_VOTING_PERIOD: PROPOSAL_STATUS_VOTING_PERIOD defines a proposal status during the voting\nperiod.\n - PROPOSAL_STATUS_PASSED: PROPOSAL_STATUS_PASSED defines a proposal status of a proposal that has\npassed.\n - PROPOSAL_STATUS_REJECTED: PROPOSAL_STATUS_REJECTED defines a proposal status of a proposal that has\nbeen rejected.\n - PROPOSAL_STATUS_FAILED: PROPOSAL_STATUS_FAILED defines a proposal status of a proposal that has\nfailed.","type":"string","default":"PROPOSAL_STATUS_UNSPECIFIED","enum":["PROPOSAL_STATUS_UNSPECIFIED","PROPOSAL_STATUS_DEPOSIT_PERIOD","PROPOSAL_STATUS_VOTING_PERIOD","PROPOSAL_STATUS_PASSED","PROPOSAL_STATUS_REJECTED","PROPOSAL_STATUS_FAILED"]},"cosmos.gov.v1beta1.QueryDepositResponse":{"description":"QueryDepositResponse is the response type for the Query/Deposit RPC method.","type":"object","properties":{"deposit":{"description":"deposit defines the requested deposit.","$ref":"#/definitions/cosmos.gov.v1beta1.Deposit"}}},"cosmos.gov.v1beta1.QueryDepositsResponse":{"description":"QueryDepositsResponse is the response type for the Query/Deposits RPC method.","type":"object","properties":{"deposits":{"description":"deposits defines the requested deposits.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.gov.v1beta1.Deposit"}},"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"cosmos.gov.v1beta1.QueryParamsResponse":{"description":"QueryParamsResponse is the response type for the Query/Params RPC method.","type":"object","properties":{"deposit_params":{"description":"deposit_params defines the parameters related to deposit.","$ref":"#/definitions/cosmos.gov.v1beta1.DepositParams"},"tally_params":{"description":"tally_params defines the parameters related to tally.","$ref":"#/definitions/cosmos.gov.v1beta1.TallyParams"},"voting_params":{"description":"voting_params defines the parameters related to voting.","$ref":"#/definitions/cosmos.gov.v1beta1.VotingParams"}}},"cosmos.gov.v1beta1.QueryProposalResponse":{"description":"QueryProposalResponse is the response type for the Query/Proposal RPC method.","type":"object","properties":{"proposal":{"$ref":"#/definitions/cosmos.gov.v1beta1.Proposal"}}},"cosmos.gov.v1beta1.QueryProposalsResponse":{"description":"QueryProposalsResponse is the response type for the Query/Proposals RPC\nmethod.","type":"object","properties":{"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"},"proposals":{"description":"proposals defines all the requested governance proposals.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.gov.v1beta1.Proposal"}}}},"cosmos.gov.v1beta1.QueryTallyResultResponse":{"description":"QueryTallyResultResponse is the response type for the Query/Tally RPC method.","type":"object","properties":{"tally":{"description":"tally defines the requested tally.","$ref":"#/definitions/cosmos.gov.v1beta1.TallyResult"}}},"cosmos.gov.v1beta1.QueryVoteResponse":{"description":"QueryVoteResponse is the response type for the Query/Vote RPC method.","type":"object","properties":{"vote":{"description":"vote defines the queried vote.","$ref":"#/definitions/cosmos.gov.v1beta1.Vote"}}},"cosmos.gov.v1beta1.QueryVotesResponse":{"description":"QueryVotesResponse is the response type for the Query/Votes RPC method.","type":"object","properties":{"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"},"votes":{"description":"votes defines the queried votes.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.gov.v1beta1.Vote"}}}},"cosmos.gov.v1beta1.TallyParams":{"description":"TallyParams defines the params for tallying votes on governance proposals.","type":"object","properties":{"quorum":{"description":"Minimum percentage of total stake needed to vote for a result to be\nconsidered valid.","type":"string","format":"byte"},"threshold":{"description":"Minimum proportion of Yes votes for proposal to pass. Default value: 0.5.","type":"string","format":"byte"},"veto_threshold":{"description":"Minimum value of Veto votes to Total votes ratio for proposal to be\nvetoed. Default value: 1/3.","type":"string","format":"byte"}}},"cosmos.gov.v1beta1.TallyResult":{"description":"TallyResult defines a standard tally for a governance proposal.","type":"object","properties":{"abstain":{"description":"abstain is the number of abstain votes on a proposal.","type":"string"},"no":{"description":"no is the number of no votes on a proposal.","type":"string"},"no_with_veto":{"description":"no_with_veto is the number of no with veto votes on a proposal.","type":"string"},"yes":{"description":"yes is the number of yes votes on a proposal.","type":"string"}}},"cosmos.gov.v1beta1.Vote":{"description":"Vote defines a vote on a governance proposal.\nA Vote consists of a proposal ID, the voter, and the vote option.","type":"object","properties":{"option":{"description":"Deprecated: Prefer to use `options` instead. This field is set in queries\nif and only if `len(options) == 1` and that option has weight 1. In all\nother cases, this field will default to VOTE_OPTION_UNSPECIFIED.","$ref":"#/definitions/cosmos.gov.v1beta1.VoteOption"},"options":{"description":"options is the weighted vote options.\n\nSince: cosmos-sdk 0.43","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.gov.v1beta1.WeightedVoteOption"}},"proposal_id":{"description":"proposal_id defines the unique id of the proposal.","type":"string","format":"uint64"},"voter":{"description":"voter is the voter address of the proposal.","type":"string"}}},"cosmos.gov.v1beta1.VoteOption":{"description":"VoteOption enumerates the valid vote options for a given governance proposal.\n\n - VOTE_OPTION_UNSPECIFIED: VOTE_OPTION_UNSPECIFIED defines a no-op vote option.\n - VOTE_OPTION_YES: VOTE_OPTION_YES defines a yes vote option.\n - VOTE_OPTION_ABSTAIN: VOTE_OPTION_ABSTAIN defines an abstain vote option.\n - VOTE_OPTION_NO: VOTE_OPTION_NO defines a no vote option.\n - VOTE_OPTION_NO_WITH_VETO: VOTE_OPTION_NO_WITH_VETO defines a no with veto vote option.","type":"string","default":"VOTE_OPTION_UNSPECIFIED","enum":["VOTE_OPTION_UNSPECIFIED","VOTE_OPTION_YES","VOTE_OPTION_ABSTAIN","VOTE_OPTION_NO","VOTE_OPTION_NO_WITH_VETO"]},"cosmos.gov.v1beta1.VotingParams":{"description":"VotingParams defines the params for voting on governance proposals.","type":"object","properties":{"voting_period":{"description":"Duration of the voting period.","type":"string"}}},"cosmos.gov.v1beta1.WeightedVoteOption":{"description":"WeightedVoteOption defines a unit of vote for vote split.\n\nSince: cosmos-sdk 0.43","type":"object","properties":{"option":{"description":"option defines the valid vote options, it must not contain duplicate vote options.","$ref":"#/definitions/cosmos.gov.v1beta1.VoteOption"},"weight":{"description":"weight is the vote weight associated with the vote option.","type":"string"}}},"cosmos.group.v1.Exec":{"description":"Exec defines modes of execution of a proposal on creation or on new vote.\n\n - EXEC_UNSPECIFIED: An empty value means that there should be a separate\nMsgExec request for the proposal to execute.\n - EXEC_TRY: Try to execute the proposal immediately.\nIf the proposal is not allowed per the DecisionPolicy,\nthe proposal will still be open and could\nbe executed at a later point.","type":"string","default":"EXEC_UNSPECIFIED","enum":["EXEC_UNSPECIFIED","EXEC_TRY"]},"cosmos.group.v1.GroupInfo":{"description":"GroupInfo represents the high-level on-chain information for a group.","type":"object","properties":{"admin":{"description":"admin is the account address of the group's admin.","type":"string"},"created_at":{"description":"created_at is a timestamp specifying when a group was created.","type":"string","format":"date-time"},"id":{"description":"id is the unique ID of the group.","type":"string","format":"uint64"},"metadata":{"type":"string","title":"metadata is any arbitrary metadata to attached to the group.\nthe recommended format of the metadata is to be found here: https://docs.cosmos.network/v0.47/modules/group#group-1"},"total_weight":{"description":"total_weight is the sum of the group members' weights.","type":"string"},"version":{"type":"string","format":"uint64","title":"version is used to track changes to a group's membership structure that\nwould break existing proposals. Whenever any members weight is changed,\nor any member is added or removed this version is incremented and will\ncause proposals based on older versions of this group to fail"}}},"cosmos.group.v1.GroupMember":{"description":"GroupMember represents the relationship between a group and a member.","type":"object","properties":{"group_id":{"description":"group_id is the unique ID of the group.","type":"string","format":"uint64"},"member":{"description":"member is the member data.","$ref":"#/definitions/cosmos.group.v1.Member"}}},"cosmos.group.v1.GroupPolicyInfo":{"description":"GroupPolicyInfo represents the high-level on-chain information for a group policy.","type":"object","properties":{"address":{"description":"address is the account address of group policy.","type":"string"},"admin":{"description":"admin is the account address of the group admin.","type":"string"},"created_at":{"description":"created_at is a timestamp specifying when a group policy was created.","type":"string","format":"date-time"},"decision_policy":{"description":"decision_policy specifies the group policy's decision policy.","$ref":"#/definitions/google.protobuf.Any"},"group_id":{"description":"group_id is the unique ID of the group.","type":"string","format":"uint64"},"metadata":{"type":"string","title":"metadata is any arbitrary metadata attached to the group policy.\nthe recommended format of the metadata is to be found here:\nhttps://docs.cosmos.network/v0.47/modules/group#decision-policy-1"},"version":{"description":"version is used to track changes to a group's GroupPolicyInfo structure that\nwould create a different result on a running proposal.","type":"string","format":"uint64"}}},"cosmos.group.v1.Member":{"description":"Member represents a group member with an account address,\nnon-zero weight, metadata and added_at timestamp.","type":"object","properties":{"added_at":{"description":"added_at is a timestamp specifying when a member was added.","type":"string","format":"date-time"},"address":{"description":"address is the member's account address.","type":"string"},"metadata":{"description":"metadata is any arbitrary metadata attached to the member.","type":"string"},"weight":{"description":"weight is the member's voting weight that should be greater than 0.","type":"string"}}},"cosmos.group.v1.MemberRequest":{"description":"MemberRequest represents a group member to be used in Msg server requests.\nContrary to `Member`, it doesn't have any `added_at` field\nsince this field cannot be set as part of requests.","type":"object","properties":{"address":{"description":"address is the member's account address.","type":"string"},"metadata":{"description":"metadata is any arbitrary metadata attached to the member.","type":"string"},"weight":{"description":"weight is the member's voting weight that should be greater than 0.","type":"string"}}},"cosmos.group.v1.MsgCreateGroup":{"description":"MsgCreateGroup is the Msg/CreateGroup request type.","type":"object","properties":{"admin":{"description":"admin is the account address of the group admin.","type":"string"},"members":{"description":"members defines the group members.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.group.v1.MemberRequest"}},"metadata":{"description":"metadata is any arbitrary metadata to attached to the group.","type":"string"}}},"cosmos.group.v1.MsgCreateGroupPolicy":{"description":"MsgCreateGroupPolicy is the Msg/CreateGroupPolicy request type.","type":"object","properties":{"admin":{"description":"admin is the account address of the group admin.","type":"string"},"decision_policy":{"description":"decision_policy specifies the group policy's decision policy.","$ref":"#/definitions/google.protobuf.Any"},"group_id":{"description":"group_id is the unique ID of the group.","type":"string","format":"uint64"},"metadata":{"description":"metadata is any arbitrary metadata attached to the group policy.","type":"string"}}},"cosmos.group.v1.MsgCreateGroupPolicyResponse":{"description":"MsgCreateGroupPolicyResponse is the Msg/CreateGroupPolicy response type.","type":"object","properties":{"address":{"description":"address is the account address of the newly created group policy.","type":"string"}}},"cosmos.group.v1.MsgCreateGroupResponse":{"description":"MsgCreateGroupResponse is the Msg/CreateGroup response type.","type":"object","properties":{"group_id":{"description":"group_id is the unique ID of the newly created group.","type":"string","format":"uint64"}}},"cosmos.group.v1.MsgCreateGroupWithPolicy":{"description":"MsgCreateGroupWithPolicy is the Msg/CreateGroupWithPolicy request type.","type":"object","properties":{"admin":{"description":"admin is the account address of the group and group policy admin.","type":"string"},"decision_policy":{"description":"decision_policy specifies the group policy's decision policy.","$ref":"#/definitions/google.protobuf.Any"},"group_metadata":{"description":"group_metadata is any arbitrary metadata attached to the group.","type":"string"},"group_policy_as_admin":{"description":"group_policy_as_admin is a boolean field, if set to true, the group policy account address will be used as group\nand group policy admin.","type":"boolean"},"group_policy_metadata":{"description":"group_policy_metadata is any arbitrary metadata attached to the group policy.","type":"string"},"members":{"description":"members defines the group members.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.group.v1.MemberRequest"}}}},"cosmos.group.v1.MsgCreateGroupWithPolicyResponse":{"description":"MsgCreateGroupWithPolicyResponse is the Msg/CreateGroupWithPolicy response type.","type":"object","properties":{"group_id":{"description":"group_id is the unique ID of the newly created group with policy.","type":"string","format":"uint64"},"group_policy_address":{"description":"group_policy_address is the account address of the newly created group policy.","type":"string"}}},"cosmos.group.v1.MsgExec":{"description":"MsgExec is the Msg/Exec request type.","type":"object","properties":{"executor":{"description":"executor is the account address used to execute the proposal.","type":"string"},"proposal_id":{"description":"proposal is the unique ID of the proposal.","type":"string","format":"uint64"}}},"cosmos.group.v1.MsgExecResponse":{"description":"MsgExecResponse is the Msg/Exec request type.","type":"object","properties":{"result":{"description":"result is the final result of the proposal execution.","$ref":"#/definitions/cosmos.group.v1.ProposalExecutorResult"}}},"cosmos.group.v1.MsgLeaveGroup":{"description":"MsgLeaveGroup is the Msg/LeaveGroup request type.","type":"object","properties":{"address":{"description":"address is the account address of the group member.","type":"string"},"group_id":{"description":"group_id is the unique ID of the group.","type":"string","format":"uint64"}}},"cosmos.group.v1.MsgLeaveGroupResponse":{"description":"MsgLeaveGroupResponse is the Msg/LeaveGroup response type.","type":"object"},"cosmos.group.v1.MsgSubmitProposal":{"description":"MsgSubmitProposal is the Msg/SubmitProposal request type.","type":"object","properties":{"exec":{"description":"exec defines the mode of execution of the proposal,\nwhether it should be executed immediately on creation or not.\nIf so, proposers signatures are considered as Yes votes.","$ref":"#/definitions/cosmos.group.v1.Exec"},"group_policy_address":{"description":"group_policy_address is the account address of group policy.","type":"string"},"messages":{"description":"messages is a list of `sdk.Msg`s that will be executed if the proposal passes.","type":"array","items":{"type":"object","$ref":"#/definitions/google.protobuf.Any"}},"metadata":{"description":"metadata is any arbitrary metadata attached to the proposal.","type":"string"},"proposers":{"description":"proposers are the account addresses of the proposers.\nProposers signatures will be counted as yes votes.","type":"array","items":{"type":"string"}},"summary":{"description":"summary is the summary of the proposal.\n\nSince: cosmos-sdk 0.47","type":"string"},"title":{"description":"title is the title of the proposal.\n\nSince: cosmos-sdk 0.47","type":"string"}}},"cosmos.group.v1.MsgSubmitProposalResponse":{"description":"MsgSubmitProposalResponse is the Msg/SubmitProposal response type.","type":"object","properties":{"proposal_id":{"description":"proposal is the unique ID of the proposal.","type":"string","format":"uint64"}}},"cosmos.group.v1.MsgUpdateGroupAdmin":{"description":"MsgUpdateGroupAdmin is the Msg/UpdateGroupAdmin request type.","type":"object","properties":{"admin":{"description":"admin is the current account address of the group admin.","type":"string"},"group_id":{"description":"group_id is the unique ID of the group.","type":"string","format":"uint64"},"new_admin":{"description":"new_admin is the group new admin account address.","type":"string"}}},"cosmos.group.v1.MsgUpdateGroupAdminResponse":{"description":"MsgUpdateGroupAdminResponse is the Msg/UpdateGroupAdmin response type.","type":"object"},"cosmos.group.v1.MsgUpdateGroupMembers":{"description":"MsgUpdateGroupMembers is the Msg/UpdateGroupMembers request type.","type":"object","properties":{"admin":{"description":"admin is the account address of the group admin.","type":"string"},"group_id":{"description":"group_id is the unique ID of the group.","type":"string","format":"uint64"},"member_updates":{"description":"member_updates is the list of members to update,\nset weight to 0 to remove a member.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.group.v1.MemberRequest"}}}},"cosmos.group.v1.MsgUpdateGroupMembersResponse":{"description":"MsgUpdateGroupMembersResponse is the Msg/UpdateGroupMembers response type.","type":"object"},"cosmos.group.v1.MsgUpdateGroupMetadata":{"description":"MsgUpdateGroupMetadata is the Msg/UpdateGroupMetadata request type.","type":"object","properties":{"admin":{"description":"admin is the account address of the group admin.","type":"string"},"group_id":{"description":"group_id is the unique ID of the group.","type":"string","format":"uint64"},"metadata":{"description":"metadata is the updated group's metadata.","type":"string"}}},"cosmos.group.v1.MsgUpdateGroupMetadataResponse":{"description":"MsgUpdateGroupMetadataResponse is the Msg/UpdateGroupMetadata response type.","type":"object"},"cosmos.group.v1.MsgUpdateGroupPolicyAdmin":{"description":"MsgUpdateGroupPolicyAdmin is the Msg/UpdateGroupPolicyAdmin request type.","type":"object","properties":{"admin":{"description":"admin is the account address of the group admin.","type":"string"},"group_policy_address":{"description":"group_policy_address is the account address of the group policy.","type":"string"},"new_admin":{"description":"new_admin is the new group policy admin.","type":"string"}}},"cosmos.group.v1.MsgUpdateGroupPolicyAdminResponse":{"description":"MsgUpdateGroupPolicyAdminResponse is the Msg/UpdateGroupPolicyAdmin response type.","type":"object"},"cosmos.group.v1.MsgUpdateGroupPolicyDecisionPolicy":{"description":"MsgUpdateGroupPolicyDecisionPolicy is the Msg/UpdateGroupPolicyDecisionPolicy request type.","type":"object","properties":{"admin":{"description":"admin is the account address of the group admin.","type":"string"},"decision_policy":{"description":"decision_policy is the updated group policy's decision policy.","$ref":"#/definitions/google.protobuf.Any"},"group_policy_address":{"description":"group_policy_address is the account address of group policy.","type":"string"}}},"cosmos.group.v1.MsgUpdateGroupPolicyDecisionPolicyResponse":{"description":"MsgUpdateGroupPolicyDecisionPolicyResponse is the Msg/UpdateGroupPolicyDecisionPolicy response type.","type":"object"},"cosmos.group.v1.MsgUpdateGroupPolicyMetadata":{"description":"MsgUpdateGroupPolicyMetadata is the Msg/UpdateGroupPolicyMetadata request type.","type":"object","properties":{"admin":{"description":"admin is the account address of the group admin.","type":"string"},"group_policy_address":{"description":"group_policy_address is the account address of group policy.","type":"string"},"metadata":{"description":"metadata is the group policy metadata to be updated.","type":"string"}}},"cosmos.group.v1.MsgUpdateGroupPolicyMetadataResponse":{"description":"MsgUpdateGroupPolicyMetadataResponse is the Msg/UpdateGroupPolicyMetadata response type.","type":"object"},"cosmos.group.v1.MsgVote":{"description":"MsgVote is the Msg/Vote request type.","type":"object","properties":{"exec":{"description":"exec defines whether the proposal should be executed\nimmediately after voting or not.","$ref":"#/definitions/cosmos.group.v1.Exec"},"metadata":{"description":"metadata is any arbitrary metadata attached to the vote.","type":"string"},"option":{"description":"option is the voter's choice on the proposal.","$ref":"#/definitions/cosmos.group.v1.VoteOption"},"proposal_id":{"description":"proposal is the unique ID of the proposal.","type":"string","format":"uint64"},"voter":{"description":"voter is the voter account address.","type":"string"}}},"cosmos.group.v1.MsgVoteResponse":{"description":"MsgVoteResponse is the Msg/Vote response type.","type":"object"},"cosmos.group.v1.MsgWithdrawProposal":{"description":"MsgWithdrawProposal is the Msg/WithdrawProposal request type.","type":"object","properties":{"address":{"description":"address is the admin of the group policy or one of the proposer of the proposal.","type":"string"},"proposal_id":{"description":"proposal is the unique ID of the proposal.","type":"string","format":"uint64"}}},"cosmos.group.v1.MsgWithdrawProposalResponse":{"description":"MsgWithdrawProposalResponse is the Msg/WithdrawProposal response type.","type":"object"},"cosmos.group.v1.Proposal":{"description":"Proposal defines a group proposal. Any member of a group can submit a proposal\nfor a group policy to decide upon.\nA proposal consists of a set of `sdk.Msg`s that will be executed if the proposal\npasses as well as some optional metadata associated with the proposal.","type":"object","properties":{"executor_result":{"description":"executor_result is the final result of the proposal execution. Initial value is NotRun.","$ref":"#/definitions/cosmos.group.v1.ProposalExecutorResult"},"final_tally_result":{"description":"final_tally_result contains the sums of all weighted votes for this\nproposal for each vote option. It is empty at submission, and only\npopulated after tallying, at voting period end or at proposal execution,\nwhichever happens first.","$ref":"#/definitions/cosmos.group.v1.TallyResult"},"group_policy_address":{"description":"group_policy_address is the account address of group policy.","type":"string"},"group_policy_version":{"description":"group_policy_version tracks the version of the group policy at proposal submission.\nWhen a decision policy is changed, existing proposals from previous policy\nversions will become invalid with the `ABORTED` status.\nThis field is here for informational purposes only.","type":"string","format":"uint64"},"group_version":{"description":"group_version tracks the version of the group at proposal submission.\nThis field is here for informational purposes only.","type":"string","format":"uint64"},"id":{"description":"id is the unique id of the proposal.","type":"string","format":"uint64"},"messages":{"description":"messages is a list of `sdk.Msg`s that will be executed if the proposal passes.","type":"array","items":{"type":"object","$ref":"#/definitions/google.protobuf.Any"}},"metadata":{"type":"string","title":"metadata is any arbitrary metadata attached to the proposal.\nthe recommended format of the metadata is to be found here:\nhttps://docs.cosmos.network/v0.47/modules/group#proposal-4"},"proposers":{"description":"proposers are the account addresses of the proposers.","type":"array","items":{"type":"string"}},"status":{"description":"status represents the high level position in the life cycle of the proposal. Initial value is Submitted.","$ref":"#/definitions/cosmos.group.v1.ProposalStatus"},"submit_time":{"description":"submit_time is a timestamp specifying when a proposal was submitted.","type":"string","format":"date-time"},"summary":{"description":"Since: cosmos-sdk 0.47","type":"string","title":"summary is a short summary of the proposal"},"title":{"description":"Since: cosmos-sdk 0.47","type":"string","title":"title is the title of the proposal"},"voting_period_end":{"description":"voting_period_end is the timestamp before which voting must be done.\nUnless a successful MsgExec is called before (to execute a proposal whose\ntally is successful before the voting period ends), tallying will be done\nat this point, and the `final_tally_result`and `status` fields will be\naccordingly updated.","type":"string","format":"date-time"}}},"cosmos.group.v1.ProposalExecutorResult":{"description":"ProposalExecutorResult defines types of proposal executor results.\n\n - PROPOSAL_EXECUTOR_RESULT_UNSPECIFIED: An empty value is not allowed.\n - PROPOSAL_EXECUTOR_RESULT_NOT_RUN: We have not yet run the executor.\n - PROPOSAL_EXECUTOR_RESULT_SUCCESS: The executor was successful and proposed action updated state.\n - PROPOSAL_EXECUTOR_RESULT_FAILURE: The executor returned an error and proposed action didn't update state.","type":"string","default":"PROPOSAL_EXECUTOR_RESULT_UNSPECIFIED","enum":["PROPOSAL_EXECUTOR_RESULT_UNSPECIFIED","PROPOSAL_EXECUTOR_RESULT_NOT_RUN","PROPOSAL_EXECUTOR_RESULT_SUCCESS","PROPOSAL_EXECUTOR_RESULT_FAILURE"]},"cosmos.group.v1.ProposalStatus":{"description":"ProposalStatus defines proposal statuses.\n\n - PROPOSAL_STATUS_UNSPECIFIED: An empty value is invalid and not allowed.\n - PROPOSAL_STATUS_SUBMITTED: Initial status of a proposal when submitted.\n - PROPOSAL_STATUS_ACCEPTED: Final status of a proposal when the final tally is done and the outcome\npasses the group policy's decision policy.\n - PROPOSAL_STATUS_REJECTED: Final status of a proposal when the final tally is done and the outcome\nis rejected by the group policy's decision policy.\n - PROPOSAL_STATUS_ABORTED: Final status of a proposal when the group policy is modified before the\nfinal tally.\n - PROPOSAL_STATUS_WITHDRAWN: A proposal can be withdrawn before the voting start time by the owner.\nWhen this happens the final status is Withdrawn.","type":"string","default":"PROPOSAL_STATUS_UNSPECIFIED","enum":["PROPOSAL_STATUS_UNSPECIFIED","PROPOSAL_STATUS_SUBMITTED","PROPOSAL_STATUS_ACCEPTED","PROPOSAL_STATUS_REJECTED","PROPOSAL_STATUS_ABORTED","PROPOSAL_STATUS_WITHDRAWN"]},"cosmos.group.v1.QueryGroupInfoResponse":{"description":"QueryGroupInfoResponse is the Query/GroupInfo response type.","type":"object","properties":{"info":{"description":"info is the GroupInfo of the group.","$ref":"#/definitions/cosmos.group.v1.GroupInfo"}}},"cosmos.group.v1.QueryGroupMembersResponse":{"description":"QueryGroupMembersResponse is the Query/GroupMembersResponse response type.","type":"object","properties":{"members":{"description":"members are the members of the group with given group_id.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.group.v1.GroupMember"}},"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"cosmos.group.v1.QueryGroupPoliciesByAdminResponse":{"description":"QueryGroupPoliciesByAdminResponse is the Query/GroupPoliciesByAdmin response type.","type":"object","properties":{"group_policies":{"description":"group_policies are the group policies info with provided admin.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.group.v1.GroupPolicyInfo"}},"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"cosmos.group.v1.QueryGroupPoliciesByGroupResponse":{"description":"QueryGroupPoliciesByGroupResponse is the Query/GroupPoliciesByGroup response type.","type":"object","properties":{"group_policies":{"description":"group_policies are the group policies info associated with the provided group.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.group.v1.GroupPolicyInfo"}},"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"cosmos.group.v1.QueryGroupPolicyInfoResponse":{"description":"QueryGroupPolicyInfoResponse is the Query/GroupPolicyInfo response type.","type":"object","properties":{"info":{"description":"info is the GroupPolicyInfo of the group policy.","$ref":"#/definitions/cosmos.group.v1.GroupPolicyInfo"}}},"cosmos.group.v1.QueryGroupsByAdminResponse":{"description":"QueryGroupsByAdminResponse is the Query/GroupsByAdminResponse response type.","type":"object","properties":{"groups":{"description":"groups are the groups info with the provided admin.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.group.v1.GroupInfo"}},"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"cosmos.group.v1.QueryGroupsByMemberResponse":{"description":"QueryGroupsByMemberResponse is the Query/GroupsByMember response type.","type":"object","properties":{"groups":{"description":"groups are the groups info with the provided group member.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.group.v1.GroupInfo"}},"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"cosmos.group.v1.QueryGroupsResponse":{"description":"QueryGroupsResponse is the Query/Groups response type.\n\nSince: cosmos-sdk 0.47.1","type":"object","properties":{"groups":{"description":"`groups` is all the groups present in state.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.group.v1.GroupInfo"}},"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"cosmos.group.v1.QueryProposalResponse":{"description":"QueryProposalResponse is the Query/Proposal response type.","type":"object","properties":{"proposal":{"description":"proposal is the proposal info.","$ref":"#/definitions/cosmos.group.v1.Proposal"}}},"cosmos.group.v1.QueryProposalsByGroupPolicyResponse":{"description":"QueryProposalsByGroupPolicyResponse is the Query/ProposalByGroupPolicy response type.","type":"object","properties":{"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"},"proposals":{"description":"proposals are the proposals with given group policy.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.group.v1.Proposal"}}}},"cosmos.group.v1.QueryTallyResultResponse":{"description":"QueryTallyResultResponse is the Query/TallyResult response type.","type":"object","properties":{"tally":{"description":"tally defines the requested tally.","$ref":"#/definitions/cosmos.group.v1.TallyResult"}}},"cosmos.group.v1.QueryVoteByProposalVoterResponse":{"description":"QueryVoteByProposalVoterResponse is the Query/VoteByProposalVoter response type.","type":"object","properties":{"vote":{"description":"vote is the vote with given proposal_id and voter.","$ref":"#/definitions/cosmos.group.v1.Vote"}}},"cosmos.group.v1.QueryVotesByProposalResponse":{"description":"QueryVotesByProposalResponse is the Query/VotesByProposal response type.","type":"object","properties":{"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"},"votes":{"description":"votes are the list of votes for given proposal_id.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.group.v1.Vote"}}}},"cosmos.group.v1.QueryVotesByVoterResponse":{"description":"QueryVotesByVoterResponse is the Query/VotesByVoter response type.","type":"object","properties":{"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"},"votes":{"description":"votes are the list of votes by given voter.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.group.v1.Vote"}}}},"cosmos.group.v1.TallyResult":{"description":"TallyResult represents the sum of weighted votes for each vote option.","type":"object","properties":{"abstain_count":{"description":"abstain_count is the weighted sum of abstainers.","type":"string"},"no_count":{"description":"no_count is the weighted sum of no votes.","type":"string"},"no_with_veto_count":{"description":"no_with_veto_count is the weighted sum of veto.","type":"string"},"yes_count":{"description":"yes_count is the weighted sum of yes votes.","type":"string"}}},"cosmos.group.v1.Vote":{"type":"object","title":"Vote represents a vote for a proposal.string metadata","properties":{"metadata":{"type":"string","title":"metadata is any arbitrary metadata attached to the vote.\nthe recommended format of the metadata is to be found here: https://docs.cosmos.network/v0.47/modules/group#vote-2"},"option":{"description":"option is the voter's choice on the proposal.","$ref":"#/definitions/cosmos.group.v1.VoteOption"},"proposal_id":{"description":"proposal is the unique ID of the proposal.","type":"string","format":"uint64"},"submit_time":{"description":"submit_time is the timestamp when the vote was submitted.","type":"string","format":"date-time"},"voter":{"description":"voter is the account address of the voter.","type":"string"}}},"cosmos.group.v1.VoteOption":{"description":"VoteOption enumerates the valid vote options for a given proposal.\n\n - VOTE_OPTION_UNSPECIFIED: VOTE_OPTION_UNSPECIFIED defines an unspecified vote option which will\nreturn an error.\n - VOTE_OPTION_YES: VOTE_OPTION_YES defines a yes vote option.\n - VOTE_OPTION_ABSTAIN: VOTE_OPTION_ABSTAIN defines an abstain vote option.\n - VOTE_OPTION_NO: VOTE_OPTION_NO defines a no vote option.\n - VOTE_OPTION_NO_WITH_VETO: VOTE_OPTION_NO_WITH_VETO defines a no with veto vote option.","type":"string","default":"VOTE_OPTION_UNSPECIFIED","enum":["VOTE_OPTION_UNSPECIFIED","VOTE_OPTION_YES","VOTE_OPTION_ABSTAIN","VOTE_OPTION_NO","VOTE_OPTION_NO_WITH_VETO"]},"cosmos.mint.v1beta1.MsgUpdateParams":{"description":"MsgUpdateParams is the Msg/UpdateParams request type.\n\nSince: cosmos-sdk 0.47","type":"object","properties":{"authority":{"description":"authority is the address that controls the module (defaults to x/gov unless overwritten).","type":"string"},"params":{"description":"params defines the x/mint parameters to update.\n\nNOTE: All parameters must be supplied.","$ref":"#/definitions/cosmos.mint.v1beta1.Params"}}},"cosmos.mint.v1beta1.MsgUpdateParamsResponse":{"description":"MsgUpdateParamsResponse defines the response structure for executing a\nMsgUpdateParams message.\n\nSince: cosmos-sdk 0.47","type":"object"},"cosmos.mint.v1beta1.Params":{"description":"Params defines the parameters for the x/mint module.","type":"object","properties":{"blocks_per_year":{"type":"string","format":"uint64","title":"expected blocks per year"},"goal_bonded":{"type":"string","title":"goal of percent bonded atoms"},"inflation_max":{"type":"string","title":"maximum inflation rate"},"inflation_min":{"type":"string","title":"minimum inflation rate"},"inflation_rate_change":{"type":"string","title":"maximum annual change in inflation rate"},"mint_denom":{"type":"string","title":"type of coin to mint"}}},"cosmos.mint.v1beta1.QueryAnnualProvisionsResponse":{"description":"QueryAnnualProvisionsResponse is the response type for the\nQuery/AnnualProvisions RPC method.","type":"object","properties":{"annual_provisions":{"description":"annual_provisions is the current minting annual provisions value.","type":"string","format":"byte"}}},"cosmos.mint.v1beta1.QueryInflationResponse":{"description":"QueryInflationResponse is the response type for the Query/Inflation RPC\nmethod.","type":"object","properties":{"inflation":{"description":"inflation is the current minting inflation value.","type":"string","format":"byte"}}},"cosmos.mint.v1beta1.QueryParamsResponse":{"description":"QueryParamsResponse is the response type for the Query/Params RPC method.","type":"object","properties":{"params":{"description":"params defines the parameters of the module.","$ref":"#/definitions/cosmos.mint.v1beta1.Params"}}},"cosmos.nft.v1beta1.Class":{"description":"Class defines the class of the nft type.","type":"object","properties":{"data":{"title":"data is the app specific metadata of the NFT class. Optional","$ref":"#/definitions/google.protobuf.Any"},"description":{"type":"string","title":"description is a brief description of nft classification. Optional"},"id":{"type":"string","title":"id defines the unique identifier of the NFT classification, similar to the contract address of ERC721"},"name":{"type":"string","title":"name defines the human-readable name of the NFT classification. Optional"},"symbol":{"type":"string","title":"symbol is an abbreviated name for nft classification. Optional"},"uri":{"type":"string","title":"uri for the class metadata stored off chain. It can define schema for Class and NFT `Data` attributes. Optional"},"uri_hash":{"type":"string","title":"uri_hash is a hash of the document pointed by uri. Optional"}}},"cosmos.nft.v1beta1.MsgSend":{"description":"MsgSend represents a message to send a nft from one account to another account.","type":"object","properties":{"class_id":{"type":"string","title":"class_id defines the unique identifier of the nft classification, similar to the contract address of ERC721"},"id":{"type":"string","title":"id defines the unique identification of nft"},"receiver":{"type":"string","title":"receiver is the receiver address of nft"},"sender":{"type":"string","title":"sender is the address of the owner of nft"}}},"cosmos.nft.v1beta1.MsgSendResponse":{"description":"MsgSendResponse defines the Msg/Send response type.","type":"object"},"cosmos.nft.v1beta1.NFT":{"description":"NFT defines the NFT.","type":"object","properties":{"class_id":{"type":"string","title":"class_id associated with the NFT, similar to the contract address of ERC721"},"data":{"title":"data is an app specific data of the NFT. Optional","$ref":"#/definitions/google.protobuf.Any"},"id":{"type":"string","title":"id is a unique identifier of the NFT"},"uri":{"type":"string","title":"uri for the NFT metadata stored off chain"},"uri_hash":{"type":"string","title":"uri_hash is a hash of the document pointed by uri"}}},"cosmos.nft.v1beta1.QueryBalanceResponse":{"type":"object","title":"QueryBalanceResponse is the response type for the Query/Balance RPC method","properties":{"amount":{"type":"string","format":"uint64","title":"amount is the number of all NFTs of a given class owned by the owner"}}},"cosmos.nft.v1beta1.QueryClassResponse":{"type":"object","title":"QueryClassResponse is the response type for the Query/Class RPC method","properties":{"class":{"description":"class defines the class of the nft type.","$ref":"#/definitions/cosmos.nft.v1beta1.Class"}}},"cosmos.nft.v1beta1.QueryClassesResponse":{"type":"object","title":"QueryClassesResponse is the response type for the Query/Classes RPC method","properties":{"classes":{"description":"class defines the class of the nft type.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.nft.v1beta1.Class"}},"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"cosmos.nft.v1beta1.QueryNFTResponse":{"type":"object","title":"QueryNFTResponse is the response type for the Query/NFT RPC method","properties":{"nft":{"title":"owner is the owner address of the nft","$ref":"#/definitions/cosmos.nft.v1beta1.NFT"}}},"cosmos.nft.v1beta1.QueryNFTsResponse":{"type":"object","title":"QueryNFTsResponse is the response type for the Query/NFTs RPC methods","properties":{"nfts":{"type":"array","title":"NFT defines the NFT","items":{"type":"object","$ref":"#/definitions/cosmos.nft.v1beta1.NFT"}},"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"cosmos.nft.v1beta1.QueryOwnerResponse":{"type":"object","title":"QueryOwnerResponse is the response type for the Query/Owner RPC method","properties":{"owner":{"type":"string","title":"owner is the owner address of the nft"}}},"cosmos.nft.v1beta1.QuerySupplyResponse":{"type":"object","title":"QuerySupplyResponse is the response type for the Query/Supply RPC method","properties":{"amount":{"type":"string","format":"uint64","title":"amount is the number of all NFTs from the given class"}}},"cosmos.params.v1beta1.ParamChange":{"description":"ParamChange defines an individual parameter change, for use in\nParameterChangeProposal.","type":"object","properties":{"key":{"type":"string"},"subspace":{"type":"string"},"value":{"type":"string"}}},"cosmos.params.v1beta1.QueryParamsResponse":{"description":"QueryParamsResponse is response type for the Query/Params RPC method.","type":"object","properties":{"param":{"description":"param defines the queried parameter.","$ref":"#/definitions/cosmos.params.v1beta1.ParamChange"}}},"cosmos.params.v1beta1.QuerySubspacesResponse":{"description":"QuerySubspacesResponse defines the response types for querying for all\nregistered subspaces and all keys for a subspace.\n\nSince: cosmos-sdk 0.46","type":"object","properties":{"subspaces":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.params.v1beta1.Subspace"}}}},"cosmos.params.v1beta1.Subspace":{"description":"Subspace defines a parameter subspace name and all the keys that exist for\nthe subspace.\n\nSince: cosmos-sdk 0.46","type":"object","properties":{"keys":{"type":"array","items":{"type":"string"}},"subspace":{"type":"string"}}},"cosmos.slashing.v1beta1.MsgUnjail":{"type":"object","title":"MsgUnjail defines the Msg/Unjail request type","properties":{"validator_addr":{"type":"string"}}},"cosmos.slashing.v1beta1.MsgUnjailResponse":{"type":"object","title":"MsgUnjailResponse defines the Msg/Unjail response type"},"cosmos.slashing.v1beta1.MsgUpdateParams":{"description":"MsgUpdateParams is the Msg/UpdateParams request type.\n\nSince: cosmos-sdk 0.47","type":"object","properties":{"authority":{"description":"authority is the address that controls the module (defaults to x/gov unless overwritten).","type":"string"},"params":{"description":"params defines the x/slashing parameters to update.\n\nNOTE: All parameters must be supplied.","$ref":"#/definitions/cosmos.slashing.v1beta1.Params"}}},"cosmos.slashing.v1beta1.MsgUpdateParamsResponse":{"description":"MsgUpdateParamsResponse defines the response structure for executing a\nMsgUpdateParams message.\n\nSince: cosmos-sdk 0.47","type":"object"},"cosmos.slashing.v1beta1.Params":{"description":"Params represents the parameters used for by the slashing module.","type":"object","properties":{"downtime_jail_duration":{"type":"string"},"min_signed_per_window":{"type":"string","format":"byte"},"signed_blocks_window":{"type":"string","format":"int64"},"slash_fraction_double_sign":{"type":"string","format":"byte"},"slash_fraction_downtime":{"type":"string","format":"byte"}}},"cosmos.slashing.v1beta1.QueryParamsResponse":{"type":"object","title":"QueryParamsResponse is the response type for the Query/Params RPC method","properties":{"params":{"$ref":"#/definitions/cosmos.slashing.v1beta1.Params"}}},"cosmos.slashing.v1beta1.QuerySigningInfoResponse":{"type":"object","title":"QuerySigningInfoResponse is the response type for the Query/SigningInfo RPC\nmethod","properties":{"val_signing_info":{"title":"val_signing_info is the signing info of requested val cons address","$ref":"#/definitions/cosmos.slashing.v1beta1.ValidatorSigningInfo"}}},"cosmos.slashing.v1beta1.QuerySigningInfosResponse":{"type":"object","title":"QuerySigningInfosResponse is the response type for the Query/SigningInfos RPC\nmethod","properties":{"info":{"type":"array","title":"info is the signing info of all validators","items":{"type":"object","$ref":"#/definitions/cosmos.slashing.v1beta1.ValidatorSigningInfo"}},"pagination":{"$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"cosmos.slashing.v1beta1.ValidatorSigningInfo":{"description":"ValidatorSigningInfo defines a validator's signing info for monitoring their\nliveness activity.","type":"object","properties":{"address":{"type":"string"},"index_offset":{"description":"Index which is incremented every time a validator is bonded in a block and\n_may_ have signed a pre-commit or not. This in conjunction with the\nsigned_blocks_window param determines the index in the missed block bitmap.","type":"string","format":"int64"},"jailed_until":{"description":"Timestamp until which the validator is jailed due to liveness downtime.","type":"string","format":"date-time"},"missed_blocks_counter":{"description":"A counter of missed (unsigned) blocks. It is used to avoid unnecessary\nreads in the missed block bitmap.","type":"string","format":"int64"},"start_height":{"type":"string","format":"int64","title":"Height at which validator was first a candidate OR was un-jailed"},"tombstoned":{"description":"Whether or not a validator has been tombstoned (killed out of validator\nset). It is set once the validator commits an equivocation or for any other\nconfigured misbehavior.","type":"boolean"}}},"cosmos.staking.v1beta1.BondStatus":{"description":"BondStatus is the status of a validator.\n\n - BOND_STATUS_UNSPECIFIED: UNSPECIFIED defines an invalid validator status.\n - BOND_STATUS_UNBONDED: UNBONDED defines a validator that is not bonded.\n - BOND_STATUS_UNBONDING: UNBONDING defines a validator that is unbonding.\n - BOND_STATUS_BONDED: BONDED defines a validator that is bonded.","type":"string","default":"BOND_STATUS_UNSPECIFIED","enum":["BOND_STATUS_UNSPECIFIED","BOND_STATUS_UNBONDED","BOND_STATUS_UNBONDING","BOND_STATUS_BONDED"]},"cosmos.staking.v1beta1.Commission":{"description":"Commission defines commission parameters for a given validator.","type":"object","properties":{"commission_rates":{"description":"commission_rates defines the initial commission rates to be used for creating a validator.","$ref":"#/definitions/cosmos.staking.v1beta1.CommissionRates"},"update_time":{"description":"update_time is the last time the commission rate was changed.","type":"string","format":"date-time"}}},"cosmos.staking.v1beta1.CommissionRates":{"description":"CommissionRates defines the initial commission rates to be used for creating\na validator.","type":"object","properties":{"max_change_rate":{"description":"max_change_rate defines the maximum daily increase of the validator commission, as a fraction.","type":"string"},"max_rate":{"description":"max_rate defines the maximum commission rate which validator can ever charge, as a fraction.","type":"string"},"rate":{"description":"rate is the commission rate charged to delegators, as a fraction.","type":"string"}}},"cosmos.staking.v1beta1.Delegation":{"description":"Delegation represents the bond with tokens held by an account. It is\nowned by one delegator, and is associated with the voting power of one\nvalidator.","type":"object","properties":{"delegator_address":{"description":"delegator_address is the encoded address of the delegator.","type":"string"},"shares":{"description":"shares define the delegation shares received.","type":"string"},"validator_address":{"description":"validator_address is the encoded address of the validator.","type":"string"}}},"cosmos.staking.v1beta1.DelegationResponse":{"description":"DelegationResponse is equivalent to Delegation except that it contains a\nbalance in addition to shares which is more suitable for client responses.","type":"object","properties":{"balance":{"$ref":"#/definitions/cosmos.base.v1beta1.Coin"},"delegation":{"$ref":"#/definitions/cosmos.staking.v1beta1.Delegation"}}},"cosmos.staking.v1beta1.Description":{"description":"Description defines a validator description.","type":"object","properties":{"details":{"description":"details define other optional details.","type":"string"},"identity":{"description":"identity defines an optional identity signature (ex. UPort or Keybase).","type":"string"},"moniker":{"description":"moniker defines a human-readable name for the validator.","type":"string"},"security_contact":{"description":"security_contact defines an optional email for security contact.","type":"string"},"website":{"description":"website defines an optional website link.","type":"string"}}},"cosmos.staking.v1beta1.HistoricalInfo":{"description":"HistoricalInfo contains header and validator information for a given block.\nIt is stored as part of staking module's state, which persists the `n` most\nrecent HistoricalInfo\n(`n` is set by the staking module's `historical_entries` parameter).","type":"object","properties":{"header":{"$ref":"#/definitions/tendermint.types.Header"},"valset":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.staking.v1beta1.Validator"}}}},"cosmos.staking.v1beta1.MsgBeginRedelegate":{"description":"MsgBeginRedelegate defines a SDK message for performing a redelegation\nof coins from a delegator and source validator to a destination validator.","type":"object","properties":{"amount":{"$ref":"#/definitions/cosmos.base.v1beta1.Coin"},"delegator_address":{"type":"string"},"validator_dst_address":{"type":"string"},"validator_src_address":{"type":"string"}}},"cosmos.staking.v1beta1.MsgBeginRedelegateResponse":{"description":"MsgBeginRedelegateResponse defines the Msg/BeginRedelegate response type.","type":"object","properties":{"completion_time":{"type":"string","format":"date-time"}}},"cosmos.staking.v1beta1.MsgCancelUnbondingDelegation":{"description":"Since: cosmos-sdk 0.46","type":"object","title":"MsgCancelUnbondingDelegation defines the SDK message for performing a cancel unbonding delegation for delegator","properties":{"amount":{"title":"amount is always less than or equal to unbonding delegation entry balance","$ref":"#/definitions/cosmos.base.v1beta1.Coin"},"creation_height":{"description":"creation_height is the height which the unbonding took place.","type":"string","format":"int64"},"delegator_address":{"type":"string"},"validator_address":{"type":"string"}}},"cosmos.staking.v1beta1.MsgCancelUnbondingDelegationResponse":{"description":"Since: cosmos-sdk 0.46","type":"object","title":"MsgCancelUnbondingDelegationResponse"},"cosmos.staking.v1beta1.MsgCreateValidator":{"description":"MsgCreateValidator defines a SDK message for creating a new validator.","type":"object","properties":{"commission":{"$ref":"#/definitions/cosmos.staking.v1beta1.CommissionRates"},"delegator_address":{"description":"Deprecated: Use of Delegator Address in MsgCreateValidator is deprecated.\nThe validator address bytes and delegator address bytes refer to the same account while creating validator (defer\nonly in bech32 notation).","type":"string"},"description":{"$ref":"#/definitions/cosmos.staking.v1beta1.Description"},"min_self_delegation":{"type":"string"},"pubkey":{"$ref":"#/definitions/google.protobuf.Any"},"validator_address":{"type":"string"},"value":{"$ref":"#/definitions/cosmos.base.v1beta1.Coin"}}},"cosmos.staking.v1beta1.MsgCreateValidatorResponse":{"description":"MsgCreateValidatorResponse defines the Msg/CreateValidator response type.","type":"object"},"cosmos.staking.v1beta1.MsgDelegate":{"description":"MsgDelegate defines a SDK message for performing a delegation of coins\nfrom a delegator to a validator.","type":"object","properties":{"amount":{"$ref":"#/definitions/cosmos.base.v1beta1.Coin"},"delegator_address":{"type":"string"},"validator_address":{"type":"string"}}},"cosmos.staking.v1beta1.MsgDelegateResponse":{"description":"MsgDelegateResponse defines the Msg/Delegate response type.","type":"object"},"cosmos.staking.v1beta1.MsgEditValidator":{"description":"MsgEditValidator defines a SDK message for editing an existing validator.","type":"object","properties":{"commission_rate":{"type":"string","title":"We pass a reference to the new commission rate and min self delegation as\nit's not mandatory to update. If not updated, the deserialized rate will be\nzero with no way to distinguish if an update was intended.\nREF: #2373"},"description":{"$ref":"#/definitions/cosmos.staking.v1beta1.Description"},"min_self_delegation":{"type":"string"},"validator_address":{"type":"string"}}},"cosmos.staking.v1beta1.MsgEditValidatorResponse":{"description":"MsgEditValidatorResponse defines the Msg/EditValidator response type.","type":"object"},"cosmos.staking.v1beta1.MsgUndelegate":{"description":"MsgUndelegate defines a SDK message for performing an undelegation from a\ndelegate and a validator.","type":"object","properties":{"amount":{"$ref":"#/definitions/cosmos.base.v1beta1.Coin"},"delegator_address":{"type":"string"},"validator_address":{"type":"string"}}},"cosmos.staking.v1beta1.MsgUndelegateResponse":{"description":"MsgUndelegateResponse defines the Msg/Undelegate response type.","type":"object","properties":{"amount":{"description":"Since: cosmos-sdk 0.50","title":"amount returns the amount of undelegated coins","$ref":"#/definitions/cosmos.base.v1beta1.Coin"},"completion_time":{"type":"string","format":"date-time"}}},"cosmos.staking.v1beta1.MsgUpdateParams":{"description":"MsgUpdateParams is the Msg/UpdateParams request type.\n\nSince: cosmos-sdk 0.47","type":"object","properties":{"authority":{"description":"authority is the address that controls the module (defaults to x/gov unless overwritten).","type":"string"},"params":{"description":"params defines the x/staking parameters to update.\n\nNOTE: All parameters must be supplied.","$ref":"#/definitions/cosmos.staking.v1beta1.Params"}}},"cosmos.staking.v1beta1.MsgUpdateParamsResponse":{"description":"MsgUpdateParamsResponse defines the response structure for executing a\nMsgUpdateParams message.\n\nSince: cosmos-sdk 0.47","type":"object"},"cosmos.staking.v1beta1.Params":{"description":"Params defines the parameters for the x/staking module.","type":"object","properties":{"bond_denom":{"description":"bond_denom defines the bondable coin denomination.","type":"string"},"historical_entries":{"description":"historical_entries is the number of historical entries to persist.","type":"integer","format":"int64"},"max_entries":{"description":"max_entries is the max entries for either unbonding delegation or redelegation (per pair/trio).","type":"integer","format":"int64"},"max_validators":{"description":"max_validators is the maximum number of validators.","type":"integer","format":"int64"},"min_commission_rate":{"type":"string","title":"min_commission_rate is the chain-wide minimum commission rate that a validator can charge their delegators"},"unbonding_time":{"description":"unbonding_time is the time duration of unbonding.","type":"string"}}},"cosmos.staking.v1beta1.Pool":{"description":"Pool is used for tracking bonded and not-bonded token supply of the bond\ndenomination.","type":"object","properties":{"bonded_tokens":{"type":"string"},"not_bonded_tokens":{"type":"string"}}},"cosmos.staking.v1beta1.QueryDelegationResponse":{"description":"QueryDelegationResponse is response type for the Query/Delegation RPC method.","type":"object","properties":{"delegation_response":{"description":"delegation_responses defines the delegation info of a delegation.","$ref":"#/definitions/cosmos.staking.v1beta1.DelegationResponse"}}},"cosmos.staking.v1beta1.QueryDelegatorDelegationsResponse":{"description":"QueryDelegatorDelegationsResponse is response type for the\nQuery/DelegatorDelegations RPC method.","type":"object","properties":{"delegation_responses":{"description":"delegation_responses defines all the delegations' info of a delegator.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.staking.v1beta1.DelegationResponse"}},"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"cosmos.staking.v1beta1.QueryDelegatorUnbondingDelegationsResponse":{"description":"QueryUnbondingDelegatorDelegationsResponse is response type for the\nQuery/UnbondingDelegatorDelegations RPC method.","type":"object","properties":{"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"},"unbonding_responses":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.staking.v1beta1.UnbondingDelegation"}}}},"cosmos.staking.v1beta1.QueryDelegatorValidatorResponse":{"description":"QueryDelegatorValidatorResponse response type for the\nQuery/DelegatorValidator RPC method.","type":"object","properties":{"validator":{"description":"validator defines the validator info.","$ref":"#/definitions/cosmos.staking.v1beta1.Validator"}}},"cosmos.staking.v1beta1.QueryDelegatorValidatorsResponse":{"description":"QueryDelegatorValidatorsResponse is response type for the\nQuery/DelegatorValidators RPC method.","type":"object","properties":{"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"},"validators":{"description":"validators defines the validators' info of a delegator.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.staking.v1beta1.Validator"}}}},"cosmos.staking.v1beta1.QueryHistoricalInfoResponse":{"description":"QueryHistoricalInfoResponse is response type for the Query/HistoricalInfo RPC\nmethod.","type":"object","properties":{"hist":{"description":"hist defines the historical info at the given height.","$ref":"#/definitions/cosmos.staking.v1beta1.HistoricalInfo"}}},"cosmos.staking.v1beta1.QueryParamsResponse":{"description":"QueryParamsResponse is response type for the Query/Params RPC method.","type":"object","properties":{"params":{"description":"params holds all the parameters of this module.","$ref":"#/definitions/cosmos.staking.v1beta1.Params"}}},"cosmos.staking.v1beta1.QueryPoolResponse":{"description":"QueryPoolResponse is response type for the Query/Pool RPC method.","type":"object","properties":{"pool":{"description":"pool defines the pool info.","$ref":"#/definitions/cosmos.staking.v1beta1.Pool"}}},"cosmos.staking.v1beta1.QueryRedelegationsResponse":{"description":"QueryRedelegationsResponse is response type for the Query/Redelegations RPC\nmethod.","type":"object","properties":{"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"},"redelegation_responses":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.staking.v1beta1.RedelegationResponse"}}}},"cosmos.staking.v1beta1.QueryUnbondingDelegationResponse":{"description":"QueryDelegationResponse is response type for the Query/UnbondingDelegation\nRPC method.","type":"object","properties":{"unbond":{"description":"unbond defines the unbonding information of a delegation.","$ref":"#/definitions/cosmos.staking.v1beta1.UnbondingDelegation"}}},"cosmos.staking.v1beta1.QueryValidatorDelegationsResponse":{"type":"object","title":"QueryValidatorDelegationsResponse is response type for the\nQuery/ValidatorDelegations RPC method","properties":{"delegation_responses":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.staking.v1beta1.DelegationResponse"}},"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"cosmos.staking.v1beta1.QueryValidatorResponse":{"type":"object","title":"QueryValidatorResponse is response type for the Query/Validator RPC method","properties":{"validator":{"description":"validator defines the validator info.","$ref":"#/definitions/cosmos.staking.v1beta1.Validator"}}},"cosmos.staking.v1beta1.QueryValidatorUnbondingDelegationsResponse":{"description":"QueryValidatorUnbondingDelegationsResponse is response type for the\nQuery/ValidatorUnbondingDelegations RPC method.","type":"object","properties":{"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"},"unbonding_responses":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.staking.v1beta1.UnbondingDelegation"}}}},"cosmos.staking.v1beta1.QueryValidatorsResponse":{"type":"object","title":"QueryValidatorsResponse is response type for the Query/Validators RPC method","properties":{"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"},"validators":{"description":"validators contains all the queried validators.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.staking.v1beta1.Validator"}}}},"cosmos.staking.v1beta1.Redelegation":{"description":"Redelegation contains the list of a particular delegator's redelegating bonds\nfrom a particular source validator to a particular destination validator.","type":"object","properties":{"delegator_address":{"description":"delegator_address is the bech32-encoded address of the delegator.","type":"string"},"entries":{"description":"entries are the redelegation entries.\n\nredelegation entries","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.staking.v1beta1.RedelegationEntry"}},"validator_dst_address":{"description":"validator_dst_address is the validator redelegation destination operator address.","type":"string"},"validator_src_address":{"description":"validator_src_address is the validator redelegation source operator address.","type":"string"}}},"cosmos.staking.v1beta1.RedelegationEntry":{"description":"RedelegationEntry defines a redelegation object with relevant metadata.","type":"object","properties":{"completion_time":{"description":"completion_time defines the unix time for redelegation completion.","type":"string","format":"date-time"},"creation_height":{"description":"creation_height defines the height which the redelegation took place.","type":"string","format":"int64"},"initial_balance":{"description":"initial_balance defines the initial balance when redelegation started.","type":"string"},"shares_dst":{"description":"shares_dst is the amount of destination-validator shares created by redelegation.","type":"string"},"unbonding_id":{"type":"string","format":"uint64","title":"Incrementing id that uniquely identifies this entry"},"unbonding_on_hold_ref_count":{"type":"string","format":"int64","title":"Strictly positive if this entry's unbonding has been stopped by external modules"}}},"cosmos.staking.v1beta1.RedelegationEntryResponse":{"description":"RedelegationEntryResponse is equivalent to a RedelegationEntry except that it\ncontains a balance in addition to shares which is more suitable for client\nresponses.","type":"object","properties":{"balance":{"type":"string"},"redelegation_entry":{"$ref":"#/definitions/cosmos.staking.v1beta1.RedelegationEntry"}}},"cosmos.staking.v1beta1.RedelegationResponse":{"description":"RedelegationResponse is equivalent to a Redelegation except that its entries\ncontain a balance in addition to shares which is more suitable for client\nresponses.","type":"object","properties":{"entries":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.staking.v1beta1.RedelegationEntryResponse"}},"redelegation":{"$ref":"#/definitions/cosmos.staking.v1beta1.Redelegation"}}},"cosmos.staking.v1beta1.UnbondingDelegation":{"description":"UnbondingDelegation stores all of a single delegator's unbonding bonds\nfor a single validator in an time-ordered list.","type":"object","properties":{"delegator_address":{"description":"delegator_address is the encoded address of the delegator.","type":"string"},"entries":{"description":"entries are the unbonding delegation entries.\n\nunbonding delegation entries","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.staking.v1beta1.UnbondingDelegationEntry"}},"validator_address":{"description":"validator_address is the encoded address of the validator.","type":"string"}}},"cosmos.staking.v1beta1.UnbondingDelegationEntry":{"description":"UnbondingDelegationEntry defines an unbonding object with relevant metadata.","type":"object","properties":{"balance":{"description":"balance defines the tokens to receive at completion.","type":"string"},"completion_time":{"description":"completion_time is the unix time for unbonding completion.","type":"string","format":"date-time"},"creation_height":{"description":"creation_height is the height which the unbonding took place.","type":"string","format":"int64"},"initial_balance":{"description":"initial_balance defines the tokens initially scheduled to receive at completion.","type":"string"},"unbonding_id":{"type":"string","format":"uint64","title":"Incrementing id that uniquely identifies this entry"},"unbonding_on_hold_ref_count":{"type":"string","format":"int64","title":"Strictly positive if this entry's unbonding has been stopped by external modules"}}},"cosmos.staking.v1beta1.Validator":{"description":"Validator defines a validator, together with the total amount of the\nValidator's bond shares and their exchange rate to coins. Slashing results in\na decrease in the exchange rate, allowing correct calculation of future\nundelegations without iterating over delegators. When coins are delegated to\nthis validator, the validator is credited with a delegation whose number of\nbond shares is based on the amount of coins delegated divided by the current\nexchange rate. Voting power can be calculated as total bonded shares\nmultiplied by exchange rate.","type":"object","properties":{"commission":{"description":"commission defines the commission parameters.","$ref":"#/definitions/cosmos.staking.v1beta1.Commission"},"consensus_pubkey":{"description":"consensus_pubkey is the consensus public key of the validator, as a Protobuf Any.","$ref":"#/definitions/google.protobuf.Any"},"delegator_shares":{"description":"delegator_shares defines total shares issued to a validator's delegators.","type":"string"},"description":{"description":"description defines the description terms for the validator.","$ref":"#/definitions/cosmos.staking.v1beta1.Description"},"jailed":{"description":"jailed defined whether the validator has been jailed from bonded status or not.","type":"boolean"},"min_self_delegation":{"description":"min_self_delegation is the validator's self declared minimum self delegation.\n\nSince: cosmos-sdk 0.46","type":"string"},"operator_address":{"description":"operator_address defines the address of the validator's operator; bech encoded in JSON.","type":"string"},"status":{"description":"status is the validator status (bonded/unbonding/unbonded).","$ref":"#/definitions/cosmos.staking.v1beta1.BondStatus"},"tokens":{"description":"tokens define the delegated tokens (incl. self-delegation).","type":"string"},"unbonding_height":{"description":"unbonding_height defines, if unbonding, the height at which this validator has begun unbonding.","type":"string","format":"int64"},"unbonding_ids":{"type":"array","title":"list of unbonding ids, each uniquely identifing an unbonding of this validator","items":{"type":"string","format":"uint64"}},"unbonding_on_hold_ref_count":{"type":"string","format":"int64","title":"strictly positive if this validator's unbonding has been stopped by external modules"},"unbonding_time":{"description":"unbonding_time defines, if unbonding, the min time for the validator to complete unbonding.","type":"string","format":"date-time"}}},"cosmos.store.streaming.abci.ListenCommitRequest":{"type":"object","title":"ListenCommitRequest is the request type for the ListenCommit RPC method","properties":{"block_height":{"type":"string","format":"int64","title":"explicitly pass in block height as ResponseCommit does not contain this info"},"change_set":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.store.v1beta1.StoreKVPair"}},"res":{"$ref":"#/definitions/tendermint.abci.ResponseCommit"}}},"cosmos.store.streaming.abci.ListenCommitResponse":{"type":"object","title":"ListenCommitResponse is the response type for the ListenCommit RPC method"},"cosmos.store.streaming.abci.ListenFinalizeBlockRequest":{"type":"object","title":"ListenEndBlockRequest is the request type for the ListenEndBlock RPC method","properties":{"req":{"$ref":"#/definitions/tendermint.abci.RequestFinalizeBlock"},"res":{"$ref":"#/definitions/tendermint.abci.ResponseFinalizeBlock"}}},"cosmos.store.streaming.abci.ListenFinalizeBlockResponse":{"type":"object","title":"ListenEndBlockResponse is the response type for the ListenEndBlock RPC method"},"cosmos.store.v1beta1.StoreKVPair":{"description":"Since: cosmos-sdk 0.43","type":"object","title":"StoreKVPair is a KVStore KVPair used for listening to state changes (Sets and Deletes)\nIt optionally includes the StoreKey for the originating KVStore and a Boolean flag to distinguish between Sets and\nDeletes","properties":{"delete":{"type":"boolean","title":"true indicates a delete operation, false indicates a set operation"},"key":{"type":"string","format":"byte"},"store_key":{"type":"string","title":"the store key for the KVStore this pair originates from"},"value":{"type":"string","format":"byte"}}},"cosmos.tx.signing.v1beta1.SignMode":{"description":"SignMode represents a signing mode with its own security guarantees.\n\nThis enum should be considered a registry of all known sign modes\nin the Cosmos ecosystem. Apps are not expected to support all known\nsign modes. Apps that would like to support custom sign modes are\nencouraged to open a small PR against this file to add a new case\nto this SignMode enum describing their sign mode so that different\napps have a consistent version of this enum.\n\n - SIGN_MODE_UNSPECIFIED: SIGN_MODE_UNSPECIFIED specifies an unknown signing mode and will be\nrejected.\n - SIGN_MODE_DIRECT: SIGN_MODE_DIRECT specifies a signing mode which uses SignDoc and is\nverified with raw bytes from Tx.\n - SIGN_MODE_TEXTUAL: SIGN_MODE_TEXTUAL is a future signing mode that will verify some\nhuman-readable textual representation on top of the binary representation\nfrom SIGN_MODE_DIRECT.\n\nSince: cosmos-sdk 0.50\n - SIGN_MODE_DIRECT_AUX: SIGN_MODE_DIRECT_AUX specifies a signing mode which uses\nSignDocDirectAux. As opposed to SIGN_MODE_DIRECT, this sign mode does not\nrequire signers signing over other signers' `signer_info`.\n\nSince: cosmos-sdk 0.46\n - SIGN_MODE_LEGACY_AMINO_JSON: SIGN_MODE_LEGACY_AMINO_JSON is a backwards compatibility mode which uses\nAmino JSON and will be removed in the future.\n - SIGN_MODE_EIP_191: SIGN_MODE_EIP_191 specifies the sign mode for EIP 191 signing on the Cosmos\nSDK. Ref: https://eips.ethereum.org/EIPS/eip-191\n\nCurrently, SIGN_MODE_EIP_191 is registered as a SignMode enum variant,\nbut is not implemented on the SDK by default. To enable EIP-191, you need\nto pass a custom `TxConfig` that has an implementation of\n`SignModeHandler` for EIP-191. The SDK may decide to fully support\nEIP-191 in the future.\n\nSince: cosmos-sdk 0.45.2","type":"string","default":"SIGN_MODE_UNSPECIFIED","enum":["SIGN_MODE_UNSPECIFIED","SIGN_MODE_DIRECT","SIGN_MODE_TEXTUAL","SIGN_MODE_DIRECT_AUX","SIGN_MODE_LEGACY_AMINO_JSON","SIGN_MODE_EIP_191"]},"cosmos.tx.v1beta1.AuthInfo":{"description":"AuthInfo describes the fee and signer modes that are used to sign a\ntransaction.","type":"object","properties":{"fee":{"description":"Fee is the fee and gas limit for the transaction. The first signer is the\nprimary signer and the one which pays the fee. The fee can be calculated\nbased on the cost of evaluating the body and doing signature verification\nof the signers. This can be estimated via simulation.","$ref":"#/definitions/cosmos.tx.v1beta1.Fee"},"signer_infos":{"description":"signer_infos defines the signing modes for the required signers. The number\nand order of elements must match the required signers from TxBody's\nmessages. The first element is the primary signer and the one which pays\nthe fee.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.tx.v1beta1.SignerInfo"}},"tip":{"description":"Tip is the optional tip used for transactions fees paid in another denom.\n\nThis field is ignored if the chain didn't enable tips, i.e. didn't add the\n`TipDecorator` in its posthandler.\n\nSince: cosmos-sdk 0.46","$ref":"#/definitions/cosmos.tx.v1beta1.Tip"}}},"cosmos.tx.v1beta1.BroadcastMode":{"description":"BroadcastMode specifies the broadcast mode for the TxService.Broadcast RPC\nmethod.\n\n - BROADCAST_MODE_UNSPECIFIED: zero-value for mode ordering\n - BROADCAST_MODE_BLOCK: DEPRECATED: use BROADCAST_MODE_SYNC instead,\nBROADCAST_MODE_BLOCK is not supported by the SDK from v0.47.x onwards.\n - BROADCAST_MODE_SYNC: BROADCAST_MODE_SYNC defines a tx broadcasting mode where the client waits\nfor a CheckTx execution response only.\n - BROADCAST_MODE_ASYNC: BROADCAST_MODE_ASYNC defines a tx broadcasting mode where the client\nreturns immediately.","type":"string","default":"BROADCAST_MODE_UNSPECIFIED","enum":["BROADCAST_MODE_UNSPECIFIED","BROADCAST_MODE_BLOCK","BROADCAST_MODE_SYNC","BROADCAST_MODE_ASYNC"]},"cosmos.tx.v1beta1.BroadcastTxRequest":{"description":"BroadcastTxRequest is the request type for the Service.BroadcastTxRequest\nRPC method.","type":"object","properties":{"mode":{"$ref":"#/definitions/cosmos.tx.v1beta1.BroadcastMode"},"tx_bytes":{"description":"tx_bytes is the raw transaction.","type":"string","format":"byte"}}},"cosmos.tx.v1beta1.BroadcastTxResponse":{"description":"BroadcastTxResponse is the response type for the\nService.BroadcastTx method.","type":"object","properties":{"tx_response":{"description":"tx_response is the queried TxResponses.","$ref":"#/definitions/cosmos.base.abci.v1beta1.TxResponse"}}},"cosmos.tx.v1beta1.Fee":{"description":"Fee includes the amount of coins paid in fees and the maximum\ngas to be used by the transaction. The ratio yields an effective \"gasprice\",\nwhich must be above some miminum to be accepted into the mempool.","type":"object","properties":{"amount":{"type":"array","title":"amount is the amount of coins to be paid as a fee","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}},"gas_limit":{"type":"string","format":"uint64","title":"gas_limit is the maximum gas that can be used in transaction processing\nbefore an out of gas error occurs"},"granter":{"type":"string","title":"if set, the fee payer (either the first signer or the value of the payer field) requests that a fee grant be used\nto pay fees instead of the fee payer's own balance. If an appropriate fee grant does not exist or the chain does\nnot support fee grants, this will fail"},"payer":{"description":"if unset, the first signer is responsible for paying the fees. If set, the specified account must pay the fees.\nthe payer must be a tx signer (and thus have signed this field in AuthInfo).\nsetting this field does *not* change the ordering of required signers for the transaction.","type":"string"}}},"cosmos.tx.v1beta1.GetBlockWithTxsResponse":{"description":"GetBlockWithTxsResponse is the response type for the Service.GetBlockWithTxs\nmethod.\n\nSince: cosmos-sdk 0.45.2","type":"object","properties":{"block":{"$ref":"#/definitions/tendermint.types.Block"},"block_id":{"$ref":"#/definitions/tendermint.types.BlockID"},"pagination":{"description":"pagination defines a pagination for the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"},"txs":{"description":"txs are the transactions in the block.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.tx.v1beta1.Tx"}}}},"cosmos.tx.v1beta1.GetTxResponse":{"description":"GetTxResponse is the response type for the Service.GetTx method.","type":"object","properties":{"tx":{"description":"tx is the queried transaction.","$ref":"#/definitions/cosmos.tx.v1beta1.Tx"},"tx_response":{"description":"tx_response is the queried TxResponses.","$ref":"#/definitions/cosmos.base.abci.v1beta1.TxResponse"}}},"cosmos.tx.v1beta1.GetTxsEventResponse":{"description":"GetTxsEventResponse is the response type for the Service.TxsByEvents\nRPC method.","type":"object","properties":{"pagination":{"description":"pagination defines a pagination for the response.\nDeprecated post v0.46.x: use total instead.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"},"total":{"type":"string","format":"uint64","title":"total is total number of results available"},"tx_responses":{"description":"tx_responses is the list of queried TxResponses.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.abci.v1beta1.TxResponse"}},"txs":{"description":"txs is the list of queried transactions.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.tx.v1beta1.Tx"}}}},"cosmos.tx.v1beta1.ModeInfo":{"description":"ModeInfo describes the signing mode of a single or nested multisig signer.","type":"object","properties":{"multi":{"title":"multi represents a nested multisig signer","$ref":"#/definitions/cosmos.tx.v1beta1.ModeInfo.Multi"},"single":{"title":"single represents a single signer","$ref":"#/definitions/cosmos.tx.v1beta1.ModeInfo.Single"}}},"cosmos.tx.v1beta1.ModeInfo.Multi":{"type":"object","title":"Multi is the mode info for a multisig public key","properties":{"bitarray":{"title":"bitarray specifies which keys within the multisig are signing","$ref":"#/definitions/cosmos.crypto.multisig.v1beta1.CompactBitArray"},"mode_infos":{"type":"array","title":"mode_infos is the corresponding modes of the signers of the multisig\nwhich could include nested multisig public keys","items":{"type":"object","$ref":"#/definitions/cosmos.tx.v1beta1.ModeInfo"}}}},"cosmos.tx.v1beta1.ModeInfo.Single":{"type":"object","title":"Single is the mode info for a single signer. It is structured as a message\nto allow for additional fields such as locale for SIGN_MODE_TEXTUAL in the\nfuture","properties":{"mode":{"title":"mode is the signing mode of the single signer","$ref":"#/definitions/cosmos.tx.signing.v1beta1.SignMode"}}},"cosmos.tx.v1beta1.OrderBy":{"description":"- ORDER_BY_UNSPECIFIED: ORDER_BY_UNSPECIFIED specifies an unknown sorting order. OrderBy defaults\nto ASC in this case.\n - ORDER_BY_ASC: ORDER_BY_ASC defines ascending order\n - ORDER_BY_DESC: ORDER_BY_DESC defines descending order","type":"string","title":"OrderBy defines the sorting order","default":"ORDER_BY_UNSPECIFIED","enum":["ORDER_BY_UNSPECIFIED","ORDER_BY_ASC","ORDER_BY_DESC"]},"cosmos.tx.v1beta1.SignerInfo":{"description":"SignerInfo describes the public key and signing mode of a single top-level\nsigner.","type":"object","properties":{"mode_info":{"title":"mode_info describes the signing mode of the signer and is a nested\nstructure to support nested multisig pubkey's","$ref":"#/definitions/cosmos.tx.v1beta1.ModeInfo"},"public_key":{"description":"public_key is the public key of the signer. It is optional for accounts\nthat already exist in state. If unset, the verifier can use the required \\\nsigner address for this position and lookup the public key.","$ref":"#/definitions/google.protobuf.Any"},"sequence":{"description":"sequence is the sequence of the account, which describes the\nnumber of committed transactions signed by a given address. It is used to\nprevent replay attacks.","type":"string","format":"uint64"}}},"cosmos.tx.v1beta1.SimulateRequest":{"description":"SimulateRequest is the request type for the Service.Simulate\nRPC method.","type":"object","properties":{"tx":{"description":"tx is the transaction to simulate.\nDeprecated. Send raw tx bytes instead.","$ref":"#/definitions/cosmos.tx.v1beta1.Tx"},"tx_bytes":{"description":"tx_bytes is the raw transaction.\n\nSince: cosmos-sdk 0.43","type":"string","format":"byte"}}},"cosmos.tx.v1beta1.SimulateResponse":{"description":"SimulateResponse is the response type for the\nService.SimulateRPC method.","type":"object","properties":{"gas_info":{"description":"gas_info is the information about gas used in the simulation.","$ref":"#/definitions/cosmos.base.abci.v1beta1.GasInfo"},"result":{"description":"result is the result of the simulation.","$ref":"#/definitions/cosmos.base.abci.v1beta1.Result"}}},"cosmos.tx.v1beta1.Tip":{"description":"Tip is the tip used for meta-transactions.\n\nSince: cosmos-sdk 0.46","type":"object","properties":{"amount":{"type":"array","title":"amount is the amount of the tip","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}},"tipper":{"type":"string","title":"tipper is the address of the account paying for the tip"}}},"cosmos.tx.v1beta1.Tx":{"description":"Tx is the standard type used for broadcasting transactions.","type":"object","properties":{"auth_info":{"title":"auth_info is the authorization related content of the transaction,\nspecifically signers, signer modes and fee","$ref":"#/definitions/cosmos.tx.v1beta1.AuthInfo"},"body":{"title":"body is the processable content of the transaction","$ref":"#/definitions/cosmos.tx.v1beta1.TxBody"},"signatures":{"description":"signatures is a list of signatures that matches the length and order of\nAuthInfo's signer_infos to allow connecting signature meta information like\npublic key and signing mode by position.","type":"array","items":{"type":"string","format":"byte"}}}},"cosmos.tx.v1beta1.TxBody":{"description":"TxBody is the body of a transaction that all signers sign over.","type":"object","properties":{"extension_options":{"type":"array","title":"extension_options are arbitrary options that can be added by chains\nwhen the default options are not sufficient. If any of these are present\nand can't be handled, the transaction will be rejected","items":{"type":"object","$ref":"#/definitions/google.protobuf.Any"}},"memo":{"description":"memo is any arbitrary note/comment to be added to the transaction.\nWARNING: in clients, any publicly exposed text should not be called memo,\nbut should be called `note` instead (see https://github.com/cosmos/cosmos-sdk/issues/9122).","type":"string"},"messages":{"description":"messages is a list of messages to be executed. The required signers of\nthose messages define the number and order of elements in AuthInfo's\nsigner_infos and Tx's signatures. Each required signer address is added to\nthe list only the first time it occurs.\nBy convention, the first required signer (usually from the first message)\nis referred to as the primary signer and pays the fee for the whole\ntransaction.","type":"array","items":{"type":"object","$ref":"#/definitions/google.protobuf.Any"}},"non_critical_extension_options":{"type":"array","title":"extension_options are arbitrary options that can be added by chains\nwhen the default options are not sufficient. If any of these are present\nand can't be handled, they will be ignored","items":{"type":"object","$ref":"#/definitions/google.protobuf.Any"}},"timeout_height":{"type":"string","format":"uint64","title":"timeout is the block height after which this transaction will not\nbe processed by the chain"}}},"cosmos.tx.v1beta1.TxDecodeAminoRequest":{"description":"TxDecodeAminoRequest is the request type for the Service.TxDecodeAmino\nRPC method.\n\nSince: cosmos-sdk 0.47","type":"object","properties":{"amino_binary":{"type":"string","format":"byte"}}},"cosmos.tx.v1beta1.TxDecodeAminoResponse":{"description":"TxDecodeAminoResponse is the response type for the Service.TxDecodeAmino\nRPC method.\n\nSince: cosmos-sdk 0.47","type":"object","properties":{"amino_json":{"type":"string"}}},"cosmos.tx.v1beta1.TxDecodeRequest":{"description":"TxDecodeRequest is the request type for the Service.TxDecode\nRPC method.\n\nSince: cosmos-sdk 0.47","type":"object","properties":{"tx_bytes":{"description":"tx_bytes is the raw transaction.","type":"string","format":"byte"}}},"cosmos.tx.v1beta1.TxDecodeResponse":{"description":"TxDecodeResponse is the response type for the\nService.TxDecode method.\n\nSince: cosmos-sdk 0.47","type":"object","properties":{"tx":{"description":"tx is the decoded transaction.","$ref":"#/definitions/cosmos.tx.v1beta1.Tx"}}},"cosmos.tx.v1beta1.TxEncodeAminoRequest":{"description":"TxEncodeAminoRequest is the request type for the Service.TxEncodeAmino\nRPC method.\n\nSince: cosmos-sdk 0.47","type":"object","properties":{"amino_json":{"type":"string"}}},"cosmos.tx.v1beta1.TxEncodeAminoResponse":{"description":"TxEncodeAminoResponse is the response type for the Service.TxEncodeAmino\nRPC method.\n\nSince: cosmos-sdk 0.47","type":"object","properties":{"amino_binary":{"type":"string","format":"byte"}}},"cosmos.tx.v1beta1.TxEncodeRequest":{"description":"TxEncodeRequest is the request type for the Service.TxEncode\nRPC method.\n\nSince: cosmos-sdk 0.47","type":"object","properties":{"tx":{"description":"tx is the transaction to encode.","$ref":"#/definitions/cosmos.tx.v1beta1.Tx"}}},"cosmos.tx.v1beta1.TxEncodeResponse":{"description":"TxEncodeResponse is the response type for the\nService.TxEncode method.\n\nSince: cosmos-sdk 0.47","type":"object","properties":{"tx_bytes":{"description":"tx_bytes is the encoded transaction bytes.","type":"string","format":"byte"}}},"cosmos.upgrade.v1beta1.ModuleVersion":{"description":"ModuleVersion specifies a module and its consensus version.\n\nSince: cosmos-sdk 0.43","type":"object","properties":{"name":{"type":"string","title":"name of the app module"},"version":{"type":"string","format":"uint64","title":"consensus version of the app module"}}},"cosmos.upgrade.v1beta1.MsgCancelUpgrade":{"description":"MsgCancelUpgrade is the Msg/CancelUpgrade request type.\n\nSince: cosmos-sdk 0.46","type":"object","properties":{"authority":{"description":"authority is the address that controls the module (defaults to x/gov unless overwritten).","type":"string"}}},"cosmos.upgrade.v1beta1.MsgCancelUpgradeResponse":{"description":"MsgCancelUpgradeResponse is the Msg/CancelUpgrade response type.\n\nSince: cosmos-sdk 0.46","type":"object"},"cosmos.upgrade.v1beta1.MsgSoftwareUpgrade":{"description":"MsgSoftwareUpgrade is the Msg/SoftwareUpgrade request type.\n\nSince: cosmos-sdk 0.46","type":"object","properties":{"authority":{"description":"authority is the address that controls the module (defaults to x/gov unless overwritten).","type":"string"},"plan":{"description":"plan is the upgrade plan.","$ref":"#/definitions/cosmos.upgrade.v1beta1.Plan"}}},"cosmos.upgrade.v1beta1.MsgSoftwareUpgradeResponse":{"description":"MsgSoftwareUpgradeResponse is the Msg/SoftwareUpgrade response type.\n\nSince: cosmos-sdk 0.46","type":"object"},"cosmos.upgrade.v1beta1.Plan":{"description":"Plan specifies information about a planned upgrade and when it should occur.","type":"object","properties":{"height":{"description":"The height at which the upgrade must be performed.","type":"string","format":"int64"},"info":{"type":"string","title":"Any application specific upgrade info to be included on-chain\nsuch as a git commit that validators could automatically upgrade to"},"name":{"description":"Sets the name for the upgrade. This name will be used by the upgraded\nversion of the software to apply any special \"on-upgrade\" commands during\nthe first BeginBlock method after the upgrade is applied. It is also used\nto detect whether a software version can handle a given upgrade. If no\nupgrade handler with this name has been set in the software, it will be\nassumed that the software is out-of-date when the upgrade Time or Height is\nreached and the software will exit.","type":"string"},"time":{"description":"Deprecated: Time based upgrades have been deprecated. Time based upgrade logic\nhas been removed from the SDK.\nIf this field is not empty, an error will be thrown.","type":"string","format":"date-time"},"upgraded_client_state":{"description":"Deprecated: UpgradedClientState field has been deprecated. IBC upgrade logic has been\nmoved to the IBC module in the sub module 02-client.\nIf this field is not empty, an error will be thrown.","$ref":"#/definitions/google.protobuf.Any"}}},"cosmos.upgrade.v1beta1.QueryAppliedPlanResponse":{"description":"QueryAppliedPlanResponse is the response type for the Query/AppliedPlan RPC\nmethod.","type":"object","properties":{"height":{"description":"height is the block height at which the plan was applied.","type":"string","format":"int64"}}},"cosmos.upgrade.v1beta1.QueryAuthorityResponse":{"description":"Since: cosmos-sdk 0.46","type":"object","title":"QueryAuthorityResponse is the response type for Query/Authority","properties":{"address":{"type":"string"}}},"cosmos.upgrade.v1beta1.QueryCurrentPlanResponse":{"description":"QueryCurrentPlanResponse is the response type for the Query/CurrentPlan RPC\nmethod.","type":"object","properties":{"plan":{"description":"plan is the current upgrade plan.","$ref":"#/definitions/cosmos.upgrade.v1beta1.Plan"}}},"cosmos.upgrade.v1beta1.QueryModuleVersionsResponse":{"description":"QueryModuleVersionsResponse is the response type for the Query/ModuleVersions\nRPC method.\n\nSince: cosmos-sdk 0.43","type":"object","properties":{"module_versions":{"description":"module_versions is a list of module names with their consensus versions.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.upgrade.v1beta1.ModuleVersion"}}}},"cosmos.upgrade.v1beta1.QueryUpgradedConsensusStateResponse":{"description":"QueryUpgradedConsensusStateResponse is the response type for the Query/UpgradedConsensusState\nRPC method.","type":"object","properties":{"upgraded_consensus_state":{"type":"string","format":"byte","title":"Since: cosmos-sdk 0.43"}}},"cosmos.vesting.v1beta1.MsgCreatePeriodicVestingAccount":{"description":"MsgCreateVestingAccount defines a message that enables creating a vesting\naccount.\n\nSince: cosmos-sdk 0.46","type":"object","properties":{"from_address":{"type":"string"},"start_time":{"description":"start of vesting as unix time (in seconds).","type":"string","format":"int64"},"to_address":{"type":"string"},"vesting_periods":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.vesting.v1beta1.Period"}}}},"cosmos.vesting.v1beta1.MsgCreatePeriodicVestingAccountResponse":{"description":"MsgCreateVestingAccountResponse defines the Msg/CreatePeriodicVestingAccount\nresponse type.\n\nSince: cosmos-sdk 0.46","type":"object"},"cosmos.vesting.v1beta1.MsgCreatePermanentLockedAccount":{"description":"MsgCreatePermanentLockedAccount defines a message that enables creating a permanent\nlocked account.\n\nSince: cosmos-sdk 0.46","type":"object","properties":{"amount":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}},"from_address":{"type":"string"},"to_address":{"type":"string"}}},"cosmos.vesting.v1beta1.MsgCreatePermanentLockedAccountResponse":{"description":"MsgCreatePermanentLockedAccountResponse defines the Msg/CreatePermanentLockedAccount response type.\n\nSince: cosmos-sdk 0.46","type":"object"},"cosmos.vesting.v1beta1.MsgCreateVestingAccount":{"description":"MsgCreateVestingAccount defines a message that enables creating a vesting\naccount.","type":"object","properties":{"amount":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}},"delayed":{"type":"boolean"},"end_time":{"description":"end of vesting as unix time (in seconds).","type":"string","format":"int64"},"from_address":{"type":"string"},"to_address":{"type":"string"}}},"cosmos.vesting.v1beta1.MsgCreateVestingAccountResponse":{"description":"MsgCreateVestingAccountResponse defines the Msg/CreateVestingAccount response type.","type":"object"},"cosmos.vesting.v1beta1.Period":{"description":"Period defines a length of time and amount of coins that will vest.","type":"object","properties":{"amount":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}},"length":{"description":"Period duration in seconds.","type":"string","format":"int64"}}},"google.protobuf.Any":{"type":"object","properties":{"@type":{"type":"string"}},"additionalProperties":{}},"google.rpc.Status":{"type":"object","properties":{"code":{"type":"integer","format":"int32"},"details":{"type":"array","items":{"type":"object","$ref":"#/definitions/google.protobuf.Any"}},"message":{"type":"string"}}},"ibc.applications.fee.v1.Fee":{"type":"object","title":"Fee defines the ICS29 receive, acknowledgement and timeout fees","properties":{"ack_fee":{"type":"array","title":"the packet acknowledgement fee","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}},"recv_fee":{"type":"array","title":"the packet receive fee","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}},"timeout_fee":{"type":"array","title":"the packet timeout fee","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}}}},"ibc.applications.fee.v1.FeeEnabledChannel":{"type":"object","title":"FeeEnabledChannel contains the PortID \u0026 ChannelID for a fee enabled channel","properties":{"channel_id":{"type":"string","title":"unique channel identifier"},"port_id":{"type":"string","title":"unique port identifier"}}},"ibc.applications.fee.v1.IdentifiedPacketFees":{"type":"object","title":"IdentifiedPacketFees contains a list of type PacketFee and associated PacketId","properties":{"packet_fees":{"type":"array","title":"list of packet fees","items":{"type":"object","$ref":"#/definitions/ibc.applications.fee.v1.PacketFee"}},"packet_id":{"title":"unique packet identifier comprised of the channel ID, port ID and sequence","$ref":"#/definitions/ibc.core.channel.v1.PacketId"}}},"ibc.applications.fee.v1.MsgPayPacketFee":{"type":"object","title":"MsgPayPacketFee defines the request type for the PayPacketFee rpc\nThis Msg can be used to pay for a packet at the next sequence send \u0026 should be combined with the Msg that will be\npaid for","properties":{"fee":{"title":"fee encapsulates the recv, ack and timeout fees associated with an IBC packet","$ref":"#/definitions/ibc.applications.fee.v1.Fee"},"relayers":{"type":"array","title":"optional list of relayers permitted to the receive packet fees","items":{"type":"string"}},"signer":{"type":"string","title":"account address to refund fee if necessary"},"source_channel_id":{"type":"string","title":"the source channel unique identifer"},"source_port_id":{"type":"string","title":"the source port unique identifier"}}},"ibc.applications.fee.v1.MsgPayPacketFeeAsync":{"type":"object","title":"MsgPayPacketFeeAsync defines the request type for the PayPacketFeeAsync rpc\nThis Msg can be used to pay for a packet at a specified sequence (instead of the next sequence send)","properties":{"packet_fee":{"title":"the packet fee associated with a particular IBC packet","$ref":"#/definitions/ibc.applications.fee.v1.PacketFee"},"packet_id":{"title":"unique packet identifier comprised of the channel ID, port ID and sequence","$ref":"#/definitions/ibc.core.channel.v1.PacketId"}}},"ibc.applications.fee.v1.MsgPayPacketFeeAsyncResponse":{"type":"object","title":"MsgPayPacketFeeAsyncResponse defines the response type for the PayPacketFeeAsync rpc"},"ibc.applications.fee.v1.MsgPayPacketFeeResponse":{"type":"object","title":"MsgPayPacketFeeResponse defines the response type for the PayPacketFee rpc"},"ibc.applications.fee.v1.MsgRegisterCounterpartyPayee":{"type":"object","title":"MsgRegisterCounterpartyPayee defines the request type for the RegisterCounterpartyPayee rpc","properties":{"channel_id":{"type":"string","title":"unique channel identifier"},"counterparty_payee":{"type":"string","title":"the counterparty payee address"},"port_id":{"type":"string","title":"unique port identifier"},"relayer":{"type":"string","title":"the relayer address"}}},"ibc.applications.fee.v1.MsgRegisterCounterpartyPayeeResponse":{"type":"object","title":"MsgRegisterCounterpartyPayeeResponse defines the response type for the RegisterCounterpartyPayee rpc"},"ibc.applications.fee.v1.MsgRegisterPayee":{"type":"object","title":"MsgRegisterPayee defines the request type for the RegisterPayee rpc","properties":{"channel_id":{"type":"string","title":"unique channel identifier"},"payee":{"type":"string","title":"the payee address"},"port_id":{"type":"string","title":"unique port identifier"},"relayer":{"type":"string","title":"the relayer address"}}},"ibc.applications.fee.v1.MsgRegisterPayeeResponse":{"type":"object","title":"MsgRegisterPayeeResponse defines the response type for the RegisterPayee rpc"},"ibc.applications.fee.v1.PacketFee":{"type":"object","title":"PacketFee contains ICS29 relayer fees, refund address and optional list of permitted relayers","properties":{"fee":{"title":"fee encapsulates the recv, ack and timeout fees associated with an IBC packet","$ref":"#/definitions/ibc.applications.fee.v1.Fee"},"refund_address":{"type":"string","title":"the refund address for unspent fees"},"relayers":{"type":"array","title":"optional list of relayers permitted to receive fees","items":{"type":"string"}}}},"ibc.applications.fee.v1.QueryCounterpartyPayeeResponse":{"type":"object","title":"QueryCounterpartyPayeeResponse defines the response type for the CounterpartyPayee rpc","properties":{"counterparty_payee":{"type":"string","title":"the counterparty payee address used to compensate forward relaying"}}},"ibc.applications.fee.v1.QueryFeeEnabledChannelResponse":{"type":"object","title":"QueryFeeEnabledChannelResponse defines the response type for the FeeEnabledChannel rpc","properties":{"fee_enabled":{"type":"boolean","title":"boolean flag representing the fee enabled channel status"}}},"ibc.applications.fee.v1.QueryFeeEnabledChannelsResponse":{"type":"object","title":"QueryFeeEnabledChannelsResponse defines the response type for the FeeEnabledChannels rpc","properties":{"fee_enabled_channels":{"type":"array","title":"list of fee enabled channels","items":{"type":"object","$ref":"#/definitions/ibc.applications.fee.v1.FeeEnabledChannel"}},"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"ibc.applications.fee.v1.QueryIncentivizedPacketResponse":{"type":"object","title":"QueryIncentivizedPacketsResponse defines the response type for the IncentivizedPacket rpc","properties":{"incentivized_packet":{"title":"the identified fees for the incentivized packet","$ref":"#/definitions/ibc.applications.fee.v1.IdentifiedPacketFees"}}},"ibc.applications.fee.v1.QueryIncentivizedPacketsForChannelResponse":{"type":"object","title":"QueryIncentivizedPacketsResponse defines the response type for the incentivized packets RPC","properties":{"incentivized_packets":{"type":"array","title":"Map of all incentivized_packets","items":{"type":"object","$ref":"#/definitions/ibc.applications.fee.v1.IdentifiedPacketFees"}},"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"ibc.applications.fee.v1.QueryIncentivizedPacketsResponse":{"type":"object","title":"QueryIncentivizedPacketsResponse defines the response type for the IncentivizedPackets rpc","properties":{"incentivized_packets":{"type":"array","title":"list of identified fees for incentivized packets","items":{"type":"object","$ref":"#/definitions/ibc.applications.fee.v1.IdentifiedPacketFees"}},"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"ibc.applications.fee.v1.QueryPayeeResponse":{"type":"object","title":"QueryPayeeResponse defines the response type for the Payee rpc","properties":{"payee_address":{"type":"string","title":"the payee address to which packet fees are paid out"}}},"ibc.applications.fee.v1.QueryTotalAckFeesResponse":{"type":"object","title":"QueryTotalAckFeesResponse defines the response type for the TotalAckFees rpc","properties":{"ack_fees":{"type":"array","title":"the total packet acknowledgement fees","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}}}},"ibc.applications.fee.v1.QueryTotalRecvFeesResponse":{"type":"object","title":"QueryTotalRecvFeesResponse defines the response type for the TotalRecvFees rpc","properties":{"recv_fees":{"type":"array","title":"the total packet receive fees","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}}}},"ibc.applications.fee.v1.QueryTotalTimeoutFeesResponse":{"type":"object","title":"QueryTotalTimeoutFeesResponse defines the response type for the TotalTimeoutFees rpc","properties":{"timeout_fees":{"type":"array","title":"the total packet timeout fees","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}}}},"ibc.applications.interchain_accounts.controller.v1.MsgRegisterInterchainAccount":{"type":"object","title":"MsgRegisterInterchainAccount defines the payload for Msg/RegisterAccount","properties":{"connection_id":{"type":"string"},"ordering":{"$ref":"#/definitions/ibc.core.channel.v1.Order"},"owner":{"type":"string"},"version":{"type":"string"}}},"ibc.applications.interchain_accounts.controller.v1.MsgRegisterInterchainAccountResponse":{"type":"object","title":"MsgRegisterInterchainAccountResponse defines the response for Msg/RegisterAccount","properties":{"channel_id":{"type":"string"},"port_id":{"type":"string"}}},"ibc.applications.interchain_accounts.controller.v1.MsgSendTx":{"type":"object","title":"MsgSendTx defines the payload for Msg/SendTx","properties":{"connection_id":{"type":"string"},"owner":{"type":"string"},"packet_data":{"$ref":"#/definitions/ibc.applications.interchain_accounts.v1.InterchainAccountPacketData"},"relative_timeout":{"description":"Relative timeout timestamp provided will be added to the current block time during transaction execution.\nThe timeout timestamp must be non-zero.","type":"string","format":"uint64"}}},"ibc.applications.interchain_accounts.controller.v1.MsgSendTxResponse":{"type":"object","title":"MsgSendTxResponse defines the response for MsgSendTx","properties":{"sequence":{"type":"string","format":"uint64"}}},"ibc.applications.interchain_accounts.controller.v1.MsgUpdateParams":{"type":"object","title":"MsgUpdateParams defines the payload for Msg/UpdateParams","properties":{"params":{"description":"params defines the 27-interchain-accounts/controller parameters to update.\n\nNOTE: All parameters must be supplied.","$ref":"#/definitions/ibc.applications.interchain_accounts.controller.v1.Params"},"signer":{"type":"string","title":"signer address"}}},"ibc.applications.interchain_accounts.controller.v1.MsgUpdateParamsResponse":{"type":"object","title":"MsgUpdateParamsResponse defines the response for Msg/UpdateParams"},"ibc.applications.interchain_accounts.controller.v1.Params":{"description":"Params defines the set of on-chain interchain accounts parameters.\nThe following parameters may be used to disable the controller submodule.","type":"object","properties":{"controller_enabled":{"description":"controller_enabled enables or disables the controller submodule.","type":"boolean"}}},"ibc.applications.interchain_accounts.controller.v1.QueryInterchainAccountResponse":{"description":"QueryInterchainAccountResponse the response type for the Query/InterchainAccount RPC method.","type":"object","properties":{"address":{"type":"string"}}},"ibc.applications.interchain_accounts.controller.v1.QueryParamsResponse":{"description":"QueryParamsResponse is the response type for the Query/Params RPC method.","type":"object","properties":{"params":{"description":"params defines the parameters of the module.","$ref":"#/definitions/ibc.applications.interchain_accounts.controller.v1.Params"}}},"ibc.applications.interchain_accounts.host.v1.MsgUpdateParams":{"type":"object","title":"MsgUpdateParams defines the payload for Msg/UpdateParams","properties":{"params":{"description":"params defines the 27-interchain-accounts/host parameters to update.\n\nNOTE: All parameters must be supplied.","$ref":"#/definitions/ibc.applications.interchain_accounts.host.v1.Params"},"signer":{"type":"string","title":"signer address"}}},"ibc.applications.interchain_accounts.host.v1.MsgUpdateParamsResponse":{"type":"object","title":"MsgUpdateParamsResponse defines the response for Msg/UpdateParams"},"ibc.applications.interchain_accounts.host.v1.Params":{"description":"Params defines the set of on-chain interchain accounts parameters.\nThe following parameters may be used to disable the host submodule.","type":"object","properties":{"allow_messages":{"description":"allow_messages defines a list of sdk message typeURLs allowed to be executed on a host chain.","type":"array","items":{"type":"string"}},"host_enabled":{"description":"host_enabled enables or disables the host submodule.","type":"boolean"}}},"ibc.applications.interchain_accounts.host.v1.QueryParamsResponse":{"description":"QueryParamsResponse is the response type for the Query/Params RPC method.","type":"object","properties":{"params":{"description":"params defines the parameters of the module.","$ref":"#/definitions/ibc.applications.interchain_accounts.host.v1.Params"}}},"ibc.applications.interchain_accounts.v1.InterchainAccountPacketData":{"description":"InterchainAccountPacketData is comprised of a raw transaction, type of transaction and optional memo field.","type":"object","properties":{"data":{"type":"string","format":"byte"},"memo":{"type":"string"},"type":{"$ref":"#/definitions/ibc.applications.interchain_accounts.v1.Type"}}},"ibc.applications.interchain_accounts.v1.Type":{"description":"- TYPE_UNSPECIFIED: Default zero value enumeration\n - TYPE_EXECUTE_TX: Execute a transaction on an interchain accounts host chain","type":"string","title":"Type defines a classification of message issued from a controller chain to its associated interchain accounts\nhost","default":"TYPE_UNSPECIFIED","enum":["TYPE_UNSPECIFIED","TYPE_EXECUTE_TX"]},"ibc.applications.transfer.v1.DenomTrace":{"description":"DenomTrace contains the base denomination for ICS20 fungible tokens and the\nsource tracing information path.","type":"object","properties":{"base_denom":{"description":"base denomination of the relayed fungible token.","type":"string"},"path":{"description":"path defines the chain of port/channel identifiers used for tracing the\nsource of the fungible token.","type":"string"}}},"ibc.applications.transfer.v1.MsgTransfer":{"type":"object","title":"MsgTransfer defines a msg to transfer fungible tokens (i.e Coins) between\nICS20 enabled chains. See ICS Spec here:\nhttps://github.com/cosmos/ibc/tree/master/spec/app/ics-020-fungible-token-transfer#data-structures","properties":{"memo":{"type":"string","title":"optional memo"},"receiver":{"type":"string","title":"the recipient address on the destination chain"},"sender":{"type":"string","title":"the sender address"},"source_channel":{"type":"string","title":"the channel by which the packet will be sent"},"source_port":{"type":"string","title":"the port on which the packet will be sent"},"timeout_height":{"description":"Timeout height relative to the current block height.\nThe timeout is disabled when set to 0.","$ref":"#/definitions/ibc.core.client.v1.Height"},"timeout_timestamp":{"description":"Timeout timestamp in absolute nanoseconds since unix epoch.\nThe timeout is disabled when set to 0.","type":"string","format":"uint64"},"token":{"title":"the tokens to be transferred","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}}},"ibc.applications.transfer.v1.MsgTransferResponse":{"description":"MsgTransferResponse defines the Msg/Transfer response type.","type":"object","properties":{"sequence":{"type":"string","format":"uint64","title":"sequence number of the transfer packet sent"}}},"ibc.applications.transfer.v1.MsgUpdateParams":{"description":"MsgUpdateParams is the Msg/UpdateParams request type.","type":"object","properties":{"params":{"description":"params defines the transfer parameters to update.\n\nNOTE: All parameters must be supplied.","$ref":"#/definitions/ibc.applications.transfer.v1.Params"},"signer":{"type":"string","title":"signer address"}}},"ibc.applications.transfer.v1.MsgUpdateParamsResponse":{"description":"MsgUpdateParamsResponse defines the response structure for executing a\nMsgUpdateParams message.","type":"object"},"ibc.applications.transfer.v1.Params":{"description":"Params defines the set of IBC transfer parameters.\nNOTE: To prevent a single token from being transferred, set the\nTransfersEnabled parameter to true and then set the bank module's SendEnabled\nparameter for the denomination to false.","type":"object","properties":{"receive_enabled":{"description":"receive_enabled enables or disables all cross-chain token transfers to this\nchain.","type":"boolean"},"send_enabled":{"description":"send_enabled enables or disables all cross-chain token transfers from this\nchain.","type":"boolean"}}},"ibc.applications.transfer.v1.QueryDenomHashResponse":{"description":"QueryDenomHashResponse is the response type for the Query/DenomHash RPC\nmethod.","type":"object","properties":{"hash":{"description":"hash (in hex format) of the denomination trace information.","type":"string"}}},"ibc.applications.transfer.v1.QueryDenomTraceResponse":{"description":"QueryDenomTraceResponse is the response type for the Query/DenomTrace RPC\nmethod.","type":"object","properties":{"denom_trace":{"description":"denom_trace returns the requested denomination trace information.","$ref":"#/definitions/ibc.applications.transfer.v1.DenomTrace"}}},"ibc.applications.transfer.v1.QueryDenomTracesResponse":{"description":"QueryConnectionsResponse is the response type for the Query/DenomTraces RPC\nmethod.","type":"object","properties":{"denom_traces":{"description":"denom_traces returns all denominations trace information.","type":"array","items":{"type":"object","$ref":"#/definitions/ibc.applications.transfer.v1.DenomTrace"}},"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"ibc.applications.transfer.v1.QueryEscrowAddressResponse":{"description":"QueryEscrowAddressResponse is the response type of the EscrowAddress RPC method.","type":"object","properties":{"escrow_address":{"type":"string","title":"the escrow account address"}}},"ibc.applications.transfer.v1.QueryParamsResponse":{"description":"QueryParamsResponse is the response type for the Query/Params RPC method.","type":"object","properties":{"params":{"description":"params defines the parameters of the module.","$ref":"#/definitions/ibc.applications.transfer.v1.Params"}}},"ibc.applications.transfer.v1.QueryTotalEscrowForDenomResponse":{"description":"QueryTotalEscrowForDenomResponse is the response type for TotalEscrowForDenom RPC method.","type":"object","properties":{"amount":{"$ref":"#/definitions/cosmos.base.v1beta1.Coin"}}},"ibc.core.channel.v1.Channel":{"description":"Channel defines pipeline for exactly-once packet delivery between specific\nmodules on separate blockchains, which has at least one end capable of\nsending packets and one end capable of receiving packets.","type":"object","properties":{"connection_hops":{"type":"array","title":"list of connection identifiers, in order, along which packets sent on\nthis channel will travel","items":{"type":"string"}},"counterparty":{"title":"counterparty channel end","$ref":"#/definitions/ibc.core.channel.v1.Counterparty"},"ordering":{"title":"whether the channel is ordered or unordered","$ref":"#/definitions/ibc.core.channel.v1.Order"},"state":{"title":"current state of the channel end","$ref":"#/definitions/ibc.core.channel.v1.State"},"upgrade_sequence":{"type":"string","format":"uint64","title":"upgrade sequence indicates the latest upgrade attempt performed by this channel\nthe value of 0 indicates the channel has never been upgraded"},"version":{"type":"string","title":"opaque channel version, which is agreed upon during the handshake"}}},"ibc.core.channel.v1.Counterparty":{"type":"object","title":"Counterparty defines a channel end counterparty","properties":{"channel_id":{"type":"string","title":"channel end on the counterparty chain"},"port_id":{"description":"port on the counterparty chain which owns the other end of the channel.","type":"string"}}},"ibc.core.channel.v1.ErrorReceipt":{"description":"ErrorReceipt defines a type which encapsulates the upgrade sequence and error associated with the\nupgrade handshake failure. When a channel upgrade handshake is aborted both chains are expected to increment to the\nnext sequence.","type":"object","properties":{"message":{"type":"string","title":"the error message detailing the cause of failure"},"sequence":{"type":"string","format":"uint64","title":"the channel upgrade sequence"}}},"ibc.core.channel.v1.IdentifiedChannel":{"description":"IdentifiedChannel defines a channel with additional port and channel\nidentifier fields.","type":"object","properties":{"channel_id":{"type":"string","title":"channel identifier"},"connection_hops":{"type":"array","title":"list of connection identifiers, in order, along which packets sent on\nthis channel will travel","items":{"type":"string"}},"counterparty":{"title":"counterparty channel end","$ref":"#/definitions/ibc.core.channel.v1.Counterparty"},"ordering":{"title":"whether the channel is ordered or unordered","$ref":"#/definitions/ibc.core.channel.v1.Order"},"port_id":{"type":"string","title":"port identifier"},"state":{"title":"current state of the channel end","$ref":"#/definitions/ibc.core.channel.v1.State"},"upgrade_sequence":{"type":"string","format":"uint64","title":"upgrade sequence indicates the latest upgrade attempt performed by this channel\nthe value of 0 indicates the channel has never been upgraded"},"version":{"type":"string","title":"opaque channel version, which is agreed upon during the handshake"}}},"ibc.core.channel.v1.MsgAcknowledgement":{"type":"object","title":"MsgAcknowledgement receives incoming IBC acknowledgement","properties":{"acknowledgement":{"type":"string","format":"byte"},"packet":{"$ref":"#/definitions/ibc.core.channel.v1.Packet"},"proof_acked":{"type":"string","format":"byte"},"proof_height":{"$ref":"#/definitions/ibc.core.client.v1.Height"},"signer":{"type":"string"}}},"ibc.core.channel.v1.MsgAcknowledgementResponse":{"description":"MsgAcknowledgementResponse defines the Msg/Acknowledgement response type.","type":"object","properties":{"result":{"$ref":"#/definitions/ibc.core.channel.v1.ResponseResultType"}}},"ibc.core.channel.v1.MsgChannelCloseConfirm":{"description":"MsgChannelCloseConfirm defines a msg sent by a Relayer to Chain B\nto acknowledge the change of channel state to CLOSED on Chain A.","type":"object","properties":{"channel_id":{"type":"string"},"counterparty_upgrade_sequence":{"type":"string","format":"uint64"},"port_id":{"type":"string"},"proof_height":{"$ref":"#/definitions/ibc.core.client.v1.Height"},"proof_init":{"type":"string","format":"byte"},"signer":{"type":"string"}}},"ibc.core.channel.v1.MsgChannelCloseConfirmResponse":{"description":"MsgChannelCloseConfirmResponse defines the Msg/ChannelCloseConfirm response\ntype.","type":"object"},"ibc.core.channel.v1.MsgChannelCloseInit":{"description":"MsgChannelCloseInit defines a msg sent by a Relayer to Chain A\nto close a channel with Chain B.","type":"object","properties":{"channel_id":{"type":"string"},"port_id":{"type":"string"},"signer":{"type":"string"}}},"ibc.core.channel.v1.MsgChannelCloseInitResponse":{"description":"MsgChannelCloseInitResponse defines the Msg/ChannelCloseInit response type.","type":"object"},"ibc.core.channel.v1.MsgChannelOpenAck":{"description":"MsgChannelOpenAck defines a msg sent by a Relayer to Chain A to acknowledge\nthe change of channel state to TRYOPEN on Chain B.\nWARNING: a channel upgrade MUST NOT initialize an upgrade for this channel\nin the same block as executing this message otherwise the counterparty will\nbe incapable of opening.","type":"object","properties":{"channel_id":{"type":"string"},"counterparty_channel_id":{"type":"string"},"counterparty_version":{"type":"string"},"port_id":{"type":"string"},"proof_height":{"$ref":"#/definitions/ibc.core.client.v1.Height"},"proof_try":{"type":"string","format":"byte"},"signer":{"type":"string"}}},"ibc.core.channel.v1.MsgChannelOpenAckResponse":{"description":"MsgChannelOpenAckResponse defines the Msg/ChannelOpenAck response type.","type":"object"},"ibc.core.channel.v1.MsgChannelOpenConfirm":{"description":"MsgChannelOpenConfirm defines a msg sent by a Relayer to Chain B to\nacknowledge the change of channel state to OPEN on Chain A.","type":"object","properties":{"channel_id":{"type":"string"},"port_id":{"type":"string"},"proof_ack":{"type":"string","format":"byte"},"proof_height":{"$ref":"#/definitions/ibc.core.client.v1.Height"},"signer":{"type":"string"}}},"ibc.core.channel.v1.MsgChannelOpenConfirmResponse":{"description":"MsgChannelOpenConfirmResponse defines the Msg/ChannelOpenConfirm response\ntype.","type":"object"},"ibc.core.channel.v1.MsgChannelOpenInit":{"description":"MsgChannelOpenInit defines an sdk.Msg to initialize a channel handshake. It\nis called by a relayer on Chain A.","type":"object","properties":{"channel":{"$ref":"#/definitions/ibc.core.channel.v1.Channel"},"port_id":{"type":"string"},"signer":{"type":"string"}}},"ibc.core.channel.v1.MsgChannelOpenInitResponse":{"description":"MsgChannelOpenInitResponse defines the Msg/ChannelOpenInit response type.","type":"object","properties":{"channel_id":{"type":"string"},"version":{"type":"string"}}},"ibc.core.channel.v1.MsgChannelOpenTry":{"description":"MsgChannelOpenInit defines a msg sent by a Relayer to try to open a channel\non Chain B. The version field within the Channel field has been deprecated. Its\nvalue will be ignored by core IBC.","type":"object","properties":{"channel":{"description":"NOTE: the version field within the channel has been deprecated. Its value will be ignored by core IBC.","$ref":"#/definitions/ibc.core.channel.v1.Channel"},"counterparty_version":{"type":"string"},"port_id":{"type":"string"},"previous_channel_id":{"description":"Deprecated: this field is unused. Crossing hello's are no longer supported in core IBC.","type":"string"},"proof_height":{"$ref":"#/definitions/ibc.core.client.v1.Height"},"proof_init":{"type":"string","format":"byte"},"signer":{"type":"string"}}},"ibc.core.channel.v1.MsgChannelOpenTryResponse":{"description":"MsgChannelOpenTryResponse defines the Msg/ChannelOpenTry response type.","type":"object","properties":{"channel_id":{"type":"string"},"version":{"type":"string"}}},"ibc.core.channel.v1.MsgChannelUpgradeAck":{"type":"object","title":"MsgChannelUpgradeAck defines the request type for the ChannelUpgradeAck rpc","properties":{"channel_id":{"type":"string"},"counterparty_upgrade":{"$ref":"#/definitions/ibc.core.channel.v1.Upgrade"},"port_id":{"type":"string"},"proof_channel":{"type":"string","format":"byte"},"proof_height":{"$ref":"#/definitions/ibc.core.client.v1.Height"},"proof_upgrade":{"type":"string","format":"byte"},"signer":{"type":"string"}}},"ibc.core.channel.v1.MsgChannelUpgradeAckResponse":{"type":"object","title":"MsgChannelUpgradeAckResponse defines MsgChannelUpgradeAck response type","properties":{"result":{"$ref":"#/definitions/ibc.core.channel.v1.ResponseResultType"}}},"ibc.core.channel.v1.MsgChannelUpgradeCancel":{"type":"object","title":"MsgChannelUpgradeCancel defines the request type for the ChannelUpgradeCancel rpc","properties":{"channel_id":{"type":"string"},"error_receipt":{"$ref":"#/definitions/ibc.core.channel.v1.ErrorReceipt"},"port_id":{"type":"string"},"proof_error_receipt":{"type":"string","format":"byte"},"proof_height":{"$ref":"#/definitions/ibc.core.client.v1.Height"},"signer":{"type":"string"}}},"ibc.core.channel.v1.MsgChannelUpgradeCancelResponse":{"type":"object","title":"MsgChannelUpgradeCancelResponse defines the MsgChannelUpgradeCancel response type"},"ibc.core.channel.v1.MsgChannelUpgradeConfirm":{"type":"object","title":"MsgChannelUpgradeConfirm defines the request type for the ChannelUpgradeConfirm rpc","properties":{"channel_id":{"type":"string"},"counterparty_channel_state":{"$ref":"#/definitions/ibc.core.channel.v1.State"},"counterparty_upgrade":{"$ref":"#/definitions/ibc.core.channel.v1.Upgrade"},"port_id":{"type":"string"},"proof_channel":{"type":"string","format":"byte"},"proof_height":{"$ref":"#/definitions/ibc.core.client.v1.Height"},"proof_upgrade":{"type":"string","format":"byte"},"signer":{"type":"string"}}},"ibc.core.channel.v1.MsgChannelUpgradeConfirmResponse":{"type":"object","title":"MsgChannelUpgradeConfirmResponse defines MsgChannelUpgradeConfirm response type","properties":{"result":{"$ref":"#/definitions/ibc.core.channel.v1.ResponseResultType"}}},"ibc.core.channel.v1.MsgChannelUpgradeInit":{"description":"MsgChannelUpgradeInit defines the request type for the ChannelUpgradeInit rpc\nWARNING: Initializing a channel upgrade in the same block as opening the channel\nmay result in the counterparty being incapable of opening.","type":"object","properties":{"channel_id":{"type":"string"},"fields":{"$ref":"#/definitions/ibc.core.channel.v1.UpgradeFields"},"port_id":{"type":"string"},"signer":{"type":"string"}}},"ibc.core.channel.v1.MsgChannelUpgradeInitResponse":{"type":"object","title":"MsgChannelUpgradeInitResponse defines the MsgChannelUpgradeInit response type","properties":{"upgrade":{"$ref":"#/definitions/ibc.core.channel.v1.Upgrade"},"upgrade_sequence":{"type":"string","format":"uint64"}}},"ibc.core.channel.v1.MsgChannelUpgradeOpen":{"type":"object","title":"MsgChannelUpgradeOpen defines the request type for the ChannelUpgradeOpen rpc","properties":{"channel_id":{"type":"string"},"counterparty_channel_state":{"$ref":"#/definitions/ibc.core.channel.v1.State"},"counterparty_upgrade_sequence":{"type":"string","format":"uint64"},"port_id":{"type":"string"},"proof_channel":{"type":"string","format":"byte"},"proof_height":{"$ref":"#/definitions/ibc.core.client.v1.Height"},"signer":{"type":"string"}}},"ibc.core.channel.v1.MsgChannelUpgradeOpenResponse":{"type":"object","title":"MsgChannelUpgradeOpenResponse defines the MsgChannelUpgradeOpen response type"},"ibc.core.channel.v1.MsgChannelUpgradeTimeout":{"type":"object","title":"MsgChannelUpgradeTimeout defines the request type for the ChannelUpgradeTimeout rpc","properties":{"channel_id":{"type":"string"},"counterparty_channel":{"$ref":"#/definitions/ibc.core.channel.v1.Channel"},"port_id":{"type":"string"},"proof_channel":{"type":"string","format":"byte"},"proof_height":{"$ref":"#/definitions/ibc.core.client.v1.Height"},"signer":{"type":"string"}}},"ibc.core.channel.v1.MsgChannelUpgradeTimeoutResponse":{"type":"object","title":"MsgChannelUpgradeTimeoutRepsonse defines the MsgChannelUpgradeTimeout response type"},"ibc.core.channel.v1.MsgChannelUpgradeTry":{"type":"object","title":"MsgChannelUpgradeTry defines the request type for the ChannelUpgradeTry rpc","properties":{"channel_id":{"type":"string"},"counterparty_upgrade_fields":{"$ref":"#/definitions/ibc.core.channel.v1.UpgradeFields"},"counterparty_upgrade_sequence":{"type":"string","format":"uint64"},"port_id":{"type":"string"},"proof_channel":{"type":"string","format":"byte"},"proof_height":{"$ref":"#/definitions/ibc.core.client.v1.Height"},"proof_upgrade":{"type":"string","format":"byte"},"proposed_upgrade_connection_hops":{"type":"array","items":{"type":"string"}},"signer":{"type":"string"}}},"ibc.core.channel.v1.MsgChannelUpgradeTryResponse":{"type":"object","title":"MsgChannelUpgradeTryResponse defines the MsgChannelUpgradeTry response type","properties":{"result":{"$ref":"#/definitions/ibc.core.channel.v1.ResponseResultType"},"upgrade":{"$ref":"#/definitions/ibc.core.channel.v1.Upgrade"},"upgrade_sequence":{"type":"string","format":"uint64"}}},"ibc.core.channel.v1.MsgPruneAcknowledgements":{"description":"MsgPruneAcknowledgements defines the request type for the PruneAcknowledgements rpc.","type":"object","properties":{"channel_id":{"type":"string"},"limit":{"type":"string","format":"uint64"},"port_id":{"type":"string"},"signer":{"type":"string"}}},"ibc.core.channel.v1.MsgPruneAcknowledgementsResponse":{"description":"MsgPruneAcknowledgementsResponse defines the response type for the PruneAcknowledgements rpc.","type":"object","properties":{"total_pruned_sequences":{"description":"Number of sequences pruned (includes both packet acknowledgements and packet receipts where appropriate).","type":"string","format":"uint64"},"total_remaining_sequences":{"description":"Number of sequences left after pruning.","type":"string","format":"uint64"}}},"ibc.core.channel.v1.MsgRecvPacket":{"type":"object","title":"MsgRecvPacket receives incoming IBC packet","properties":{"packet":{"$ref":"#/definitions/ibc.core.channel.v1.Packet"},"proof_commitment":{"type":"string","format":"byte"},"proof_height":{"$ref":"#/definitions/ibc.core.client.v1.Height"},"signer":{"type":"string"}}},"ibc.core.channel.v1.MsgRecvPacketResponse":{"description":"MsgRecvPacketResponse defines the Msg/RecvPacket response type.","type":"object","properties":{"result":{"$ref":"#/definitions/ibc.core.channel.v1.ResponseResultType"}}},"ibc.core.channel.v1.MsgTimeout":{"type":"object","title":"MsgTimeout receives timed-out packet","properties":{"next_sequence_recv":{"type":"string","format":"uint64"},"packet":{"$ref":"#/definitions/ibc.core.channel.v1.Packet"},"proof_height":{"$ref":"#/definitions/ibc.core.client.v1.Height"},"proof_unreceived":{"type":"string","format":"byte"},"signer":{"type":"string"}}},"ibc.core.channel.v1.MsgTimeoutOnClose":{"description":"MsgTimeoutOnClose timed-out packet upon counterparty channel closure.","type":"object","properties":{"counterparty_upgrade_sequence":{"type":"string","format":"uint64"},"next_sequence_recv":{"type":"string","format":"uint64"},"packet":{"$ref":"#/definitions/ibc.core.channel.v1.Packet"},"proof_close":{"type":"string","format":"byte"},"proof_height":{"$ref":"#/definitions/ibc.core.client.v1.Height"},"proof_unreceived":{"type":"string","format":"byte"},"signer":{"type":"string"}}},"ibc.core.channel.v1.MsgTimeoutOnCloseResponse":{"description":"MsgTimeoutOnCloseResponse defines the Msg/TimeoutOnClose response type.","type":"object","properties":{"result":{"$ref":"#/definitions/ibc.core.channel.v1.ResponseResultType"}}},"ibc.core.channel.v1.MsgTimeoutResponse":{"description":"MsgTimeoutResponse defines the Msg/Timeout response type.","type":"object","properties":{"result":{"$ref":"#/definitions/ibc.core.channel.v1.ResponseResultType"}}},"ibc.core.channel.v1.MsgUpdateParams":{"description":"MsgUpdateParams is the MsgUpdateParams request type.","type":"object","properties":{"authority":{"description":"authority is the address that controls the module (defaults to x/gov unless overwritten).","type":"string"},"params":{"description":"params defines the channel parameters to update.\n\nNOTE: All parameters must be supplied.","$ref":"#/definitions/ibc.core.channel.v1.Params"}}},"ibc.core.channel.v1.MsgUpdateParamsResponse":{"description":"MsgUpdateParamsResponse defines the MsgUpdateParams response type.","type":"object"},"ibc.core.channel.v1.Order":{"description":"- ORDER_NONE_UNSPECIFIED: zero-value for channel ordering\n - ORDER_UNORDERED: packets can be delivered in any order, which may differ from the order in\nwhich they were sent.\n - ORDER_ORDERED: packets are delivered exactly in the order which they were sent","type":"string","title":"Order defines if a channel is ORDERED or UNORDERED","default":"ORDER_NONE_UNSPECIFIED","enum":["ORDER_NONE_UNSPECIFIED","ORDER_UNORDERED","ORDER_ORDERED"]},"ibc.core.channel.v1.Packet":{"type":"object","title":"Packet defines a type that carries data across different chains through IBC","properties":{"data":{"type":"string","format":"byte","title":"actual opaque bytes transferred directly to the application module"},"destination_channel":{"description":"identifies the channel end on the receiving chain.","type":"string"},"destination_port":{"description":"identifies the port on the receiving chain.","type":"string"},"sequence":{"description":"number corresponds to the order of sends and receives, where a Packet\nwith an earlier sequence number must be sent and received before a Packet\nwith a later sequence number.","type":"string","format":"uint64"},"source_channel":{"description":"identifies the channel end on the sending chain.","type":"string"},"source_port":{"description":"identifies the port on the sending chain.","type":"string"},"timeout_height":{"title":"block height after which the packet times out","$ref":"#/definitions/ibc.core.client.v1.Height"},"timeout_timestamp":{"type":"string","format":"uint64","title":"block timestamp (in nanoseconds) after which the packet times out"}}},"ibc.core.channel.v1.PacketId":{"type":"object","title":"PacketId is an identifer for a unique Packet\nSource chains refer to packets by source port/channel\nDestination chains refer to packets by destination port/channel","properties":{"channel_id":{"type":"string","title":"channel unique identifier"},"port_id":{"type":"string","title":"channel port identifier"},"sequence":{"type":"string","format":"uint64","title":"packet sequence"}}},"ibc.core.channel.v1.PacketState":{"description":"PacketState defines the generic type necessary to retrieve and store\npacket commitments, acknowledgements, and receipts.\nCaller is responsible for knowing the context necessary to interpret this\nstate as a commitment, acknowledgement, or a receipt.","type":"object","properties":{"channel_id":{"description":"channel unique identifier.","type":"string"},"data":{"description":"embedded data that represents packet state.","type":"string","format":"byte"},"port_id":{"description":"channel port identifier.","type":"string"},"sequence":{"description":"packet sequence.","type":"string","format":"uint64"}}},"ibc.core.channel.v1.Params":{"description":"Params defines the set of IBC channel parameters.","type":"object","properties":{"upgrade_timeout":{"description":"the relative timeout after which channel upgrades will time out.","$ref":"#/definitions/ibc.core.channel.v1.Timeout"}}},"ibc.core.channel.v1.QueryChannelClientStateResponse":{"type":"object","title":"QueryChannelClientStateResponse is the Response type for the\nQuery/QueryChannelClientState RPC method","properties":{"identified_client_state":{"title":"client state associated with the channel","$ref":"#/definitions/ibc.core.client.v1.IdentifiedClientState"},"proof":{"type":"string","format":"byte","title":"merkle proof of existence"},"proof_height":{"title":"height at which the proof was retrieved","$ref":"#/definitions/ibc.core.client.v1.Height"}}},"ibc.core.channel.v1.QueryChannelConsensusStateResponse":{"type":"object","title":"QueryChannelClientStateResponse is the Response type for the\nQuery/QueryChannelClientState RPC method","properties":{"client_id":{"type":"string","title":"client ID associated with the consensus state"},"consensus_state":{"title":"consensus state associated with the channel","$ref":"#/definitions/google.protobuf.Any"},"proof":{"type":"string","format":"byte","title":"merkle proof of existence"},"proof_height":{"title":"height at which the proof was retrieved","$ref":"#/definitions/ibc.core.client.v1.Height"}}},"ibc.core.channel.v1.QueryChannelParamsResponse":{"description":"QueryChannelParamsResponse is the response type for the Query/ChannelParams RPC method.","type":"object","properties":{"params":{"description":"params defines the parameters of the module.","$ref":"#/definitions/ibc.core.channel.v1.Params"}}},"ibc.core.channel.v1.QueryChannelResponse":{"description":"QueryChannelResponse is the response type for the Query/Channel RPC method.\nBesides the Channel end, it includes a proof and the height from which the\nproof was retrieved.","type":"object","properties":{"channel":{"title":"channel associated with the request identifiers","$ref":"#/definitions/ibc.core.channel.v1.Channel"},"proof":{"type":"string","format":"byte","title":"merkle proof of existence"},"proof_height":{"title":"height at which the proof was retrieved","$ref":"#/definitions/ibc.core.client.v1.Height"}}},"ibc.core.channel.v1.QueryChannelsResponse":{"description":"QueryChannelsResponse is the response type for the Query/Channels RPC method.","type":"object","properties":{"channels":{"description":"list of stored channels of the chain.","type":"array","items":{"type":"object","$ref":"#/definitions/ibc.core.channel.v1.IdentifiedChannel"}},"height":{"title":"query block height","$ref":"#/definitions/ibc.core.client.v1.Height"},"pagination":{"title":"pagination response","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"ibc.core.channel.v1.QueryConnectionChannelsResponse":{"type":"object","title":"QueryConnectionChannelsResponse is the Response type for the\nQuery/QueryConnectionChannels RPC method","properties":{"channels":{"description":"list of channels associated with a connection.","type":"array","items":{"type":"object","$ref":"#/definitions/ibc.core.channel.v1.IdentifiedChannel"}},"height":{"title":"query block height","$ref":"#/definitions/ibc.core.client.v1.Height"},"pagination":{"title":"pagination response","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"ibc.core.channel.v1.QueryNextSequenceReceiveResponse":{"type":"object","title":"QuerySequenceResponse is the response type for the\nQuery/QueryNextSequenceReceiveResponse RPC method","properties":{"next_sequence_receive":{"type":"string","format":"uint64","title":"next sequence receive number"},"proof":{"type":"string","format":"byte","title":"merkle proof of existence"},"proof_height":{"title":"height at which the proof was retrieved","$ref":"#/definitions/ibc.core.client.v1.Height"}}},"ibc.core.channel.v1.QueryNextSequenceSendResponse":{"type":"object","title":"QueryNextSequenceSendResponse is the request type for the\nQuery/QueryNextSequenceSend RPC method","properties":{"next_sequence_send":{"type":"string","format":"uint64","title":"next sequence send number"},"proof":{"type":"string","format":"byte","title":"merkle proof of existence"},"proof_height":{"title":"height at which the proof was retrieved","$ref":"#/definitions/ibc.core.client.v1.Height"}}},"ibc.core.channel.v1.QueryPacketAcknowledgementResponse":{"type":"object","title":"QueryPacketAcknowledgementResponse defines the client query response for a\npacket which also includes a proof and the height from which the\nproof was retrieved","properties":{"acknowledgement":{"type":"string","format":"byte","title":"packet associated with the request fields"},"proof":{"type":"string","format":"byte","title":"merkle proof of existence"},"proof_height":{"title":"height at which the proof was retrieved","$ref":"#/definitions/ibc.core.client.v1.Height"}}},"ibc.core.channel.v1.QueryPacketAcknowledgementsResponse":{"type":"object","title":"QueryPacketAcknowledgemetsResponse is the request type for the\nQuery/QueryPacketAcknowledgements RPC method","properties":{"acknowledgements":{"type":"array","items":{"type":"object","$ref":"#/definitions/ibc.core.channel.v1.PacketState"}},"height":{"title":"query block height","$ref":"#/definitions/ibc.core.client.v1.Height"},"pagination":{"title":"pagination response","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"ibc.core.channel.v1.QueryPacketCommitmentResponse":{"type":"object","title":"QueryPacketCommitmentResponse defines the client query response for a packet\nwhich also includes a proof and the height from which the proof was\nretrieved","properties":{"commitment":{"type":"string","format":"byte","title":"packet associated with the request fields"},"proof":{"type":"string","format":"byte","title":"merkle proof of existence"},"proof_height":{"title":"height at which the proof was retrieved","$ref":"#/definitions/ibc.core.client.v1.Height"}}},"ibc.core.channel.v1.QueryPacketCommitmentsResponse":{"type":"object","title":"QueryPacketCommitmentsResponse is the request type for the\nQuery/QueryPacketCommitments RPC method","properties":{"commitments":{"type":"array","items":{"type":"object","$ref":"#/definitions/ibc.core.channel.v1.PacketState"}},"height":{"title":"query block height","$ref":"#/definitions/ibc.core.client.v1.Height"},"pagination":{"title":"pagination response","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"ibc.core.channel.v1.QueryPacketReceiptResponse":{"type":"object","title":"QueryPacketReceiptResponse defines the client query response for a packet\nreceipt which also includes a proof, and the height from which the proof was\nretrieved","properties":{"proof":{"type":"string","format":"byte","title":"merkle proof of existence"},"proof_height":{"title":"height at which the proof was retrieved","$ref":"#/definitions/ibc.core.client.v1.Height"},"received":{"type":"boolean","title":"success flag for if receipt exists"}}},"ibc.core.channel.v1.QueryUnreceivedAcksResponse":{"type":"object","title":"QueryUnreceivedAcksResponse is the response type for the\nQuery/UnreceivedAcks RPC method","properties":{"height":{"title":"query block height","$ref":"#/definitions/ibc.core.client.v1.Height"},"sequences":{"type":"array","title":"list of unreceived acknowledgement sequences","items":{"type":"string","format":"uint64"}}}},"ibc.core.channel.v1.QueryUnreceivedPacketsResponse":{"type":"object","title":"QueryUnreceivedPacketsResponse is the response type for the\nQuery/UnreceivedPacketCommitments RPC method","properties":{"height":{"title":"query block height","$ref":"#/definitions/ibc.core.client.v1.Height"},"sequences":{"type":"array","title":"list of unreceived packet sequences","items":{"type":"string","format":"uint64"}}}},"ibc.core.channel.v1.QueryUpgradeErrorResponse":{"type":"object","title":"QueryUpgradeErrorResponse is the response type for the Query/QueryUpgradeError RPC method","properties":{"error_receipt":{"$ref":"#/definitions/ibc.core.channel.v1.ErrorReceipt"},"proof":{"type":"string","format":"byte","title":"merkle proof of existence"},"proof_height":{"title":"height at which the proof was retrieved","$ref":"#/definitions/ibc.core.client.v1.Height"}}},"ibc.core.channel.v1.QueryUpgradeResponse":{"type":"object","title":"QueryUpgradeResponse is the response type for the QueryUpgradeResponse RPC method","properties":{"proof":{"type":"string","format":"byte","title":"merkle proof of existence"},"proof_height":{"title":"height at which the proof was retrieved","$ref":"#/definitions/ibc.core.client.v1.Height"},"upgrade":{"$ref":"#/definitions/ibc.core.channel.v1.Upgrade"}}},"ibc.core.channel.v1.ResponseResultType":{"description":"- RESPONSE_RESULT_TYPE_UNSPECIFIED: Default zero value enumeration\n - RESPONSE_RESULT_TYPE_NOOP: The message did not call the IBC application callbacks (because, for example, the packet had already been relayed)\n - RESPONSE_RESULT_TYPE_SUCCESS: The message was executed successfully\n - RESPONSE_RESULT_TYPE_FAILURE: The message was executed unsuccessfully","type":"string","title":"ResponseResultType defines the possible outcomes of the execution of a message","default":"RESPONSE_RESULT_TYPE_UNSPECIFIED","enum":["RESPONSE_RESULT_TYPE_UNSPECIFIED","RESPONSE_RESULT_TYPE_NOOP","RESPONSE_RESULT_TYPE_SUCCESS","RESPONSE_RESULT_TYPE_FAILURE"]},"ibc.core.channel.v1.State":{"description":"State defines if a channel is in one of the following states:\nCLOSED, INIT, TRYOPEN, OPEN, FLUSHING, FLUSHCOMPLETE or UNINITIALIZED.\n\n - STATE_UNINITIALIZED_UNSPECIFIED: Default State\n - STATE_INIT: A channel has just started the opening handshake.\n - STATE_TRYOPEN: A channel has acknowledged the handshake step on the counterparty chain.\n - STATE_OPEN: A channel has completed the handshake. Open channels are\nready to send and receive packets.\n - STATE_CLOSED: A channel has been closed and can no longer be used to send or receive\npackets.\n - STATE_FLUSHING: A channel has just accepted the upgrade handshake attempt and is flushing in-flight packets.\n - STATE_FLUSHCOMPLETE: A channel has just completed flushing any in-flight packets.","type":"string","default":"STATE_UNINITIALIZED_UNSPECIFIED","enum":["STATE_UNINITIALIZED_UNSPECIFIED","STATE_INIT","STATE_TRYOPEN","STATE_OPEN","STATE_CLOSED","STATE_FLUSHING","STATE_FLUSHCOMPLETE"]},"ibc.core.channel.v1.Timeout":{"description":"Timeout defines an execution deadline structure for 04-channel handlers.\nThis includes packet lifecycle handlers as well as the upgrade handshake handlers.\nA valid Timeout contains either one or both of a timestamp and block height (sequence).","type":"object","properties":{"height":{"title":"block height after which the packet or upgrade times out","$ref":"#/definitions/ibc.core.client.v1.Height"},"timestamp":{"type":"string","format":"uint64","title":"block timestamp (in nanoseconds) after which the packet or upgrade times out"}}},"ibc.core.channel.v1.Upgrade":{"description":"Upgrade is a verifiable type which contains the relevant information\nfor an attempted upgrade. It provides the proposed changes to the channel\nend, the timeout for this upgrade attempt and the next packet sequence\nwhich allows the counterparty to efficiently know the highest sequence it has received.\nThe next sequence send is used for pruning and upgrading from unordered to ordered channels.","type":"object","properties":{"fields":{"$ref":"#/definitions/ibc.core.channel.v1.UpgradeFields"},"next_sequence_send":{"type":"string","format":"uint64"},"timeout":{"$ref":"#/definitions/ibc.core.channel.v1.Timeout"}}},"ibc.core.channel.v1.UpgradeFields":{"description":"UpgradeFields are the fields in a channel end which may be changed\nduring a channel upgrade.","type":"object","properties":{"connection_hops":{"type":"array","items":{"type":"string"}},"ordering":{"$ref":"#/definitions/ibc.core.channel.v1.Order"},"version":{"type":"string"}}},"ibc.core.client.v1.ConsensusStateWithHeight":{"description":"ConsensusStateWithHeight defines a consensus state with an additional height\nfield.","type":"object","properties":{"consensus_state":{"title":"consensus state","$ref":"#/definitions/google.protobuf.Any"},"height":{"title":"consensus state height","$ref":"#/definitions/ibc.core.client.v1.Height"}}},"ibc.core.client.v1.Height":{"description":"Normally the RevisionHeight is incremented at each height while keeping\nRevisionNumber the same. However some consensus algorithms may choose to\nreset the height in certain conditions e.g. hard forks, state-machine\nbreaking changes In these cases, the RevisionNumber is incremented so that\nheight continues to be monitonically increasing even as the RevisionHeight\ngets reset","type":"object","title":"Height is a monotonically increasing data type\nthat can be compared against another Height for the purposes of updating and\nfreezing clients","properties":{"revision_height":{"type":"string","format":"uint64","title":"the height within the given revision"},"revision_number":{"type":"string","format":"uint64","title":"the revision that the client is currently on"}}},"ibc.core.client.v1.IdentifiedClientState":{"description":"IdentifiedClientState defines a client state with an additional client\nidentifier field.","type":"object","properties":{"client_id":{"type":"string","title":"client identifier"},"client_state":{"title":"client state","$ref":"#/definitions/google.protobuf.Any"}}},"ibc.core.client.v1.MsgCreateClient":{"type":"object","title":"MsgCreateClient defines a message to create an IBC client","properties":{"client_state":{"title":"light client state","$ref":"#/definitions/google.protobuf.Any"},"consensus_state":{"description":"consensus state associated with the client that corresponds to a given\nheight.","$ref":"#/definitions/google.protobuf.Any"},"signer":{"type":"string","title":"signer address"}}},"ibc.core.client.v1.MsgCreateClientResponse":{"description":"MsgCreateClientResponse defines the Msg/CreateClient response type.","type":"object"},"ibc.core.client.v1.MsgIBCSoftwareUpgrade":{"type":"object","title":"MsgIBCSoftwareUpgrade defines the message used to schedule an upgrade of an IBC client using a v1 governance proposal","properties":{"plan":{"$ref":"#/definitions/cosmos.upgrade.v1beta1.Plan"},"signer":{"type":"string","title":"signer address"},"upgraded_client_state":{"description":"An UpgradedClientState must be provided to perform an IBC breaking upgrade.\nThis will make the chain commit to the correct upgraded (self) client state\nbefore the upgrade occurs, so that connecting chains can verify that the\nnew upgraded client is valid by verifying a proof on the previous version\nof the chain. This will allow IBC connections to persist smoothly across\nplanned chain upgrades. Correspondingly, the UpgradedClientState field has been\ndeprecated in the Cosmos SDK to allow for this logic to exist solely in\nthe 02-client module.","$ref":"#/definitions/google.protobuf.Any"}}},"ibc.core.client.v1.MsgIBCSoftwareUpgradeResponse":{"description":"MsgIBCSoftwareUpgradeResponse defines the Msg/IBCSoftwareUpgrade response type.","type":"object"},"ibc.core.client.v1.MsgRecoverClient":{"description":"MsgRecoverClient defines the message used to recover a frozen or expired client.","type":"object","properties":{"signer":{"type":"string","title":"signer address"},"subject_client_id":{"type":"string","title":"the client identifier for the client to be updated if the proposal passes"},"substitute_client_id":{"type":"string","title":"the substitute client identifier for the client which will replace the subject\nclient"}}},"ibc.core.client.v1.MsgRecoverClientResponse":{"description":"MsgRecoverClientResponse defines the Msg/RecoverClient response type.","type":"object"},"ibc.core.client.v1.MsgSubmitMisbehaviour":{"description":"MsgSubmitMisbehaviour defines an sdk.Msg type that submits Evidence for\nlight client misbehaviour.\nThis message has been deprecated. Use MsgUpdateClient instead.","type":"object","properties":{"client_id":{"type":"string","title":"client unique identifier"},"misbehaviour":{"title":"misbehaviour used for freezing the light client","$ref":"#/definitions/google.protobuf.Any"},"signer":{"type":"string","title":"signer address"}}},"ibc.core.client.v1.MsgSubmitMisbehaviourResponse":{"description":"MsgSubmitMisbehaviourResponse defines the Msg/SubmitMisbehaviour response\ntype.","type":"object"},"ibc.core.client.v1.MsgUpdateClient":{"description":"MsgUpdateClient defines an sdk.Msg to update a IBC client state using\nthe given client message.","type":"object","properties":{"client_id":{"type":"string","title":"client unique identifier"},"client_message":{"title":"client message to update the light client","$ref":"#/definitions/google.protobuf.Any"},"signer":{"type":"string","title":"signer address"}}},"ibc.core.client.v1.MsgUpdateClientResponse":{"description":"MsgUpdateClientResponse defines the Msg/UpdateClient response type.","type":"object"},"ibc.core.client.v1.MsgUpdateParams":{"description":"MsgUpdateParams defines the sdk.Msg type to update the client parameters.","type":"object","properties":{"params":{"description":"params defines the client parameters to update.\n\nNOTE: All parameters must be supplied.","$ref":"#/definitions/ibc.core.client.v1.Params"},"signer":{"type":"string","title":"signer address"}}},"ibc.core.client.v1.MsgUpdateParamsResponse":{"description":"MsgUpdateParamsResponse defines the MsgUpdateParams response type.","type":"object"},"ibc.core.client.v1.MsgUpgradeClient":{"type":"object","title":"MsgUpgradeClient defines an sdk.Msg to upgrade an IBC client to a new client\nstate","properties":{"client_id":{"type":"string","title":"client unique identifier"},"client_state":{"title":"upgraded client state","$ref":"#/definitions/google.protobuf.Any"},"consensus_state":{"title":"upgraded consensus state, only contains enough information to serve as a\nbasis of trust in update logic","$ref":"#/definitions/google.protobuf.Any"},"proof_upgrade_client":{"type":"string","format":"byte","title":"proof that old chain committed to new client"},"proof_upgrade_consensus_state":{"type":"string","format":"byte","title":"proof that old chain committed to new consensus state"},"signer":{"type":"string","title":"signer address"}}},"ibc.core.client.v1.MsgUpgradeClientResponse":{"description":"MsgUpgradeClientResponse defines the Msg/UpgradeClient response type.","type":"object"},"ibc.core.client.v1.Params":{"description":"Params defines the set of IBC light client parameters.","type":"object","properties":{"allowed_clients":{"description":"allowed_clients defines the list of allowed client state types which can be created\nand interacted with. If a client type is removed from the allowed clients list, usage\nof this client will be disabled until it is added again to the list.","type":"array","items":{"type":"string"}}}},"ibc.core.client.v1.QueryClientParamsResponse":{"description":"QueryClientParamsResponse is the response type for the Query/ClientParams RPC\nmethod.","type":"object","properties":{"params":{"description":"params defines the parameters of the module.","$ref":"#/definitions/ibc.core.client.v1.Params"}}},"ibc.core.client.v1.QueryClientStateResponse":{"description":"QueryClientStateResponse is the response type for the Query/ClientState RPC\nmethod. Besides the client state, it includes a proof and the height from\nwhich the proof was retrieved.","type":"object","properties":{"client_state":{"title":"client state associated with the request identifier","$ref":"#/definitions/google.protobuf.Any"},"proof":{"type":"string","format":"byte","title":"merkle proof of existence"},"proof_height":{"title":"height at which the proof was retrieved","$ref":"#/definitions/ibc.core.client.v1.Height"}}},"ibc.core.client.v1.QueryClientStatesResponse":{"description":"QueryClientStatesResponse is the response type for the Query/ClientStates RPC\nmethod.","type":"object","properties":{"client_states":{"description":"list of stored ClientStates of the chain.","type":"array","items":{"type":"object","$ref":"#/definitions/ibc.core.client.v1.IdentifiedClientState"}},"pagination":{"title":"pagination response","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"ibc.core.client.v1.QueryClientStatusResponse":{"description":"QueryClientStatusResponse is the response type for the Query/ClientStatus RPC\nmethod. It returns the current status of the IBC client.","type":"object","properties":{"status":{"type":"string"}}},"ibc.core.client.v1.QueryConsensusStateHeightsResponse":{"type":"object","title":"QueryConsensusStateHeightsResponse is the response type for the\nQuery/ConsensusStateHeights RPC method","properties":{"consensus_state_heights":{"type":"array","title":"consensus state heights","items":{"type":"object","$ref":"#/definitions/ibc.core.client.v1.Height"}},"pagination":{"title":"pagination response","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"ibc.core.client.v1.QueryConsensusStateResponse":{"type":"object","title":"QueryConsensusStateResponse is the response type for the Query/ConsensusState\nRPC method","properties":{"consensus_state":{"title":"consensus state associated with the client identifier at the given height","$ref":"#/definitions/google.protobuf.Any"},"proof":{"type":"string","format":"byte","title":"merkle proof of existence"},"proof_height":{"title":"height at which the proof was retrieved","$ref":"#/definitions/ibc.core.client.v1.Height"}}},"ibc.core.client.v1.QueryConsensusStatesResponse":{"type":"object","title":"QueryConsensusStatesResponse is the response type for the\nQuery/ConsensusStates RPC method","properties":{"consensus_states":{"type":"array","title":"consensus states associated with the identifier","items":{"type":"object","$ref":"#/definitions/ibc.core.client.v1.ConsensusStateWithHeight"}},"pagination":{"title":"pagination response","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"ibc.core.client.v1.QueryUpgradedClientStateResponse":{"description":"QueryUpgradedClientStateResponse is the response type for the\nQuery/UpgradedClientState RPC method.","type":"object","properties":{"upgraded_client_state":{"title":"client state associated with the request identifier","$ref":"#/definitions/google.protobuf.Any"}}},"ibc.core.client.v1.QueryUpgradedConsensusStateResponse":{"description":"QueryUpgradedConsensusStateResponse is the response type for the\nQuery/UpgradedConsensusState RPC method.","type":"object","properties":{"upgraded_consensus_state":{"title":"Consensus state associated with the request identifier","$ref":"#/definitions/google.protobuf.Any"}}},"ibc.core.commitment.v1.MerklePrefix":{"type":"object","title":"MerklePrefix is merkle path prefixed to the key.\nThe constructed key from the Path and the key will be append(Path.KeyPath,\nappend(Path.KeyPrefix, key...))","properties":{"key_prefix":{"type":"string","format":"byte"}}},"ibc.core.connection.v1.ConnectionEnd":{"description":"ConnectionEnd defines a stateful object on a chain connected to another\nseparate one.\nNOTE: there must only be 2 defined ConnectionEnds to establish\na connection between two chains.","type":"object","properties":{"client_id":{"description":"client associated with this connection.","type":"string"},"counterparty":{"description":"counterparty chain associated with this connection.","$ref":"#/definitions/ibc.core.connection.v1.Counterparty"},"delay_period":{"description":"delay period that must pass before a consensus state can be used for\npacket-verification NOTE: delay period logic is only implemented by some\nclients.","type":"string","format":"uint64"},"state":{"description":"current state of the connection end.","$ref":"#/definitions/ibc.core.connection.v1.State"},"versions":{"description":"IBC version which can be utilised to determine encodings or protocols for\nchannels or packets utilising this connection.","type":"array","items":{"type":"object","$ref":"#/definitions/ibc.core.connection.v1.Version"}}}},"ibc.core.connection.v1.Counterparty":{"description":"Counterparty defines the counterparty chain associated with a connection end.","type":"object","properties":{"client_id":{"description":"identifies the client on the counterparty chain associated with a given\nconnection.","type":"string"},"connection_id":{"description":"identifies the connection end on the counterparty chain associated with a\ngiven connection.","type":"string"},"prefix":{"description":"commitment merkle prefix of the counterparty chain.","$ref":"#/definitions/ibc.core.commitment.v1.MerklePrefix"}}},"ibc.core.connection.v1.IdentifiedConnection":{"description":"IdentifiedConnection defines a connection with additional connection\nidentifier field.","type":"object","properties":{"client_id":{"description":"client associated with this connection.","type":"string"},"counterparty":{"description":"counterparty chain associated with this connection.","$ref":"#/definitions/ibc.core.connection.v1.Counterparty"},"delay_period":{"description":"delay period associated with this connection.","type":"string","format":"uint64"},"id":{"description":"connection identifier.","type":"string"},"state":{"description":"current state of the connection end.","$ref":"#/definitions/ibc.core.connection.v1.State"},"versions":{"type":"array","title":"IBC version which can be utilised to determine encodings or protocols for\nchannels or packets utilising this connection","items":{"type":"object","$ref":"#/definitions/ibc.core.connection.v1.Version"}}}},"ibc.core.connection.v1.MsgConnectionOpenAck":{"description":"MsgConnectionOpenAck defines a msg sent by a Relayer to Chain A to\nacknowledge the change of connection state to TRYOPEN on Chain B.","type":"object","properties":{"client_state":{"$ref":"#/definitions/google.protobuf.Any"},"connection_id":{"type":"string"},"consensus_height":{"$ref":"#/definitions/ibc.core.client.v1.Height"},"counterparty_connection_id":{"type":"string"},"host_consensus_state_proof":{"type":"string","format":"byte","title":"optional proof data for host state machines that are unable to introspect their own consensus state"},"proof_client":{"type":"string","format":"byte","title":"proof of client state included in message"},"proof_consensus":{"type":"string","format":"byte","title":"proof of client consensus state"},"proof_height":{"$ref":"#/definitions/ibc.core.client.v1.Height"},"proof_try":{"type":"string","format":"byte","title":"proof of the initialization the connection on Chain B: `UNITIALIZED -\u003e\nTRYOPEN`"},"signer":{"type":"string"},"version":{"$ref":"#/definitions/ibc.core.connection.v1.Version"}}},"ibc.core.connection.v1.MsgConnectionOpenAckResponse":{"description":"MsgConnectionOpenAckResponse defines the Msg/ConnectionOpenAck response type.","type":"object"},"ibc.core.connection.v1.MsgConnectionOpenConfirm":{"description":"MsgConnectionOpenConfirm defines a msg sent by a Relayer to Chain B to\nacknowledge the change of connection state to OPEN on Chain A.","type":"object","properties":{"connection_id":{"type":"string"},"proof_ack":{"type":"string","format":"byte","title":"proof for the change of the connection state on Chain A: `INIT -\u003e OPEN`"},"proof_height":{"$ref":"#/definitions/ibc.core.client.v1.Height"},"signer":{"type":"string"}}},"ibc.core.connection.v1.MsgConnectionOpenConfirmResponse":{"description":"MsgConnectionOpenConfirmResponse defines the Msg/ConnectionOpenConfirm\nresponse type.","type":"object"},"ibc.core.connection.v1.MsgConnectionOpenInit":{"description":"MsgConnectionOpenInit defines the msg sent by an account on Chain A to\ninitialize a connection with Chain B.","type":"object","properties":{"client_id":{"type":"string"},"counterparty":{"$ref":"#/definitions/ibc.core.connection.v1.Counterparty"},"delay_period":{"type":"string","format":"uint64"},"signer":{"type":"string"},"version":{"$ref":"#/definitions/ibc.core.connection.v1.Version"}}},"ibc.core.connection.v1.MsgConnectionOpenInitResponse":{"description":"MsgConnectionOpenInitResponse defines the Msg/ConnectionOpenInit response\ntype.","type":"object"},"ibc.core.connection.v1.MsgConnectionOpenTry":{"description":"MsgConnectionOpenTry defines a msg sent by a Relayer to try to open a\nconnection on Chain B.","type":"object","properties":{"client_id":{"type":"string"},"client_state":{"$ref":"#/definitions/google.protobuf.Any"},"consensus_height":{"$ref":"#/definitions/ibc.core.client.v1.Height"},"counterparty":{"$ref":"#/definitions/ibc.core.connection.v1.Counterparty"},"counterparty_versions":{"type":"array","items":{"type":"object","$ref":"#/definitions/ibc.core.connection.v1.Version"}},"delay_period":{"type":"string","format":"uint64"},"host_consensus_state_proof":{"type":"string","format":"byte","title":"optional proof data for host state machines that are unable to introspect their own consensus state"},"previous_connection_id":{"description":"Deprecated: this field is unused. Crossing hellos are no longer supported in core IBC.","type":"string"},"proof_client":{"type":"string","format":"byte","title":"proof of client state included in message"},"proof_consensus":{"type":"string","format":"byte","title":"proof of client consensus state"},"proof_height":{"$ref":"#/definitions/ibc.core.client.v1.Height"},"proof_init":{"type":"string","format":"byte","title":"proof of the initialization the connection on Chain A: `UNITIALIZED -\u003e\nINIT`"},"signer":{"type":"string"}}},"ibc.core.connection.v1.MsgConnectionOpenTryResponse":{"description":"MsgConnectionOpenTryResponse defines the Msg/ConnectionOpenTry response type.","type":"object"},"ibc.core.connection.v1.MsgUpdateParams":{"description":"MsgUpdateParams defines the sdk.Msg type to update the connection parameters.","type":"object","properties":{"params":{"description":"params defines the connection parameters to update.\n\nNOTE: All parameters must be supplied.","$ref":"#/definitions/ibc.core.connection.v1.Params"},"signer":{"type":"string","title":"signer address"}}},"ibc.core.connection.v1.MsgUpdateParamsResponse":{"description":"MsgUpdateParamsResponse defines the MsgUpdateParams response type.","type":"object"},"ibc.core.connection.v1.Params":{"description":"Params defines the set of Connection parameters.","type":"object","properties":{"max_expected_time_per_block":{"description":"maximum expected time per block (in nanoseconds), used to enforce block delay. This parameter should reflect the\nlargest amount of time that the chain might reasonably take to produce the next block under normal operating\nconditions. A safe choice is 3-5x the expected time per block.","type":"string","format":"uint64"}}},"ibc.core.connection.v1.QueryClientConnectionsResponse":{"type":"object","title":"QueryClientConnectionsResponse is the response type for the\nQuery/ClientConnections RPC method","properties":{"connection_paths":{"description":"slice of all the connection paths associated with a client.","type":"array","items":{"type":"string"}},"proof":{"type":"string","format":"byte","title":"merkle proof of existence"},"proof_height":{"title":"height at which the proof was generated","$ref":"#/definitions/ibc.core.client.v1.Height"}}},"ibc.core.connection.v1.QueryConnectionClientStateResponse":{"type":"object","title":"QueryConnectionClientStateResponse is the response type for the\nQuery/ConnectionClientState RPC method","properties":{"identified_client_state":{"title":"client state associated with the channel","$ref":"#/definitions/ibc.core.client.v1.IdentifiedClientState"},"proof":{"type":"string","format":"byte","title":"merkle proof of existence"},"proof_height":{"title":"height at which the proof was retrieved","$ref":"#/definitions/ibc.core.client.v1.Height"}}},"ibc.core.connection.v1.QueryConnectionConsensusStateResponse":{"type":"object","title":"QueryConnectionConsensusStateResponse is the response type for the\nQuery/ConnectionConsensusState RPC method","properties":{"client_id":{"type":"string","title":"client ID associated with the consensus state"},"consensus_state":{"title":"consensus state associated with the channel","$ref":"#/definitions/google.protobuf.Any"},"proof":{"type":"string","format":"byte","title":"merkle proof of existence"},"proof_height":{"title":"height at which the proof was retrieved","$ref":"#/definitions/ibc.core.client.v1.Height"}}},"ibc.core.connection.v1.QueryConnectionParamsResponse":{"description":"QueryConnectionParamsResponse is the response type for the Query/ConnectionParams RPC method.","type":"object","properties":{"params":{"description":"params defines the parameters of the module.","$ref":"#/definitions/ibc.core.connection.v1.Params"}}},"ibc.core.connection.v1.QueryConnectionResponse":{"description":"QueryConnectionResponse is the response type for the Query/Connection RPC\nmethod. Besides the connection end, it includes a proof and the height from\nwhich the proof was retrieved.","type":"object","properties":{"connection":{"title":"connection associated with the request identifier","$ref":"#/definitions/ibc.core.connection.v1.ConnectionEnd"},"proof":{"type":"string","format":"byte","title":"merkle proof of existence"},"proof_height":{"title":"height at which the proof was retrieved","$ref":"#/definitions/ibc.core.client.v1.Height"}}},"ibc.core.connection.v1.QueryConnectionsResponse":{"description":"QueryConnectionsResponse is the response type for the Query/Connections RPC\nmethod.","type":"object","properties":{"connections":{"description":"list of stored connections of the chain.","type":"array","items":{"type":"object","$ref":"#/definitions/ibc.core.connection.v1.IdentifiedConnection"}},"height":{"title":"query block height","$ref":"#/definitions/ibc.core.client.v1.Height"},"pagination":{"title":"pagination response","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"ibc.core.connection.v1.State":{"description":"State defines if a connection is in one of the following states:\nINIT, TRYOPEN, OPEN or UNINITIALIZED.\n\n - STATE_UNINITIALIZED_UNSPECIFIED: Default State\n - STATE_INIT: A connection end has just started the opening handshake.\n - STATE_TRYOPEN: A connection end has acknowledged the handshake step on the counterparty\nchain.\n - STATE_OPEN: A connection end has completed the handshake.","type":"string","default":"STATE_UNINITIALIZED_UNSPECIFIED","enum":["STATE_UNINITIALIZED_UNSPECIFIED","STATE_INIT","STATE_TRYOPEN","STATE_OPEN"]},"ibc.core.connection.v1.Version":{"description":"Version defines the versioning scheme used to negotiate the IBC verison in\nthe connection handshake.","type":"object","properties":{"features":{"type":"array","title":"list of features compatible with the specified identifier","items":{"type":"string"}},"identifier":{"type":"string","title":"unique version identifier"}}},"ibc.lightclients.wasm.v1.MsgMigrateContract":{"description":"MsgMigrateContract defines the request type for the MigrateContract rpc.","type":"object","properties":{"checksum":{"type":"string","format":"byte","title":"checksum is the sha256 hash of the new wasm byte code for the contract"},"client_id":{"type":"string","title":"the client id of the contract"},"msg":{"type":"string","format":"byte","title":"the json encoded message to be passed to the contract on migration"},"signer":{"type":"string","title":"signer address"}}},"ibc.lightclients.wasm.v1.MsgMigrateContractResponse":{"type":"object","title":"MsgMigrateContractResponse defines the response type for the MigrateContract rpc"},"ibc.lightclients.wasm.v1.MsgRemoveChecksum":{"description":"MsgRemoveChecksum defines the request type for the MsgRemoveChecksum rpc.","type":"object","properties":{"checksum":{"type":"string","format":"byte","title":"checksum is the sha256 hash to be removed from the store"},"signer":{"type":"string","title":"signer address"}}},"ibc.lightclients.wasm.v1.MsgRemoveChecksumResponse":{"type":"object","title":"MsgStoreChecksumResponse defines the response type for the StoreCode rpc"},"ibc.lightclients.wasm.v1.MsgStoreCode":{"description":"MsgStoreCode defines the request type for the StoreCode rpc.","type":"object","properties":{"signer":{"type":"string","title":"signer address"},"wasm_byte_code":{"type":"string","format":"byte","title":"wasm byte code of light client contract. It can be raw or gzip compressed"}}},"ibc.lightclients.wasm.v1.MsgStoreCodeResponse":{"type":"object","title":"MsgStoreCodeResponse defines the response type for the StoreCode rpc","properties":{"checksum":{"type":"string","format":"byte","title":"checksum is the sha256 hash of the stored code"}}},"ibc.lightclients.wasm.v1.QueryChecksumsResponse":{"description":"QueryChecksumsResponse is the response type for the Query/Checksums RPC method.","type":"object","properties":{"checksums":{"description":"checksums is a list of the hex encoded checksums of all wasm codes stored.","type":"array","items":{"type":"string"}},"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"ibc.lightclients.wasm.v1.QueryCodeResponse":{"description":"QueryCodeResponse is the response type for the Query/Code RPC method.","type":"object","properties":{"data":{"type":"string","format":"byte"}}},"poktroll.application.Application":{"type":"object","title":"Application defines the type used to store an on-chain definition and state for an application","properties":{"address":{"description":"The Bech32 address of the application.","type":"string"},"delegatee_gateway_addresses":{"description":"TODO_BETA: Rename `delegatee_gateway_addresses` to `gateway_addresses_delegated_to`.\nEnsure to rename all relevant configs, comments, variables, function names, etc as well.\n\nThe Bech32 encoded addresses for all delegatee Gateways, in a non-nullable slice","type":"array","items":{"type":"string"}},"pending_undelegations":{"description":"A map from sessionEndHeights to a list of Gateways.\nThe key is the height of the last block of the session during which the\nrespective undelegation was committed.\nThe value is a list of gateways being undelegated from.\nTODO_DOCUMENT(@red-0ne): Need to document the flow from this comment\nso its clear to everyone why this is necessary; https://github.com/pokt-network/poktroll/issues/476#issuecomment-2052639906.","type":"object","additionalProperties":{"$ref":"#/definitions/poktroll.application.UndelegatingGatewayList"}},"service_configs":{"type":"array","title":"The list of services this appliccation is configured to request service for","items":{"type":"object","$ref":"#/definitions/poktroll.shared.ApplicationServiceConfig"}},"stake":{"title":"The total amount of uPOKT the application has staked","$ref":"#/definitions/cosmos.base.v1beta1.Coin"},"unstake_session_end_height":{"description":"The end height of the session at which an application initiated its unstaking process.\nIf the application did not unstake, this value will be 0.","type":"string","format":"uint64"}}},"poktroll.application.MsgDelegateToGateway":{"type":"object","properties":{"app_address":{"description":"The Bech32 address of the application.","type":"string"},"gateway_address":{"description":"The Bech32 address of the gateway the application wants to delegate to.","type":"string"}}},"poktroll.application.MsgDelegateToGatewayResponse":{"type":"object"},"poktroll.application.MsgStakeApplication":{"type":"object","properties":{"address":{"description":"The Bech32 address of the application.","type":"string"},"services":{"type":"array","title":"The list of services this application is staked to request service for","items":{"type":"object","$ref":"#/definitions/poktroll.shared.ApplicationServiceConfig"}},"stake":{"title":"The total amount of uPOKT the application has staked. Must be ≥ to the current amount that the application has staked (if any)","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}}},"poktroll.application.MsgStakeApplicationResponse":{"type":"object"},"poktroll.application.MsgUndelegateFromGateway":{"type":"object","properties":{"app_address":{"description":"The Bech32 address of the application.","type":"string"},"gateway_address":{"description":"The Bech32 address of the gateway the application wants to undelegate from.","type":"string"}}},"poktroll.application.MsgUndelegateFromGatewayResponse":{"type":"object"},"poktroll.application.MsgUnstakeApplication":{"type":"object","properties":{"address":{"type":"string"}}},"poktroll.application.MsgUnstakeApplicationResponse":{"type":"object"},"poktroll.application.MsgUpdateParams":{"description":"MsgUpdateParams is the Msg/UpdateParams request type.","type":"object","properties":{"authority":{"description":"authority is the address that controls the module (defaults to x/gov unless overwritten).","type":"string"},"params":{"description":"params defines the x/application parameters to update.\nNOTE: All parameters must be supplied.","$ref":"#/definitions/poktroll.application.Params"}}},"poktroll.application.MsgUpdateParamsResponse":{"description":"MsgUpdateParamsResponse defines the response structure for executing a\nMsgUpdateParams message.","type":"object"},"poktroll.application.Params":{"description":"Params defines the parameters for the module.","type":"object","properties":{"max_delegated_gateways":{"description":"max_delegated_gateways defines the maximum number of gateways that a single\napplication can delegate to. This is used to prevent performance issues\nin case the relay ring signature becomes too large.","type":"string","format":"uint64"}}},"poktroll.application.QueryAllApplicationsResponse":{"type":"object","properties":{"applications":{"type":"array","items":{"type":"object","$ref":"#/definitions/poktroll.application.Application"}},"pagination":{"$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"poktroll.application.QueryGetApplicationResponse":{"type":"object","properties":{"application":{"$ref":"#/definitions/poktroll.application.Application"}}},"poktroll.application.QueryParamsResponse":{"description":"QueryParamsResponse is response type for the Query/Params RPC method.","type":"object","properties":{"params":{"description":"params holds all the parameters of this module.","$ref":"#/definitions/poktroll.application.Params"}}},"poktroll.application.UndelegatingGatewayList":{"description":"UndelegatingGatewayList is used as the Value of `pending_undelegations`.\nIt is required to store a repeated list of strings as a map value.","type":"object","properties":{"gateway_addresses":{"type":"array","items":{"type":"string"}}}},"poktroll.gateway.Gateway":{"type":"object","properties":{"address":{"type":"string","title":"The Bech32 address of the gateway"},"stake":{"title":"The total amount of uPOKT the gateway has staked","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}}},"poktroll.gateway.MsgStakeGateway":{"type":"object","properties":{"address":{"type":"string","title":"The Bech32 address of the gateway"},"stake":{"title":"The total amount of uPOKT the gateway is staking. Must be ≥ to the current amount that the gateway has staked (if any)","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}}},"poktroll.gateway.MsgStakeGatewayResponse":{"type":"object"},"poktroll.gateway.MsgUnstakeGateway":{"type":"object","properties":{"address":{"type":"string","title":"The Bech32 address of the gateway"}}},"poktroll.gateway.MsgUnstakeGatewayResponse":{"type":"object"},"poktroll.gateway.MsgUpdateParams":{"description":"MsgUpdateParams is the Msg/UpdateParams request type.","type":"object","properties":{"authority":{"description":"authority is the address that controls the module (defaults to x/gov unless overwritten).","type":"string"},"params":{"description":"params defines the x/gateway parameters to update.\nNOTE: All parameters must be supplied.","$ref":"#/definitions/poktroll.gateway.Params"}}},"poktroll.gateway.MsgUpdateParamsResponse":{"description":"MsgUpdateParamsResponse defines the response structure for executing a\nMsgUpdateParams message.","type":"object"},"poktroll.gateway.Params":{"description":"Params defines the parameters for the module.","type":"object"},"poktroll.gateway.QueryAllGatewaysResponse":{"type":"object","properties":{"gateways":{"type":"array","items":{"type":"object","$ref":"#/definitions/poktroll.gateway.Gateway"}},"pagination":{"$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"poktroll.gateway.QueryGetGatewayResponse":{"type":"object","properties":{"gateway":{"$ref":"#/definitions/poktroll.gateway.Gateway"}}},"poktroll.gateway.QueryParamsResponse":{"description":"QueryParamsResponse is response type for the Query/Params RPC method.","type":"object","properties":{"params":{"description":"params holds all the parameters of this module.","$ref":"#/definitions/poktroll.gateway.Params"}}},"poktroll.proof.Claim":{"type":"object","title":"Claim is the serialized object stored on-chain for claims pending to be proven","properties":{"root_hash":{"description":"Root hash returned from smt.SMST#Root().","type":"string","format":"byte"},"session_header":{"description":"The session header of the session that this claim is for.","$ref":"#/definitions/poktroll.session.SessionHeader"},"supplier_operator_address":{"type":"string","title":"the address of the supplier's operator that submitted this claim"}}},"poktroll.proof.MsgCreateClaim":{"type":"object","properties":{"root_hash":{"type":"string","format":"byte","title":"root returned from smt.SMST#Root()"},"session_header":{"$ref":"#/definitions/poktroll.session.SessionHeader"},"supplier_operator_address":{"type":"string"}}},"poktroll.proof.MsgCreateClaimResponse":{"type":"object","properties":{"claim":{"$ref":"#/definitions/poktroll.proof.Claim"}}},"poktroll.proof.MsgSubmitProof":{"type":"object","properties":{"proof":{"type":"string","format":"byte","title":"serialized version of *smt.SparseMerkleClosestProof"},"session_header":{"$ref":"#/definitions/poktroll.session.SessionHeader"},"supplier_operator_address":{"type":"string"}}},"poktroll.proof.MsgSubmitProofResponse":{"type":"object","properties":{"proof":{"$ref":"#/definitions/poktroll.proof.Proof"}}},"poktroll.proof.MsgUpdateParam":{"description":"MsgUpdateParam is the Msg/UpdateParam request type to update a single param.","type":"object","properties":{"as_bytes":{"type":"string","format":"byte"},"as_coin":{"$ref":"#/definitions/cosmos.base.v1beta1.Coin"},"as_float":{"type":"number","format":"float"},"as_int64":{"type":"string","format":"int64"},"as_string":{"type":"string"},"authority":{"description":"authority is the address that controls the module (defaults to x/gov unless overwritten).","type":"string"},"name":{"type":"string","title":"The (name, as_type) tuple must match the corresponding name and type as\nspecified in the `Params`` message in `proof/params.proto.`"}}},"poktroll.proof.MsgUpdateParamResponse":{"description":"MsgUpdateParamResponse defines the response structure for executing a\nMsgUpdateParam message after a single param update.","type":"object","properties":{"params":{"$ref":"#/definitions/poktroll.proof.Params"}}},"poktroll.proof.MsgUpdateParams":{"description":"MsgUpdateParams is the Msg/UpdateParams request type to update all params at once.","type":"object","properties":{"authority":{"description":"authority is the address that controls the module (defaults to x/gov unless overwritten).","type":"string"},"params":{"description":"params defines the x/proof parameters to update.\nNOTE: All parameters must be supplied.","$ref":"#/definitions/poktroll.proof.Params"}}},"poktroll.proof.MsgUpdateParamsResponse":{"description":"MsgUpdateParamsResponse defines the response structure for executing a\nMsgUpdateParams message.","type":"object"},"poktroll.proof.Params":{"description":"Params defines the parameters for the module.","type":"object","properties":{"proof_missing_penalty":{"description":"proof_missing_penalty is the number of tokens (uPOKT) which should be slashed from a supplier\nwhen a proof is required (either via proof_requirement_threshold or proof_missing_penalty)\nbut is not provided.","$ref":"#/definitions/cosmos.base.v1beta1.Coin"},"proof_request_probability":{"description":"proof_request_probability is the probability of a session requiring a proof\nif it's cost (i.e. compute unit consumption) is below the ProofRequirementThreshold.","type":"number","format":"float"},"proof_requirement_threshold":{"description":"proof_requirement_threshold is the session cost (i.e. compute unit consumption)\nthreshold which asserts that a session MUST have a corresponding proof when its cost\nis equal to or above the threshold. This is in contrast to the this requirement\nbeing determined probabilistically via ProofRequestProbability.\n\nTODO_MAINNET: Consider renaming this to `proof_requirement_threshold_compute_units`.","type":"string","format":"uint64"},"relay_difficulty_target_hash":{"description":"TODO_FOLLOWUP(@olshansk, #690): Either delete this or change it to be named \"minimum\"\nrelay_difficulty_target_hash is the maximum value a relay hash must be less than to be volume/reward applicable.","type":"string","format":"byte"}}},"poktroll.proof.Proof":{"type":"object","properties":{"closest_merkle_proof":{"description":"The serialized SMST proof from the `#ClosestProof()` method.","type":"string","format":"byte"},"session_header":{"description":"The session header of the session that this claim is for.","$ref":"#/definitions/poktroll.session.SessionHeader"},"supplier_operator_address":{"description":"Address of the supplier's operator that submitted this proof.","type":"string"}}},"poktroll.proof.QueryAllClaimsResponse":{"type":"object","properties":{"claims":{"type":"array","items":{"type":"object","$ref":"#/definitions/poktroll.proof.Claim"}},"pagination":{"$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"poktroll.proof.QueryAllProofsResponse":{"type":"object","properties":{"pagination":{"$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"},"proofs":{"type":"array","items":{"type":"object","$ref":"#/definitions/poktroll.proof.Proof"}}}},"poktroll.proof.QueryGetClaimResponse":{"type":"object","properties":{"claim":{"$ref":"#/definitions/poktroll.proof.Claim"}}},"poktroll.proof.QueryGetProofResponse":{"type":"object","properties":{"proof":{"$ref":"#/definitions/poktroll.proof.Proof"}}},"poktroll.proof.QueryParamsResponse":{"description":"QueryParamsResponse is response type for the Query/Params RPC method.","type":"object","properties":{"params":{"description":"params holds all the parameters of this module.","$ref":"#/definitions/poktroll.proof.Params"}}},"poktroll.service.MsgAddService":{"description":"MsgAddService defines a message for adding a new message to the network.\nServices can be added by any actor in the network making them truly\npermissionless.\nTODO_BETA: Add Champions / Sources once its fully defined.","type":"object","properties":{"owner_address":{"description":"The Bech32 address of the service owner.","type":"string"},"service":{"title":"The Service being added to the network","$ref":"#/definitions/poktroll.shared.Service"}}},"poktroll.service.MsgAddServiceResponse":{"type":"object"},"poktroll.service.MsgUpdateParams":{"description":"MsgUpdateParams is the Msg/UpdateParams request type.","type":"object","properties":{"authority":{"description":"authority is the address that controls the module (defaults to x/gov unless overwritten).","type":"string"},"params":{"description":"params defines the x/service parameters to update.\nNOTE: All parameters must be supplied.","$ref":"#/definitions/poktroll.service.Params"}}},"poktroll.service.MsgUpdateParamsResponse":{"description":"MsgUpdateParamsResponse defines the response structure for executing a\nMsgUpdateParams message.","type":"object"},"poktroll.service.Params":{"description":"Params defines the parameters for the module.","type":"object","properties":{"add_service_fee":{"description":"The amount of uPOKT required to add a new service.\nThis will be deducted from the signer's account balance,\nand transferred to the pocket network foundation.","type":"string","format":"uint64"}}},"poktroll.service.QueryAllServicesResponse":{"type":"object","properties":{"pagination":{"$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"},"service":{"type":"array","items":{"type":"object","$ref":"#/definitions/poktroll.shared.Service"}}}},"poktroll.service.QueryGetServiceResponse":{"type":"object","properties":{"service":{"$ref":"#/definitions/poktroll.shared.Service"}}},"poktroll.service.QueryParamsResponse":{"description":"QueryParamsResponse is response type for the Query/Params RPC method.","type":"object","properties":{"params":{"description":"params holds all the parameters of this module.","$ref":"#/definitions/poktroll.service.Params"}}},"poktroll.session.MsgUpdateParams":{"description":"MsgUpdateParams is the Msg/UpdateParams request type.","type":"object","properties":{"authority":{"description":"authority is the address that controls the module (defaults to x/gov unless overwritten).","type":"string"},"params":{"description":"params defines the x/session parameters to update.\nNOTE: All parameters must be supplied.","$ref":"#/definitions/poktroll.session.Params"}}},"poktroll.session.MsgUpdateParamsResponse":{"description":"MsgUpdateParamsResponse defines the response structure for executing a\nMsgUpdateParams message.","type":"object"},"poktroll.session.Params":{"description":"Params defines the parameters for the module.","type":"object"},"poktroll.session.QueryGetSessionResponse":{"type":"object","properties":{"session":{"$ref":"#/definitions/poktroll.session.Session"}}},"poktroll.session.QueryParamsResponse":{"description":"QueryParamsResponse is response type for the Query/Params RPC method.","type":"object","properties":{"params":{"description":"params holds all the parameters of this module.","$ref":"#/definitions/poktroll.session.Params"}}},"poktroll.session.Session":{"description":"Session is a fully hydrated session object that contains all the information for the Session\nand its parcipants.","type":"object","properties":{"application":{"title":"A fully hydrated application object this session is for","$ref":"#/definitions/poktroll.application.Application"},"header":{"title":"The header of the session containing lightweight data","$ref":"#/definitions/poktroll.session.SessionHeader"},"num_blocks_per_session":{"type":"string","format":"int64","title":"The number of blocks per session when this session started"},"session_id":{"type":"string","title":"A unique pseudoranom ID for this session"},"session_number":{"type":"string","format":"int64","title":"The session number since genesis"},"suppliers":{"type":"array","title":"A fully hydrated set of servicers that are serving the application","items":{"type":"object","$ref":"#/definitions/poktroll.shared.Supplier"}}}},"poktroll.session.SessionHeader":{"description":"SessionHeader is a lightweight header for a session that can be passed around.\nIt is the minimal amount of data required to hydrate \u0026 retrieve all data relevant to the session.","type":"object","properties":{"application_address":{"description":"The Bech32 address of the application.","type":"string"},"service":{"title":"The service this session is for","$ref":"#/definitions/poktroll.shared.Service"},"session_end_block_height":{"description":"Note that`session_end_block_height` is a derivative of (`start` + `num_blocks_per_session`)\nas goverened by on-chain params at the time of the session start.\nIt is stored as an additional field to simplofy business logic in case\nthe number of blocks_per_session changes during the session.\n\nThe height at which this session ended, this is the last block of the session","type":"string","format":"int64"},"session_id":{"description":"A unique pseudoranom ID for this session","type":"string","title":"NOTE: session_id can be derived from the above values using on-chain but is included in the header for convenience"},"session_start_block_height":{"type":"string","format":"int64","title":"The height at which this session started"}}},"poktroll.shared.ApplicationServiceConfig":{"type":"object","title":"ApplicationServiceConfig holds the service configuration the application stakes for","properties":{"service":{"description":"TODO_MAINNET: Avoid embedding the full Service because we just need the ID.\n\nThe Service for which the application is configured","$ref":"#/definitions/poktroll.shared.Service"}}},"poktroll.shared.ConfigOption":{"type":"object","title":"Key-value wrapper for config options, as proto maps can't be keyed by enums","properties":{"key":{"title":"Config option key","$ref":"#/definitions/poktroll.shared.ConfigOptions"},"value":{"type":"string","title":"Config option value"}}},"poktroll.shared.ConfigOptions":{"description":"Enum to define configuration options\nTODO_RESEARCH: Should these be configs, SLAs or something else? There will be more discussion once we get closer to implementing on-chain QoS.\n\n - UNKNOWN_CONFIG: Undefined config option\n - TIMEOUT: Timeout setting","type":"string","default":"UNKNOWN_CONFIG","enum":["UNKNOWN_CONFIG","TIMEOUT"]},"poktroll.shared.MsgUpdateParam":{"description":"MsgUpdateParam is the Msg/UpdateParam request type to update a single param.","type":"object","properties":{"as_bytes":{"type":"string","format":"byte"},"as_int64":{"type":"string","format":"int64"},"as_string":{"type":"string"},"authority":{"description":"authority is the address that controls the module (defaults to x/gov unless overwritten).","type":"string"},"name":{"type":"string"}}},"poktroll.shared.MsgUpdateParamResponse":{"description":"MsgUpdateParamResponse defines the response structure for executing a\nMsgUpdateParam message after a single param update.","type":"object","properties":{"params":{"$ref":"#/definitions/poktroll.shared.Params"}}},"poktroll.shared.MsgUpdateParams":{"description":"MsgUpdateParams is the Msg/UpdateParams request type.","type":"object","properties":{"authority":{"description":"authority is the address that controls the module (defaults to x/gov unless overwritten).","type":"string"},"params":{"description":"NOTE: All parameters must be supplied.","$ref":"#/definitions/poktroll.shared.Params"}}},"poktroll.shared.MsgUpdateParamsResponse":{"description":"MsgUpdateParamsResponse defines the response structure for executing a\nMsgUpdateParams message.","type":"object"},"poktroll.shared.Params":{"description":"Params defines the parameters for the module.","type":"object","properties":{"application_unbonding_period_sessions":{"description":"application_unbonding_period_sessions is the number of sessions that an application must wait after\nunstaking before their staked assets are moved to their account balance.\nOn-chain business logic requires, and ensures, that the corresponding block count of the\napplication unbonding period will exceed the end of its corresponding proof window close height.","type":"string","format":"uint64"},"claim_window_close_offset_blocks":{"description":"claim_window_close_offset_blocks is the number of blocks after the claim window\nopen height, at which the claim window closes.","type":"string","format":"uint64"},"claim_window_open_offset_blocks":{"description":"claim_window_open_offset_blocks is the number of blocks after the session grace\nperiod height, at which the claim window opens.","type":"string","format":"uint64"},"grace_period_end_offset_blocks":{"description":"grace_period_end_offset_blocks is the number of blocks, after the session end height,\nduring which the supplier can still service payable relays.\nSuppliers will need to recreate a claim for the previous session (if already created) to\nget paid for the additional relays.","type":"string","format":"uint64"},"num_blocks_per_session":{"description":"num_blocks_per_session is the number of blocks between the session start \u0026 end heights.","type":"string","format":"uint64"},"proof_window_close_offset_blocks":{"description":"proof_window_close_offset_blocks is the number of blocks after the proof window\nopen height, at which the proof window closes.","type":"string","format":"uint64"},"proof_window_open_offset_blocks":{"description":"proof_window_open_offset_blocks is the number of blocks after the claim window\nclose height, at which the proof window opens.","type":"string","format":"uint64"},"supplier_unbonding_period_sessions":{"description":"supplier_unbonding_period_sessions is the number of sessions that a supplier must wait after\nunstaking before their staked assets are moved to their account balance.\nOn-chain business logic requires, and ensures, that the corresponding block count of the unbonding\nperiod will exceed the end of any active claim \u0026 proof lifecycles.","type":"string","format":"uint64"}}},"poktroll.shared.QueryParamsResponse":{"description":"QueryParamsResponse is response type for the Query/Params RPC method.","type":"object","properties":{"params":{"description":"params holds all the parameters of this module.","$ref":"#/definitions/poktroll.shared.Params"}}},"poktroll.shared.RPCType":{"description":"- UNKNOWN_RPC: Undefined RPC type\n - GRPC: gRPC\n - WEBSOCKET: WebSocket\n - JSON_RPC: JSON-RPC\n - REST: REST","type":"string","title":"Enum to define RPC types","default":"UNKNOWN_RPC","enum":["UNKNOWN_RPC","GRPC","WEBSOCKET","JSON_RPC","REST"]},"poktroll.shared.Service":{"type":"object","title":"Service message to encapsulate unique and semantic identifiers for a service on the network","properties":{"compute_units_per_relay":{"description":"Compute units required per relay for this service","type":"string","format":"uint64","title":"The cost of a single relay for this service in terms of compute units.\nMust be used alongside the global 'compute_units_to_tokens_multipler' to calculate the cost of a relay for this service.\ncost_per_relay_for_specific_service = compute_units_per_relay_for_specific_service * compute_units_to_tokens_multipler_global_value"},"id":{"description":"Unique identifier for the service","type":"string","title":"For example, what if we want to request a session for a certain service but with some additional configs that identify it?"},"name":{"description":"TODO_MAINNET: Remove this.\n\n(Optional) Semantic human readable name for the service","type":"string"},"owner_address":{"description":"The owner address that created the service.\nIt is the address that receives rewards based on the Service's on-chain usage\nIt is the only address that can update the service configuration (e.g. compute_units_per_relay),\nor make other updates to it.\n\nThe Bech32 address of the service owner / creator","type":"string"}}},"poktroll.shared.ServiceRevenueShare":{"type":"object","title":"ServiceRevenueShare message to hold revenue share configuration details","properties":{"address":{"type":"string","title":"The Bech32 address of the revenue share recipient"},"rev_share_percentage":{"type":"number","format":"float","title":"The percentage of revenue share the recipient will receive"}}},"poktroll.shared.Supplier":{"description":"Supplier is the type defining the actor in Pocket Network that provides RPC services.","type":"object","properties":{"operator_address":{"description":"The operator address of the supplier operator (i.e. the one managing the off-chain server).\nThe operator address can update the supplier's configurations excluding the owner address.\nThis property does not change over the supplier's lifespan, the supplier must be unstaked\nand re-staked to effectively update this value.\n\nBech32 cosmos address","type":"string"},"owner_address":{"description":"The address of the owner (i.e. staker, custodial) that owns the funds for staking.\nBy default, this address is the one that receives all the rewards unless owtherwise specified.\nThis property cannot be updated by the operator.\n\nBech32 cosmos address","type":"string"},"services":{"type":"array","title":"The service configs this supplier can support","items":{"type":"object","$ref":"#/definitions/poktroll.shared.SupplierServiceConfig"}},"services_activation_heights_map":{"description":"services_activation_heights_map is a map of serviceIds to the height at\nwhich the staked supplier will become active for that service.\nActivation heights are session start heights.","type":"object","additionalProperties":{"type":"string","format":"uint64"}},"stake":{"title":"The total amount of uPOKT the supplier has staked","$ref":"#/definitions/cosmos.base.v1beta1.Coin"},"unstake_session_end_height":{"description":"The session end height at which an actively unbonding supplier unbonds its stake.\nIf the supplier did not unstake, this value will be 0.","type":"string","format":"uint64"}}},"poktroll.shared.SupplierEndpoint":{"type":"object","title":"SupplierEndpoint message to hold service configuration details","properties":{"configs":{"type":"array","title":"Additional configuration options for the endpoint","items":{"type":"object","$ref":"#/definitions/poktroll.shared.ConfigOption"}},"rpc_type":{"title":"Type of RPC exposed on the url above","$ref":"#/definitions/poktroll.shared.RPCType"},"url":{"type":"string","title":"URL of the endpoint"}}},"poktroll.shared.SupplierServiceConfig":{"type":"object","title":"SupplierServiceConfig holds the service configuration the supplier stakes for","properties":{"endpoints":{"type":"array","title":"List of endpoints for the service","items":{"type":"object","$ref":"#/definitions/poktroll.shared.SupplierEndpoint"}},"rev_share":{"type":"array","title":"List of revenue share configurations for the service","items":{"type":"object","$ref":"#/definitions/poktroll.shared.ServiceRevenueShare"}},"service":{"description":"TODO_MAINNET: Avoid embedding the full Service because we just need the ID.\n\nThe Service for which the supplier is configured","$ref":"#/definitions/poktroll.shared.Service"}}},"poktroll.supplier.MsgStakeSupplier":{"type":"object","properties":{"operator_address":{"type":"string","title":"The Bech32 address of the operator (i.e. provider, non-custodial)"},"owner_address":{"type":"string","title":"The Bech32 address of the owner (i.e. custodial, staker)"},"services":{"type":"array","title":"The list of services this supplier is staked to provide service for","items":{"type":"object","$ref":"#/definitions/poktroll.shared.SupplierServiceConfig"}},"signer":{"type":"string","title":"The Bech32 address of the message signer (i.e. owner or operator)"},"stake":{"title":"The total amount of uPOKT the supplier has staked. Must be ≥ to the current amount that the supplier has staked (if any)","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}}},"poktroll.supplier.MsgStakeSupplierResponse":{"type":"object"},"poktroll.supplier.MsgUnstakeSupplier":{"type":"object","properties":{"operator_address":{"type":"string","title":"The Bech32 address of the operator (i.e. provider, non-custodial)"},"signer":{"type":"string","title":"The Bech32 address of the message signer (i.e. owner or operator)"}}},"poktroll.supplier.MsgUnstakeSupplierResponse":{"type":"object"},"poktroll.supplier.MsgUpdateParams":{"description":"MsgUpdateParams is the Msg/UpdateParams request type.","type":"object","properties":{"authority":{"description":"authority is the address that controls the module (defaults to x/gov unless overwritten).","type":"string"},"params":{"description":"params defines the x/supplier parameters to update.\nNOTE: All parameters must be supplied.","$ref":"#/definitions/poktroll.supplier.Params"}}},"poktroll.supplier.MsgUpdateParamsResponse":{"description":"MsgUpdateParamsResponse defines the response structure for executing a\nMsgUpdateParams message.","type":"object"},"poktroll.supplier.Params":{"description":"Params defines the parameters for the module.","type":"object"},"poktroll.supplier.QueryAllSuppliersResponse":{"type":"object","properties":{"pagination":{"$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"},"supplier":{"type":"array","items":{"type":"object","$ref":"#/definitions/poktroll.shared.Supplier"}}}},"poktroll.supplier.QueryGetSupplierResponse":{"type":"object","properties":{"supplier":{"$ref":"#/definitions/poktroll.shared.Supplier"}}},"poktroll.supplier.QueryParamsResponse":{"description":"QueryParamsResponse is response type for the Query/Params RPC method.","type":"object","properties":{"params":{"description":"params holds all the parameters of this module.","$ref":"#/definitions/poktroll.supplier.Params"}}},"poktroll.tokenomics.MsgUpdateParam":{"description":"MsgUpdateParam is the Msg/UpdateParam request type to update a single param.","type":"object","properties":{"as_bytes":{"type":"string","format":"byte"},"as_int64":{"type":"string","format":"int64"},"as_string":{"type":"string"},"authority":{"description":"authority is the address that controls the module (defaults to x/gov unless overwritten).","type":"string"},"name":{"type":"string","title":"The (name, as_type) tuple must match the corresponding name and type as\nspecified in the `Params` message in `proof/params.proto.`"}}},"poktroll.tokenomics.MsgUpdateParamResponse":{"description":"MsgUpdateParamResponse defines the response structure for executing a\nMsgUpdateParam message after a single param update.","type":"object","properties":{"params":{"$ref":"#/definitions/poktroll.tokenomics.Params"}}},"poktroll.tokenomics.MsgUpdateParams":{"description":"MsgUpdateParams is the Msg/UpdateParams request type to update all params at once.","type":"object","properties":{"authority":{"description":"authority is the address that controls the module (defaults to x/gov unless overwritten).","type":"string"},"params":{"description":"params defines the x/tokenomics parameters to update.\nNOTE: All parameters must be supplied.","$ref":"#/definitions/poktroll.tokenomics.Params"}}},"poktroll.tokenomics.MsgUpdateParamsResponse":{"description":"MsgUpdateParamsResponse defines the response structure for executing a\nMsgUpdateParams message.","type":"object"},"poktroll.tokenomics.Params":{"description":"Params defines the parameters for the tokenomics module.","type":"object","properties":{"compute_units_to_tokens_multiplier":{"description":"The amount of upokt that a compute unit should translate to when settling a session.","type":"string","format":"uint64"}}},"poktroll.tokenomics.QueryAllRelayMiningDifficultyResponse":{"type":"object","properties":{"pagination":{"$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"},"relayMiningDifficulty":{"type":"array","items":{"type":"object","$ref":"#/definitions/poktroll.tokenomics.RelayMiningDifficulty"}}}},"poktroll.tokenomics.QueryGetRelayMiningDifficultyResponse":{"type":"object","properties":{"relayMiningDifficulty":{"$ref":"#/definitions/poktroll.tokenomics.RelayMiningDifficulty"}}},"poktroll.tokenomics.QueryParamsResponse":{"description":"QueryParamsResponse is response type for the Query/Params RPC method.","type":"object","properties":{"params":{"description":"params holds all the parameters of this module.","$ref":"#/definitions/poktroll.tokenomics.Params"}}},"poktroll.tokenomics.RelayMiningDifficulty":{"description":"RelayMiningDifficulty is a message used to store the on-chain Relay Mining\ndifficulty associated with a specific service ID.","type":"object","properties":{"block_height":{"description":"The block height at which this relay mining difficulty was computed.\nThis is needed to determine how much time has passed since the last time\nthe exponential moving average was computed.","type":"string","format":"int64"},"num_relays_ema":{"description":"The exponential moving average of the number of relays for this service.","type":"string","format":"uint64"},"service_id":{"description":"The service ID the relay mining difficulty is associated with.","type":"string"},"target_hash":{"description":"The target hash determining the difficulty to mine relays for this service.\nFor example, if we use sha256 to hash the (RelayRequest,ReqlayResponse) tuple,\nand the difficulty has 4 leading zero bits, then the target hash would be:\n0b0000111... (until 32 bytes are filled up).","type":"string","format":"byte"}}},"tendermint.abci.CheckTxType":{"type":"string","default":"NEW","enum":["NEW","RECHECK"]},"tendermint.abci.CommitInfo":{"type":"object","properties":{"round":{"type":"integer","format":"int32"},"votes":{"type":"array","items":{"type":"object","$ref":"#/definitions/tendermint.abci.VoteInfo"}}}},"tendermint.abci.Event":{"description":"Event allows application developers to attach additional information to\nResponseFinalizeBlock and ResponseCheckTx.\nLater, transactions may be queried using these events.","type":"object","properties":{"attributes":{"type":"array","items":{"type":"object","$ref":"#/definitions/tendermint.abci.EventAttribute"}},"type":{"type":"string"}}},"tendermint.abci.EventAttribute":{"description":"EventAttribute is a single key-value pair, associated with an event.","type":"object","properties":{"index":{"type":"boolean","title":"nondeterministic"},"key":{"type":"string"},"value":{"type":"string"}}},"tendermint.abci.ExecTxResult":{"description":"ExecTxResult contains results of executing one individual transaction.\n\n* Its structure is equivalent to #ResponseDeliverTx which will be deprecated/deleted","type":"object","properties":{"code":{"type":"integer","format":"int64"},"codespace":{"type":"string"},"data":{"type":"string","format":"byte"},"events":{"type":"array","title":"nondeterministic","items":{"type":"object","$ref":"#/definitions/tendermint.abci.Event"}},"gas_used":{"type":"string","format":"int64"},"gas_wanted":{"type":"string","format":"int64"},"info":{"type":"string","title":"nondeterministic"},"log":{"type":"string","title":"nondeterministic"}}},"tendermint.abci.ExtendedCommitInfo":{"description":"ExtendedCommitInfo is similar to CommitInfo except that it is only used in\nthe PrepareProposal request such that CometBFT can provide vote extensions\nto the application.","type":"object","properties":{"round":{"description":"The round at which the block proposer decided in the previous height.","type":"integer","format":"int32"},"votes":{"description":"List of validators' addresses in the last validator set with their voting\ninformation, including vote extensions.","type":"array","items":{"type":"object","$ref":"#/definitions/tendermint.abci.ExtendedVoteInfo"}}}},"tendermint.abci.ExtendedVoteInfo":{"type":"object","properties":{"block_id_flag":{"title":"block_id_flag indicates whether the validator voted for a block, nil, or did not vote at all","$ref":"#/definitions/tendermint.types.BlockIDFlag"},"extension_signature":{"type":"string","format":"byte","title":"Vote extension signature created by CometBFT"},"validator":{"description":"The validator that sent the vote.","$ref":"#/definitions/tendermint.abci.Validator"},"vote_extension":{"description":"Non-deterministic extension provided by the sending validator's application.","type":"string","format":"byte"}}},"tendermint.abci.Misbehavior":{"type":"object","properties":{"height":{"type":"string","format":"int64","title":"The height when the offense occurred"},"time":{"type":"string","format":"date-time","title":"The corresponding time where the offense occurred"},"total_voting_power":{"type":"string","format":"int64","title":"Total voting power of the validator set in case the ABCI application does\nnot store historical validators.\nhttps://github.com/tendermint/tendermint/issues/4581"},"type":{"$ref":"#/definitions/tendermint.abci.MisbehaviorType"},"validator":{"title":"The offending validator","$ref":"#/definitions/tendermint.abci.Validator"}}},"tendermint.abci.MisbehaviorType":{"type":"string","default":"UNKNOWN","enum":["UNKNOWN","DUPLICATE_VOTE","LIGHT_CLIENT_ATTACK"]},"tendermint.abci.RequestApplySnapshotChunk":{"type":"object","title":"Applies a snapshot chunk","properties":{"chunk":{"type":"string","format":"byte"},"index":{"type":"integer","format":"int64"},"sender":{"type":"string"}}},"tendermint.abci.RequestCheckTx":{"type":"object","properties":{"tx":{"type":"string","format":"byte"},"type":{"$ref":"#/definitions/tendermint.abci.CheckTxType"}}},"tendermint.abci.RequestCommit":{"type":"object"},"tendermint.abci.RequestEcho":{"type":"object","properties":{"message":{"type":"string"}}},"tendermint.abci.RequestExtendVote":{"type":"object","title":"Extends a vote with application-injected data","properties":{"hash":{"type":"string","format":"byte","title":"the hash of the block that this vote may be referring to"},"height":{"type":"string","format":"int64","title":"the height of the extended vote"},"misbehavior":{"type":"array","items":{"type":"object","$ref":"#/definitions/tendermint.abci.Misbehavior"}},"next_validators_hash":{"type":"string","format":"byte"},"proposed_last_commit":{"$ref":"#/definitions/tendermint.abci.CommitInfo"},"proposer_address":{"description":"address of the public key of the original proposer of the block.","type":"string","format":"byte"},"time":{"type":"string","format":"date-time","title":"info of the block that this vote may be referring to"},"txs":{"type":"array","items":{"type":"string","format":"byte"}}}},"tendermint.abci.RequestFinalizeBlock":{"type":"object","properties":{"decided_last_commit":{"$ref":"#/definitions/tendermint.abci.CommitInfo"},"hash":{"description":"hash is the merkle root hash of the fields of the decided block.","type":"string","format":"byte"},"height":{"type":"string","format":"int64"},"misbehavior":{"type":"array","items":{"type":"object","$ref":"#/definitions/tendermint.abci.Misbehavior"}},"next_validators_hash":{"type":"string","format":"byte"},"proposer_address":{"description":"proposer_address is the address of the public key of the original proposer of the block.","type":"string","format":"byte"},"time":{"type":"string","format":"date-time"},"txs":{"type":"array","items":{"type":"string","format":"byte"}}}},"tendermint.abci.RequestFlush":{"type":"object"},"tendermint.abci.RequestInfo":{"type":"object","properties":{"abci_version":{"type":"string"},"block_version":{"type":"string","format":"uint64"},"p2p_version":{"type":"string","format":"uint64"},"version":{"type":"string"}}},"tendermint.abci.RequestInitChain":{"type":"object","properties":{"app_state_bytes":{"type":"string","format":"byte"},"chain_id":{"type":"string"},"consensus_params":{"$ref":"#/definitions/tendermint.types.ConsensusParams"},"initial_height":{"type":"string","format":"int64"},"time":{"type":"string","format":"date-time"},"validators":{"type":"array","items":{"type":"object","$ref":"#/definitions/tendermint.abci.ValidatorUpdate"}}}},"tendermint.abci.RequestListSnapshots":{"type":"object","title":"lists available snapshots"},"tendermint.abci.RequestLoadSnapshotChunk":{"type":"object","title":"loads a snapshot chunk","properties":{"chunk":{"type":"integer","format":"int64"},"format":{"type":"integer","format":"int64"},"height":{"type":"string","format":"uint64"}}},"tendermint.abci.RequestOfferSnapshot":{"type":"object","title":"offers a snapshot to the application","properties":{"app_hash":{"type":"string","format":"byte","title":"light client-verified app hash for snapshot height"},"snapshot":{"title":"snapshot offered by peers","$ref":"#/definitions/tendermint.abci.Snapshot"}}},"tendermint.abci.RequestPrepareProposal":{"type":"object","properties":{"height":{"type":"string","format":"int64"},"local_last_commit":{"$ref":"#/definitions/tendermint.abci.ExtendedCommitInfo"},"max_tx_bytes":{"description":"the modified transactions cannot exceed this size.","type":"string","format":"int64"},"misbehavior":{"type":"array","items":{"type":"object","$ref":"#/definitions/tendermint.abci.Misbehavior"}},"next_validators_hash":{"type":"string","format":"byte"},"proposer_address":{"description":"address of the public key of the validator proposing the block.","type":"string","format":"byte"},"time":{"type":"string","format":"date-time"},"txs":{"description":"txs is an array of transactions that will be included in a block,\nsent to the app for possible modifications.","type":"array","items":{"type":"string","format":"byte"}}}},"tendermint.abci.RequestProcessProposal":{"type":"object","properties":{"hash":{"description":"hash is the merkle root hash of the fields of the proposed block.","type":"string","format":"byte"},"height":{"type":"string","format":"int64"},"misbehavior":{"type":"array","items":{"type":"object","$ref":"#/definitions/tendermint.abci.Misbehavior"}},"next_validators_hash":{"type":"string","format":"byte"},"proposed_last_commit":{"$ref":"#/definitions/tendermint.abci.CommitInfo"},"proposer_address":{"description":"address of the public key of the original proposer of the block.","type":"string","format":"byte"},"time":{"type":"string","format":"date-time"},"txs":{"type":"array","items":{"type":"string","format":"byte"}}}},"tendermint.abci.RequestQuery":{"type":"object","properties":{"data":{"type":"string","format":"byte"},"height":{"type":"string","format":"int64"},"path":{"type":"string"},"prove":{"type":"boolean"}}},"tendermint.abci.RequestVerifyVoteExtension":{"type":"object","title":"Verify the vote extension","properties":{"hash":{"type":"string","format":"byte","title":"the hash of the block that this received vote corresponds to"},"height":{"type":"string","format":"int64"},"validator_address":{"type":"string","format":"byte","title":"the validator that signed the vote extension"},"vote_extension":{"type":"string","format":"byte"}}},"tendermint.abci.ResponseApplySnapshotChunk":{"type":"object","properties":{"refetch_chunks":{"type":"array","title":"Chunks to refetch and reapply","items":{"type":"integer","format":"int64"}},"reject_senders":{"type":"array","title":"Chunk senders to reject and ban","items":{"type":"string"}},"result":{"$ref":"#/definitions/tendermint.abci.ResponseApplySnapshotChunk.Result"}}},"tendermint.abci.ResponseApplySnapshotChunk.Result":{"type":"string","title":"- UNKNOWN: Unknown result, abort all snapshot restoration\n - ACCEPT: Chunk successfully accepted\n - ABORT: Abort all snapshot restoration\n - RETRY: Retry chunk (combine with refetch and reject)\n - RETRY_SNAPSHOT: Retry snapshot (combine with refetch and reject)\n - REJECT_SNAPSHOT: Reject this snapshot, try others","default":"UNKNOWN","enum":["UNKNOWN","ACCEPT","ABORT","RETRY","RETRY_SNAPSHOT","REJECT_SNAPSHOT"]},"tendermint.abci.ResponseCheckTx":{"type":"object","properties":{"code":{"type":"integer","format":"int64"},"codespace":{"type":"string"},"data":{"type":"string","format":"byte"},"events":{"type":"array","items":{"type":"object","$ref":"#/definitions/tendermint.abci.Event"}},"gas_used":{"type":"string","format":"int64"},"gas_wanted":{"type":"string","format":"int64"},"info":{"type":"string","title":"nondeterministic"},"log":{"type":"string","title":"nondeterministic"}}},"tendermint.abci.ResponseCommit":{"type":"object","properties":{"retain_height":{"type":"string","format":"int64"}}},"tendermint.abci.ResponseEcho":{"type":"object","properties":{"message":{"type":"string"}}},"tendermint.abci.ResponseExtendVote":{"type":"object","properties":{"vote_extension":{"type":"string","format":"byte"}}},"tendermint.abci.ResponseFinalizeBlock":{"type":"object","properties":{"app_hash":{"description":"app_hash is the hash of the applications' state which is used to confirm that execution of the transactions was\ndeterministic. It is up to the application to decide which algorithm to use.","type":"string","format":"byte"},"consensus_param_updates":{"description":"updates to the consensus params, if any.","$ref":"#/definitions/tendermint.types.ConsensusParams"},"events":{"type":"array","title":"set of block events emmitted as part of executing the block","items":{"type":"object","$ref":"#/definitions/tendermint.abci.Event"}},"tx_results":{"type":"array","title":"the result of executing each transaction including the events\nthe particular transction emitted. This should match the order\nof the transactions delivered in the block itself","items":{"type":"object","$ref":"#/definitions/tendermint.abci.ExecTxResult"}},"validator_updates":{"description":"a list of updates to the validator set. These will reflect the validator set at current height + 2.","type":"array","items":{"type":"object","$ref":"#/definitions/tendermint.abci.ValidatorUpdate"}}}},"tendermint.abci.ResponseFlush":{"type":"object"},"tendermint.abci.ResponseInfo":{"type":"object","properties":{"app_version":{"type":"string","format":"uint64"},"data":{"type":"string"},"last_block_app_hash":{"type":"string","format":"byte"},"last_block_height":{"type":"string","format":"int64"},"version":{"type":"string"}}},"tendermint.abci.ResponseInitChain":{"type":"object","properties":{"app_hash":{"type":"string","format":"byte"},"consensus_params":{"$ref":"#/definitions/tendermint.types.ConsensusParams"},"validators":{"type":"array","items":{"type":"object","$ref":"#/definitions/tendermint.abci.ValidatorUpdate"}}}},"tendermint.abci.ResponseListSnapshots":{"type":"object","properties":{"snapshots":{"type":"array","items":{"type":"object","$ref":"#/definitions/tendermint.abci.Snapshot"}}}},"tendermint.abci.ResponseLoadSnapshotChunk":{"type":"object","properties":{"chunk":{"type":"string","format":"byte"}}},"tendermint.abci.ResponseOfferSnapshot":{"type":"object","properties":{"result":{"$ref":"#/definitions/tendermint.abci.ResponseOfferSnapshot.Result"}}},"tendermint.abci.ResponseOfferSnapshot.Result":{"type":"string","title":"- UNKNOWN: Unknown result, abort all snapshot restoration\n - ACCEPT: Snapshot accepted, apply chunks\n - ABORT: Abort all snapshot restoration\n - REJECT: Reject this specific snapshot, try others\n - REJECT_FORMAT: Reject all snapshots of this format, try others\n - REJECT_SENDER: Reject all snapshots from the sender(s), try others","default":"UNKNOWN","enum":["UNKNOWN","ACCEPT","ABORT","REJECT","REJECT_FORMAT","REJECT_SENDER"]},"tendermint.abci.ResponsePrepareProposal":{"type":"object","properties":{"txs":{"type":"array","items":{"type":"string","format":"byte"}}}},"tendermint.abci.ResponseProcessProposal":{"type":"object","properties":{"status":{"$ref":"#/definitions/tendermint.abci.ResponseProcessProposal.ProposalStatus"}}},"tendermint.abci.ResponseProcessProposal.ProposalStatus":{"type":"string","default":"UNKNOWN","enum":["UNKNOWN","ACCEPT","REJECT"]},"tendermint.abci.ResponseQuery":{"type":"object","properties":{"code":{"type":"integer","format":"int64"},"codespace":{"type":"string"},"height":{"type":"string","format":"int64"},"index":{"type":"string","format":"int64"},"info":{"type":"string","title":"nondeterministic"},"key":{"type":"string","format":"byte"},"log":{"description":"bytes data = 2; // use \"value\" instead.\n\nnondeterministic","type":"string"},"proof_ops":{"$ref":"#/definitions/tendermint.crypto.ProofOps"},"value":{"type":"string","format":"byte"}}},"tendermint.abci.ResponseVerifyVoteExtension":{"type":"object","properties":{"status":{"$ref":"#/definitions/tendermint.abci.ResponseVerifyVoteExtension.VerifyStatus"}}},"tendermint.abci.ResponseVerifyVoteExtension.VerifyStatus":{"description":" - REJECT: Rejecting the vote extension will reject the entire precommit by the sender.\nIncorrectly implementing this thus has liveness implications as it may affect\nCometBFT's ability to receive 2/3+ valid votes to finalize the block.\nHonest nodes should never be rejected.","type":"string","default":"UNKNOWN","enum":["UNKNOWN","ACCEPT","REJECT"]},"tendermint.abci.Snapshot":{"type":"object","properties":{"chunks":{"type":"integer","format":"int64","title":"Number of chunks in the snapshot"},"format":{"type":"integer","format":"int64","title":"The application-specific snapshot format"},"hash":{"type":"string","format":"byte","title":"Arbitrary snapshot hash, equal only if identical"},"height":{"type":"string","format":"uint64","title":"The height at which the snapshot was taken"},"metadata":{"type":"string","format":"byte","title":"Arbitrary application metadata"}}},"tendermint.abci.Validator":{"type":"object","properties":{"address":{"type":"string","format":"byte","title":"The first 20 bytes of SHA256(public key)"},"power":{"description":"The voting power","type":"string","format":"int64","title":"PubKey pub_key = 2 [(gogoproto.nullable)=false];"}}},"tendermint.abci.ValidatorUpdate":{"type":"object","properties":{"power":{"type":"string","format":"int64"},"pub_key":{"$ref":"#/definitions/tendermint.crypto.PublicKey"}}},"tendermint.abci.VoteInfo":{"type":"object","properties":{"block_id_flag":{"$ref":"#/definitions/tendermint.types.BlockIDFlag"},"validator":{"$ref":"#/definitions/tendermint.abci.Validator"}}},"tendermint.crypto.ProofOp":{"type":"object","title":"ProofOp defines an operation used for calculating Merkle root\nThe data could be arbitrary format, providing nessecary data\nfor example neighbouring node hash","properties":{"data":{"type":"string","format":"byte"},"key":{"type":"string","format":"byte"},"type":{"type":"string"}}},"tendermint.crypto.ProofOps":{"type":"object","title":"ProofOps is Merkle proof defined by the list of ProofOps","properties":{"ops":{"type":"array","items":{"type":"object","$ref":"#/definitions/tendermint.crypto.ProofOp"}}}},"tendermint.crypto.PublicKey":{"type":"object","title":"PublicKey defines the keys available for use with Validators","properties":{"ed25519":{"type":"string","format":"byte"},"secp256k1":{"type":"string","format":"byte"}}},"tendermint.p2p.DefaultNodeInfo":{"type":"object","properties":{"channels":{"type":"string","format":"byte"},"default_node_id":{"type":"string"},"listen_addr":{"type":"string"},"moniker":{"type":"string"},"network":{"type":"string"},"other":{"$ref":"#/definitions/tendermint.p2p.DefaultNodeInfoOther"},"protocol_version":{"$ref":"#/definitions/tendermint.p2p.ProtocolVersion"},"version":{"type":"string"}}},"tendermint.p2p.DefaultNodeInfoOther":{"type":"object","properties":{"rpc_address":{"type":"string"},"tx_index":{"type":"string"}}},"tendermint.p2p.ProtocolVersion":{"type":"object","properties":{"app":{"type":"string","format":"uint64"},"block":{"type":"string","format":"uint64"},"p2p":{"type":"string","format":"uint64"}}},"tendermint.types.ABCIParams":{"description":"ABCIParams configure functionality specific to the Application Blockchain Interface.","type":"object","properties":{"vote_extensions_enable_height":{"description":"vote_extensions_enable_height configures the first height during which\nvote extensions will be enabled. During this specified height, and for all\nsubsequent heights, precommit messages that do not contain valid extension data\nwill be considered invalid. Prior to this height, vote extensions will not\nbe used or accepted by validators on the network.\n\nOnce enabled, vote extensions will be created by the application in ExtendVote,\npassed to the application for validation in VerifyVoteExtension and given\nto the application to use when proposing a block during PrepareProposal.","type":"string","format":"int64"}}},"tendermint.types.Block":{"type":"object","properties":{"data":{"$ref":"#/definitions/tendermint.types.Data"},"evidence":{"$ref":"#/definitions/tendermint.types.EvidenceList"},"header":{"$ref":"#/definitions/tendermint.types.Header"},"last_commit":{"$ref":"#/definitions/tendermint.types.Commit"}}},"tendermint.types.BlockID":{"type":"object","title":"BlockID","properties":{"hash":{"type":"string","format":"byte"},"part_set_header":{"$ref":"#/definitions/tendermint.types.PartSetHeader"}}},"tendermint.types.BlockIDFlag":{"description":"- BLOCK_ID_FLAG_UNKNOWN: indicates an error condition\n - BLOCK_ID_FLAG_ABSENT: the vote was not received\n - BLOCK_ID_FLAG_COMMIT: voted for the block that received the majority\n - BLOCK_ID_FLAG_NIL: voted for nil","type":"string","title":"BlockIdFlag indicates which BlockID the signature is for","default":"BLOCK_ID_FLAG_UNKNOWN","enum":["BLOCK_ID_FLAG_UNKNOWN","BLOCK_ID_FLAG_ABSENT","BLOCK_ID_FLAG_COMMIT","BLOCK_ID_FLAG_NIL"]},"tendermint.types.BlockParams":{"description":"BlockParams contains limits on the block size.","type":"object","properties":{"max_bytes":{"type":"string","format":"int64","title":"Max block size, in bytes.\nNote: must be greater than 0"},"max_gas":{"type":"string","format":"int64","title":"Max gas per block.\nNote: must be greater or equal to -1"}}},"tendermint.types.Commit":{"description":"Commit contains the evidence that a block was committed by a set of validators.","type":"object","properties":{"block_id":{"$ref":"#/definitions/tendermint.types.BlockID"},"height":{"type":"string","format":"int64"},"round":{"type":"integer","format":"int32"},"signatures":{"type":"array","items":{"type":"object","$ref":"#/definitions/tendermint.types.CommitSig"}}}},"tendermint.types.CommitSig":{"description":"CommitSig is a part of the Vote included in a Commit.","type":"object","properties":{"block_id_flag":{"$ref":"#/definitions/tendermint.types.BlockIDFlag"},"signature":{"type":"string","format":"byte"},"timestamp":{"type":"string","format":"date-time"},"validator_address":{"type":"string","format":"byte"}}},"tendermint.types.ConsensusParams":{"description":"ConsensusParams contains consensus critical parameters that determine the\nvalidity of blocks.","type":"object","properties":{"abci":{"$ref":"#/definitions/tendermint.types.ABCIParams"},"block":{"$ref":"#/definitions/tendermint.types.BlockParams"},"evidence":{"$ref":"#/definitions/tendermint.types.EvidenceParams"},"validator":{"$ref":"#/definitions/tendermint.types.ValidatorParams"},"version":{"$ref":"#/definitions/tendermint.types.VersionParams"}}},"tendermint.types.Data":{"type":"object","title":"Data contains the set of transactions included in the block","properties":{"txs":{"description":"Txs that will be applied by state @ block.Height+1.\nNOTE: not all txs here are valid. We're just agreeing on the order first.\nThis means that block.AppHash does not include these txs.","type":"array","items":{"type":"string","format":"byte"}}}},"tendermint.types.DuplicateVoteEvidence":{"description":"DuplicateVoteEvidence contains evidence of a validator signed two conflicting votes.","type":"object","properties":{"timestamp":{"type":"string","format":"date-time"},"total_voting_power":{"type":"string","format":"int64"},"validator_power":{"type":"string","format":"int64"},"vote_a":{"$ref":"#/definitions/tendermint.types.Vote"},"vote_b":{"$ref":"#/definitions/tendermint.types.Vote"}}},"tendermint.types.Evidence":{"type":"object","properties":{"duplicate_vote_evidence":{"$ref":"#/definitions/tendermint.types.DuplicateVoteEvidence"},"light_client_attack_evidence":{"$ref":"#/definitions/tendermint.types.LightClientAttackEvidence"}}},"tendermint.types.EvidenceList":{"type":"object","properties":{"evidence":{"type":"array","items":{"type":"object","$ref":"#/definitions/tendermint.types.Evidence"}}}},"tendermint.types.EvidenceParams":{"description":"EvidenceParams determine how we handle evidence of malfeasance.","type":"object","properties":{"max_age_duration":{"description":"Max age of evidence, in time.\n\nIt should correspond with an app's \"unbonding period\" or other similar\nmechanism for handling [Nothing-At-Stake\nattacks](https://github.com/ethereum/wiki/wiki/Proof-of-Stake-FAQ#what-is-the-nothing-at-stake-problem-and-how-can-it-be-fixed).","type":"string"},"max_age_num_blocks":{"description":"Max age of evidence, in blocks.\n\nThe basic formula for calculating this is: MaxAgeDuration / {average block\ntime}.","type":"string","format":"int64"},"max_bytes":{"type":"string","format":"int64","title":"This sets the maximum size of total evidence in bytes that can be committed in a single block.\nand should fall comfortably under the max block bytes.\nDefault is 1048576 or 1MB"}}},"tendermint.types.Header":{"description":"Header defines the structure of a block header.","type":"object","properties":{"app_hash":{"type":"string","format":"byte","title":"state after txs from the previous block"},"chain_id":{"type":"string"},"consensus_hash":{"type":"string","format":"byte","title":"consensus params for current block"},"data_hash":{"type":"string","format":"byte","title":"transactions"},"evidence_hash":{"description":"evidence included in the block","type":"string","format":"byte","title":"consensus info"},"height":{"type":"string","format":"int64"},"last_block_id":{"title":"prev block info","$ref":"#/definitions/tendermint.types.BlockID"},"last_commit_hash":{"description":"commit from validators from the last block","type":"string","format":"byte","title":"hashes of block data"},"last_results_hash":{"type":"string","format":"byte","title":"root hash of all results from the txs from the previous block"},"next_validators_hash":{"type":"string","format":"byte","title":"validators for the next block"},"proposer_address":{"type":"string","format":"byte","title":"original proposer of the block"},"time":{"type":"string","format":"date-time"},"validators_hash":{"description":"validators for the current block","type":"string","format":"byte","title":"hashes from the app output from the prev block"},"version":{"title":"basic block info","$ref":"#/definitions/tendermint.version.Consensus"}}},"tendermint.types.LightBlock":{"type":"object","properties":{"signed_header":{"$ref":"#/definitions/tendermint.types.SignedHeader"},"validator_set":{"$ref":"#/definitions/tendermint.types.ValidatorSet"}}},"tendermint.types.LightClientAttackEvidence":{"description":"LightClientAttackEvidence contains evidence of a set of validators attempting to mislead a light client.","type":"object","properties":{"byzantine_validators":{"type":"array","items":{"type":"object","$ref":"#/definitions/tendermint.types.Validator"}},"common_height":{"type":"string","format":"int64"},"conflicting_block":{"$ref":"#/definitions/tendermint.types.LightBlock"},"timestamp":{"type":"string","format":"date-time"},"total_voting_power":{"type":"string","format":"int64"}}},"tendermint.types.PartSetHeader":{"type":"object","title":"PartsetHeader","properties":{"hash":{"type":"string","format":"byte"},"total":{"type":"integer","format":"int64"}}},"tendermint.types.SignedHeader":{"type":"object","properties":{"commit":{"$ref":"#/definitions/tendermint.types.Commit"},"header":{"$ref":"#/definitions/tendermint.types.Header"}}},"tendermint.types.SignedMsgType":{"description":"SignedMsgType is a type of signed message in the consensus.\n\n - SIGNED_MSG_TYPE_PREVOTE: Votes\n - SIGNED_MSG_TYPE_PROPOSAL: Proposals","type":"string","default":"SIGNED_MSG_TYPE_UNKNOWN","enum":["SIGNED_MSG_TYPE_UNKNOWN","SIGNED_MSG_TYPE_PREVOTE","SIGNED_MSG_TYPE_PRECOMMIT","SIGNED_MSG_TYPE_PROPOSAL"]},"tendermint.types.Validator":{"type":"object","properties":{"address":{"type":"string","format":"byte"},"proposer_priority":{"type":"string","format":"int64"},"pub_key":{"$ref":"#/definitions/tendermint.crypto.PublicKey"},"voting_power":{"type":"string","format":"int64"}}},"tendermint.types.ValidatorParams":{"description":"ValidatorParams restrict the public key types validators can use.\nNOTE: uses ABCI pubkey naming, not Amino names.","type":"object","properties":{"pub_key_types":{"type":"array","items":{"type":"string"}}}},"tendermint.types.ValidatorSet":{"type":"object","properties":{"proposer":{"$ref":"#/definitions/tendermint.types.Validator"},"total_voting_power":{"type":"string","format":"int64"},"validators":{"type":"array","items":{"type":"object","$ref":"#/definitions/tendermint.types.Validator"}}}},"tendermint.types.VersionParams":{"description":"VersionParams contains the ABCI application version.","type":"object","properties":{"app":{"type":"string","format":"uint64"}}},"tendermint.types.Vote":{"description":"Vote represents a prevote or precommit vote from validators for\nconsensus.","type":"object","properties":{"block_id":{"description":"zero if vote is nil.","$ref":"#/definitions/tendermint.types.BlockID"},"extension":{"description":"Vote extension provided by the application. Only valid for precommit\nmessages.","type":"string","format":"byte"},"extension_signature":{"description":"Vote extension signature by the validator if they participated in\nconsensus for the associated block.\nOnly valid for precommit messages.","type":"string","format":"byte"},"height":{"type":"string","format":"int64"},"round":{"type":"integer","format":"int32"},"signature":{"description":"Vote signature by the validator if they participated in consensus for the\nassociated block.","type":"string","format":"byte"},"timestamp":{"type":"string","format":"date-time"},"type":{"$ref":"#/definitions/tendermint.types.SignedMsgType"},"validator_address":{"type":"string","format":"byte"},"validator_index":{"type":"integer","format":"int32"}}},"tendermint.version.Consensus":{"description":"Consensus captures the consensus rules for processing a block in the blockchain,\nincluding all blockchain data structures and the rules of the application's\nstate transition machine.","type":"object","properties":{"app":{"type":"string","format":"uint64"},"block":{"type":"string","format":"uint64"}}}},"tags":[{"name":"Query"},{"name":"Msg"},{"name":"Service"},{"name":"ReflectionService"},{"name":"ABCIListenerService"},{"name":"ABCI"}]} \ No newline at end of file +id: github.com/pokt-network/poktroll +consumes: + - application/json +produces: + - application/json +swagger: "2.0" +info: + description: Chain github.com/pokt-network/poktroll REST API + title: HTTP API Console + contact: + name: github.com/pokt-network/poktroll + version: version not set +paths: + /cosmos.auth.v1beta1.Msg/UpdateParams: + post: + description: 'Since: cosmos-sdk 0.47' + tags: + - Msg + summary: |- + UpdateParams defines a (governance) operation for updating the x/auth module + parameters. The authority defaults to the x/gov module account. + operationId: CircuitMsg_UpdateParams + parameters: + - description: |- + MsgUpdateParams is the Msg/UpdateParams request type. + + Since: cosmos-sdk 0.47 + name: body + in: body + required: true + schema: + $ref: '#/definitions/cosmos.auth.v1beta1.MsgUpdateParams' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.auth.v1beta1.MsgUpdateParamsResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos.authz.v1beta1.Msg/Exec: + post: + tags: + - Msg + summary: |- + Exec attempts to execute the provided messages using + authorizations granted to the grantee. Each message should have only + one signer corresponding to the granter of the authorization. + operationId: CircuitMsg_Exec + parameters: + - description: |- + MsgExec attempts to execute the provided messages using + authorizations granted to the grantee. Each message should have only + one signer corresponding to the granter of the authorization. + name: body + in: body + required: true + schema: + $ref: '#/definitions/cosmos.authz.v1beta1.MsgExec' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.authz.v1beta1.MsgExecResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos.authz.v1beta1.Msg/Grant: + post: + tags: + - Msg + summary: |- + Grant grants the provided authorization to the grantee on the granter's + account with the provided expiration time. If there is already a grant + for the given (granter, grantee, Authorization) triple, then the grant + will be overwritten. + operationId: CircuitMsg_Grant + parameters: + - description: |- + MsgGrant is a request type for Grant method. It declares authorization to the grantee + on behalf of the granter with the provided expiration time. + name: body + in: body + required: true + schema: + $ref: '#/definitions/cosmos.authz.v1beta1.MsgGrant' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.authz.v1beta1.MsgGrantResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos.authz.v1beta1.Msg/Revoke: + post: + tags: + - Msg + summary: |- + Revoke revokes any authorization corresponding to the provided method name on the + granter's account that has been granted to the grantee. + operationId: CircuitMsg_Revoke + parameters: + - description: |- + MsgRevoke revokes any authorization with the provided sdk.Msg type on the + granter's account with that has been granted to the grantee. + name: body + in: body + required: true + schema: + $ref: '#/definitions/cosmos.authz.v1beta1.MsgRevoke' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.authz.v1beta1.MsgRevokeResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos.autocli.v1.Query/AppOptions: + post: + tags: + - Query + summary: AppOptions returns the autocli options for all of the modules in an app. + operationId: CircuitQuery_AppOptions + parameters: + - description: AppOptionsRequest is the RemoteInfoService/AppOptions request type. + name: body + in: body + required: true + schema: + $ref: '#/definitions/cosmos.autocli.v1.AppOptionsRequest' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.autocli.v1.AppOptionsResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos.bank.v1beta1.Msg/MultiSend: + post: + tags: + - Msg + summary: MultiSend defines a method for sending coins from some accounts to other accounts. + operationId: CircuitMsg_MultiSend + parameters: + - description: MsgMultiSend represents an arbitrary multi-in, multi-out send message. + name: body + in: body + required: true + schema: + $ref: '#/definitions/cosmos.bank.v1beta1.MsgMultiSend' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.bank.v1beta1.MsgMultiSendResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos.bank.v1beta1.Msg/Send: + post: + tags: + - Msg + summary: Send defines a method for sending coins from one account to another account. + operationId: CircuitMsg_Send + parameters: + - description: MsgSend represents a message to send coins from one account to another. + name: body + in: body + required: true + schema: + $ref: '#/definitions/cosmos.bank.v1beta1.MsgSend' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.bank.v1beta1.MsgSendResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos.bank.v1beta1.Msg/SetSendEnabled: + post: + description: 'Since: cosmos-sdk 0.47' + tags: + - Msg + summary: |- + SetSendEnabled is a governance operation for setting the SendEnabled flag + on any number of Denoms. Only the entries to add or update should be + included. Entries that already exist in the store, but that aren't + included in this message, will be left unchanged. + operationId: CircuitMsg_SetSendEnabled + parameters: + - description: |- + MsgSetSendEnabled is the Msg/SetSendEnabled request type. + + Only entries to add/update/delete need to be included. + Existing SendEnabled entries that are not included in this + message are left unchanged. + + Since: cosmos-sdk 0.47 + name: body + in: body + required: true + schema: + $ref: '#/definitions/cosmos.bank.v1beta1.MsgSetSendEnabled' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.bank.v1beta1.MsgSetSendEnabledResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos.bank.v1beta1.Msg/UpdateParams: + post: + description: 'Since: cosmos-sdk 0.47' + tags: + - Msg + summary: |- + UpdateParams defines a governance operation for updating the x/bank module parameters. + The authority is defined in the keeper. + operationId: CircuitMsg_UpdateParamsMixin63 + parameters: + - description: |- + MsgUpdateParams is the Msg/UpdateParams request type. + + Since: cosmos-sdk 0.47 + name: body + in: body + required: true + schema: + $ref: '#/definitions/cosmos.bank.v1beta1.MsgUpdateParams' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.bank.v1beta1.MsgUpdateParamsResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos.circuit.v1.Msg/AuthorizeCircuitBreaker: + post: + tags: + - Msg + summary: |- + AuthorizeCircuitBreaker allows a super-admin to grant (or revoke) another + account's circuit breaker permissions. + operationId: CircuitMsg_AuthorizeCircuitBreaker + parameters: + - description: MsgAuthorizeCircuitBreaker defines the Msg/AuthorizeCircuitBreaker request type. + name: body + in: body + required: true + schema: + $ref: '#/definitions/cosmos.circuit.v1.MsgAuthorizeCircuitBreaker' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.circuit.v1.MsgAuthorizeCircuitBreakerResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos.circuit.v1.Msg/ResetCircuitBreaker: + post: + tags: + - Msg + summary: |- + ResetCircuitBreaker resumes processing of Msg's in the state machine that + have been been paused using TripCircuitBreaker. + operationId: CircuitMsg_ResetCircuitBreaker + parameters: + - description: MsgResetCircuitBreaker defines the Msg/ResetCircuitBreaker request type. + name: body + in: body + required: true + schema: + $ref: '#/definitions/cosmos.circuit.v1.MsgResetCircuitBreaker' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.circuit.v1.MsgResetCircuitBreakerResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos.circuit.v1.Msg/TripCircuitBreaker: + post: + tags: + - Msg + summary: TripCircuitBreaker pauses processing of Msg's in the state machine. + operationId: CircuitMsg_TripCircuitBreaker + parameters: + - description: MsgTripCircuitBreaker defines the Msg/TripCircuitBreaker request type. + name: body + in: body + required: true + schema: + $ref: '#/definitions/cosmos.circuit.v1.MsgTripCircuitBreaker' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.circuit.v1.MsgTripCircuitBreakerResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos.consensus.v1.Msg/UpdateParams: + post: + description: 'Since: cosmos-sdk 0.47' + tags: + - Msg + summary: |- + UpdateParams defines a governance operation for updating the x/consensus module parameters. + The authority is defined in the keeper. + operationId: CircuitMsg_UpdateParamsMixin76 + parameters: + - description: MsgUpdateParams is the Msg/UpdateParams request type. + name: body + in: body + required: true + schema: + $ref: '#/definitions/cosmos.consensus.v1.MsgUpdateParams' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.consensus.v1.MsgUpdateParamsResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos.crisis.v1beta1.Msg/UpdateParams: + post: + description: 'Since: cosmos-sdk 0.47' + tags: + - Msg + summary: |- + UpdateParams defines a governance operation for updating the x/crisis module + parameters. The authority is defined in the keeper. + operationId: CircuitMsg_UpdateParamsMixin78 + parameters: + - description: |- + MsgUpdateParams is the Msg/UpdateParams request type. + + Since: cosmos-sdk 0.47 + name: body + in: body + required: true + schema: + $ref: '#/definitions/cosmos.crisis.v1beta1.MsgUpdateParams' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.crisis.v1beta1.MsgUpdateParamsResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos.crisis.v1beta1.Msg/VerifyInvariant: + post: + tags: + - Msg + summary: VerifyInvariant defines a method to verify a particular invariant. + operationId: CircuitMsg_VerifyInvariant + parameters: + - description: MsgVerifyInvariant represents a message to verify a particular invariance. + name: body + in: body + required: true + schema: + $ref: '#/definitions/cosmos.crisis.v1beta1.MsgVerifyInvariant' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.crisis.v1beta1.MsgVerifyInvariantResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos.distribution.v1beta1.Msg/CommunityPoolSpend: + post: + description: 'Since: cosmos-sdk 0.47' + tags: + - Msg + summary: |- + CommunityPoolSpend defines a governance operation for sending tokens from + the community pool in the x/distribution module to another account, which + could be the governance module itself. The authority is defined in the + keeper. + operationId: CircuitMsg_CommunityPoolSpend + parameters: + - description: |- + MsgCommunityPoolSpend defines a message for sending tokens from the community + pool to another account. This message is typically executed via a governance + proposal with the governance module being the executing authority. + + Since: cosmos-sdk 0.47 + name: body + in: body + required: true + schema: + $ref: '#/definitions/cosmos.distribution.v1beta1.MsgCommunityPoolSpend' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.distribution.v1beta1.MsgCommunityPoolSpendResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos.distribution.v1beta1.Msg/DepositValidatorRewardsPool: + post: + description: 'Since: cosmos-sdk 0.50' + tags: + - Msg + summary: |- + DepositValidatorRewardsPool defines a method to provide additional rewards + to delegators to a specific validator. + operationId: CircuitMsg_DepositValidatorRewardsPool + parameters: + - description: |- + DepositValidatorRewardsPool defines the request structure to provide + additional rewards to delegators from a specific validator. + + Since: cosmos-sdk 0.50 + name: body + in: body + required: true + schema: + $ref: '#/definitions/cosmos.distribution.v1beta1.MsgDepositValidatorRewardsPool' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.distribution.v1beta1.MsgDepositValidatorRewardsPoolResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos.distribution.v1beta1.Msg/FundCommunityPool: + post: + tags: + - Msg + summary: |- + FundCommunityPool defines a method to allow an account to directly + fund the community pool. + operationId: CircuitMsg_FundCommunityPool + parameters: + - description: |- + MsgFundCommunityPool allows an account to directly + fund the community pool. + name: body + in: body + required: true + schema: + $ref: '#/definitions/cosmos.distribution.v1beta1.MsgFundCommunityPool' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.distribution.v1beta1.MsgFundCommunityPoolResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos.distribution.v1beta1.Msg/SetWithdrawAddress: + post: + tags: + - Msg + summary: |- + SetWithdrawAddress defines a method to change the withdraw address + for a delegator (or validator self-delegation). + operationId: CircuitMsg_SetWithdrawAddress + parameters: + - description: |- + MsgSetWithdrawAddress sets the withdraw address for + a delegator (or validator self-delegation). + name: body + in: body + required: true + schema: + $ref: '#/definitions/cosmos.distribution.v1beta1.MsgSetWithdrawAddress' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.distribution.v1beta1.MsgSetWithdrawAddressResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos.distribution.v1beta1.Msg/UpdateParams: + post: + description: 'Since: cosmos-sdk 0.47' + tags: + - Msg + summary: |- + UpdateParams defines a governance operation for updating the x/distribution + module parameters. The authority is defined in the keeper. + operationId: CircuitMsg_UpdateParamsMixin89 + parameters: + - description: |- + MsgUpdateParams is the Msg/UpdateParams request type. + + Since: cosmos-sdk 0.47 + name: body + in: body + required: true + schema: + $ref: '#/definitions/cosmos.distribution.v1beta1.MsgUpdateParams' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.distribution.v1beta1.MsgUpdateParamsResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos.distribution.v1beta1.Msg/WithdrawDelegatorReward: + post: + tags: + - Msg + summary: |- + WithdrawDelegatorReward defines a method to withdraw rewards of delegator + from a single validator. + operationId: CircuitMsg_WithdrawDelegatorReward + parameters: + - description: |- + MsgWithdrawDelegatorReward represents delegation withdrawal to a delegator + from a single validator. + name: body + in: body + required: true + schema: + $ref: '#/definitions/cosmos.distribution.v1beta1.MsgWithdrawDelegatorReward' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.distribution.v1beta1.MsgWithdrawDelegatorRewardResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos.distribution.v1beta1.Msg/WithdrawValidatorCommission: + post: + tags: + - Msg + summary: |- + WithdrawValidatorCommission defines a method to withdraw the + full commission to the validator address. + operationId: CircuitMsg_WithdrawValidatorCommission + parameters: + - description: |- + MsgWithdrawValidatorCommission withdraws the full commission to the validator + address. + name: body + in: body + required: true + schema: + $ref: '#/definitions/cosmos.distribution.v1beta1.MsgWithdrawValidatorCommission' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.distribution.v1beta1.MsgWithdrawValidatorCommissionResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos.evidence.v1beta1.Msg/SubmitEvidence: + post: + tags: + - Msg + summary: |- + SubmitEvidence submits an arbitrary Evidence of misbehavior such as equivocation or + counterfactual signing. + operationId: CircuitMsg_SubmitEvidence + parameters: + - description: |- + MsgSubmitEvidence represents a message that supports submitting arbitrary + Evidence of misbehavior such as equivocation or counterfactual signing. + name: body + in: body + required: true + schema: + $ref: '#/definitions/cosmos.evidence.v1beta1.MsgSubmitEvidence' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.evidence.v1beta1.MsgSubmitEvidenceResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos.feegrant.v1beta1.Msg/GrantAllowance: + post: + tags: + - Msg + summary: |- + GrantAllowance grants fee allowance to the grantee on the granter's + account with the provided expiration time. + operationId: CircuitMsg_GrantAllowance + parameters: + - description: |- + MsgGrantAllowance adds permission for Grantee to spend up to Allowance + of fees from the account of Granter. + name: body + in: body + required: true + schema: + $ref: '#/definitions/cosmos.feegrant.v1beta1.MsgGrantAllowance' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.feegrant.v1beta1.MsgGrantAllowanceResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos.feegrant.v1beta1.Msg/PruneAllowances: + post: + description: Since cosmos-sdk 0.50 + tags: + - Msg + summary: PruneAllowances prunes expired fee allowances, currently up to 75 at a time. + operationId: CircuitMsg_PruneAllowances + parameters: + - description: |- + MsgPruneAllowances prunes expired fee allowances. + + Since cosmos-sdk 0.50 + name: body + in: body + required: true + schema: + $ref: '#/definitions/cosmos.feegrant.v1beta1.MsgPruneAllowances' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.feegrant.v1beta1.MsgPruneAllowancesResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos.feegrant.v1beta1.Msg/RevokeAllowance: + post: + tags: + - Msg + summary: |- + RevokeAllowance revokes any fee allowance of granter's account that + has been granted to the grantee. + operationId: CircuitMsg_RevokeAllowance + parameters: + - description: MsgRevokeAllowance removes any existing Allowance from Granter to Grantee. + name: body + in: body + required: true + schema: + $ref: '#/definitions/cosmos.feegrant.v1beta1.MsgRevokeAllowance' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.feegrant.v1beta1.MsgRevokeAllowanceResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos.gov.v1.Msg/CancelProposal: + post: + description: 'Since: cosmos-sdk 0.50' + tags: + - Msg + summary: CancelProposal defines a method to cancel governance proposal + operationId: CircuitMsg_CancelProposal + parameters: + - description: |- + MsgCancelProposal is the Msg/CancelProposal request type. + + Since: cosmos-sdk 0.50 + name: body + in: body + required: true + schema: + $ref: '#/definitions/cosmos.gov.v1.MsgCancelProposal' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.gov.v1.MsgCancelProposalResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos.gov.v1.Msg/Deposit: + post: + tags: + - Msg + summary: Deposit defines a method to add deposit on a specific proposal. + operationId: CircuitMsg_Deposit + parameters: + - description: MsgDeposit defines a message to submit a deposit to an existing proposal. + name: body + in: body + required: true + schema: + $ref: '#/definitions/cosmos.gov.v1.MsgDeposit' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.gov.v1.MsgDepositResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos.gov.v1.Msg/ExecLegacyContent: + post: + tags: + - Msg + summary: |- + ExecLegacyContent defines a Msg to be in included in a MsgSubmitProposal + to execute a legacy content-based proposal. + operationId: CircuitMsg_ExecLegacyContent + parameters: + - description: |- + MsgExecLegacyContent is used to wrap the legacy content field into a message. + This ensures backwards compatibility with v1beta1.MsgSubmitProposal. + name: body + in: body + required: true + schema: + $ref: '#/definitions/cosmos.gov.v1.MsgExecLegacyContent' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.gov.v1.MsgExecLegacyContentResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos.gov.v1.Msg/SubmitProposal: + post: + tags: + - Msg + summary: SubmitProposal defines a method to create new proposal given the messages. + operationId: CircuitMsg_SubmitProposal + parameters: + - description: |- + MsgSubmitProposal defines an sdk.Msg type that supports submitting arbitrary + proposal Content. + name: body + in: body + required: true + schema: + $ref: '#/definitions/cosmos.gov.v1.MsgSubmitProposal' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.gov.v1.MsgSubmitProposalResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos.gov.v1.Msg/UpdateParams: + post: + description: 'Since: cosmos-sdk 0.47' + tags: + - Msg + summary: |- + UpdateParams defines a governance operation for updating the x/gov module + parameters. The authority is defined in the keeper. + operationId: CircuitMsg_UpdateParamsMixin102 + parameters: + - description: |- + MsgUpdateParams is the Msg/UpdateParams request type. + + Since: cosmos-sdk 0.47 + name: body + in: body + required: true + schema: + $ref: '#/definitions/cosmos.gov.v1.MsgUpdateParams' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.gov.v1.MsgUpdateParamsResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos.gov.v1.Msg/Vote: + post: + tags: + - Msg + summary: Vote defines a method to add a vote on a specific proposal. + operationId: CircuitMsg_Vote + parameters: + - description: MsgVote defines a message to cast a vote. + name: body + in: body + required: true + schema: + $ref: '#/definitions/cosmos.gov.v1.MsgVote' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.gov.v1.MsgVoteResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos.gov.v1.Msg/VoteWeighted: + post: + tags: + - Msg + summary: VoteWeighted defines a method to add a weighted vote on a specific proposal. + operationId: CircuitMsg_VoteWeighted + parameters: + - description: MsgVoteWeighted defines a message to cast a vote. + name: body + in: body + required: true + schema: + $ref: '#/definitions/cosmos.gov.v1.MsgVoteWeighted' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.gov.v1.MsgVoteWeightedResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos.gov.v1beta1.Msg/Deposit: + post: + tags: + - Msg + summary: Deposit defines a method to add deposit on a specific proposal. + operationId: CircuitMsg_DepositMixin106 + parameters: + - description: MsgDeposit defines a message to submit a deposit to an existing proposal. + name: body + in: body + required: true + schema: + $ref: '#/definitions/cosmos.gov.v1beta1.MsgDeposit' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.gov.v1beta1.MsgDepositResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos.gov.v1beta1.Msg/SubmitProposal: + post: + tags: + - Msg + summary: SubmitProposal defines a method to create new proposal given a content. + operationId: CircuitMsg_SubmitProposalMixin106 + parameters: + - description: |- + MsgSubmitProposal defines an sdk.Msg type that supports submitting arbitrary + proposal Content. + name: body + in: body + required: true + schema: + $ref: '#/definitions/cosmos.gov.v1beta1.MsgSubmitProposal' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.gov.v1beta1.MsgSubmitProposalResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos.gov.v1beta1.Msg/Vote: + post: + tags: + - Msg + summary: Vote defines a method to add a vote on a specific proposal. + operationId: CircuitMsg_VoteMixin106 + parameters: + - description: MsgVote defines a message to cast a vote. + name: body + in: body + required: true + schema: + $ref: '#/definitions/cosmos.gov.v1beta1.MsgVote' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.gov.v1beta1.MsgVoteResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos.gov.v1beta1.Msg/VoteWeighted: + post: + description: 'Since: cosmos-sdk 0.43' + tags: + - Msg + summary: VoteWeighted defines a method to add a weighted vote on a specific proposal. + operationId: CircuitMsg_VoteWeightedMixin106 + parameters: + - description: |- + MsgVoteWeighted defines a message to cast a vote. + + Since: cosmos-sdk 0.43 + name: body + in: body + required: true + schema: + $ref: '#/definitions/cosmos.gov.v1beta1.MsgVoteWeighted' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.gov.v1beta1.MsgVoteWeightedResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos.group.v1.Msg/CreateGroup: + post: + tags: + - Msg + summary: CreateGroup creates a new group with an admin account address, a list of members and some optional metadata. + operationId: CircuitMsg_CreateGroup + parameters: + - description: MsgCreateGroup is the Msg/CreateGroup request type. + name: body + in: body + required: true + schema: + $ref: '#/definitions/cosmos.group.v1.MsgCreateGroup' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.group.v1.MsgCreateGroupResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos.group.v1.Msg/CreateGroupPolicy: + post: + tags: + - Msg + summary: CreateGroupPolicy creates a new group policy using given DecisionPolicy. + operationId: CircuitMsg_CreateGroupPolicy + parameters: + - description: MsgCreateGroupPolicy is the Msg/CreateGroupPolicy request type. + name: body + in: body + required: true + schema: + $ref: '#/definitions/cosmos.group.v1.MsgCreateGroupPolicy' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.group.v1.MsgCreateGroupPolicyResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos.group.v1.Msg/CreateGroupWithPolicy: + post: + tags: + - Msg + summary: CreateGroupWithPolicy creates a new group with policy. + operationId: CircuitMsg_CreateGroupWithPolicy + parameters: + - description: MsgCreateGroupWithPolicy is the Msg/CreateGroupWithPolicy request type. + name: body + in: body + required: true + schema: + $ref: '#/definitions/cosmos.group.v1.MsgCreateGroupWithPolicy' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.group.v1.MsgCreateGroupWithPolicyResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos.group.v1.Msg/Exec: + post: + tags: + - Msg + summary: Exec executes a proposal. + operationId: CircuitMsg_ExecMixin110 + parameters: + - description: MsgExec is the Msg/Exec request type. + name: body + in: body + required: true + schema: + $ref: '#/definitions/cosmos.group.v1.MsgExec' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.group.v1.MsgExecResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos.group.v1.Msg/LeaveGroup: + post: + tags: + - Msg + summary: LeaveGroup allows a group member to leave the group. + operationId: CircuitMsg_LeaveGroup + parameters: + - description: MsgLeaveGroup is the Msg/LeaveGroup request type. + name: body + in: body + required: true + schema: + $ref: '#/definitions/cosmos.group.v1.MsgLeaveGroup' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.group.v1.MsgLeaveGroupResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos.group.v1.Msg/SubmitProposal: + post: + tags: + - Msg + summary: SubmitProposal submits a new proposal. + operationId: CircuitMsg_SubmitProposalMixin110 + parameters: + - description: MsgSubmitProposal is the Msg/SubmitProposal request type. + name: body + in: body + required: true + schema: + $ref: '#/definitions/cosmos.group.v1.MsgSubmitProposal' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.group.v1.MsgSubmitProposalResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos.group.v1.Msg/UpdateGroupAdmin: + post: + tags: + - Msg + summary: UpdateGroupAdmin updates the group admin with given group id and previous admin address. + operationId: CircuitMsg_UpdateGroupAdmin + parameters: + - description: MsgUpdateGroupAdmin is the Msg/UpdateGroupAdmin request type. + name: body + in: body + required: true + schema: + $ref: '#/definitions/cosmos.group.v1.MsgUpdateGroupAdmin' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.group.v1.MsgUpdateGroupAdminResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos.group.v1.Msg/UpdateGroupMembers: + post: + tags: + - Msg + summary: UpdateGroupMembers updates the group members with given group id and admin address. + operationId: CircuitMsg_UpdateGroupMembers + parameters: + - description: MsgUpdateGroupMembers is the Msg/UpdateGroupMembers request type. + name: body + in: body + required: true + schema: + $ref: '#/definitions/cosmos.group.v1.MsgUpdateGroupMembers' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.group.v1.MsgUpdateGroupMembersResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos.group.v1.Msg/UpdateGroupMetadata: + post: + tags: + - Msg + summary: UpdateGroupMetadata updates the group metadata with given group id and admin address. + operationId: CircuitMsg_UpdateGroupMetadata + parameters: + - description: MsgUpdateGroupMetadata is the Msg/UpdateGroupMetadata request type. + name: body + in: body + required: true + schema: + $ref: '#/definitions/cosmos.group.v1.MsgUpdateGroupMetadata' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.group.v1.MsgUpdateGroupMetadataResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos.group.v1.Msg/UpdateGroupPolicyAdmin: + post: + tags: + - Msg + summary: UpdateGroupPolicyAdmin updates a group policy admin. + operationId: CircuitMsg_UpdateGroupPolicyAdmin + parameters: + - description: MsgUpdateGroupPolicyAdmin is the Msg/UpdateGroupPolicyAdmin request type. + name: body + in: body + required: true + schema: + $ref: '#/definitions/cosmos.group.v1.MsgUpdateGroupPolicyAdmin' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.group.v1.MsgUpdateGroupPolicyAdminResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos.group.v1.Msg/UpdateGroupPolicyDecisionPolicy: + post: + tags: + - Msg + summary: UpdateGroupPolicyDecisionPolicy allows a group policy's decision policy to be updated. + operationId: CircuitMsg_UpdateGroupPolicyDecisionPolicy + parameters: + - description: MsgUpdateGroupPolicyDecisionPolicy is the Msg/UpdateGroupPolicyDecisionPolicy request type. + name: body + in: body + required: true + schema: + $ref: '#/definitions/cosmos.group.v1.MsgUpdateGroupPolicyDecisionPolicy' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.group.v1.MsgUpdateGroupPolicyDecisionPolicyResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos.group.v1.Msg/UpdateGroupPolicyMetadata: + post: + tags: + - Msg + summary: UpdateGroupPolicyMetadata updates a group policy metadata. + operationId: CircuitMsg_UpdateGroupPolicyMetadata + parameters: + - description: MsgUpdateGroupPolicyMetadata is the Msg/UpdateGroupPolicyMetadata request type. + name: body + in: body + required: true + schema: + $ref: '#/definitions/cosmos.group.v1.MsgUpdateGroupPolicyMetadata' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.group.v1.MsgUpdateGroupPolicyMetadataResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos.group.v1.Msg/Vote: + post: + tags: + - Msg + summary: Vote allows a voter to vote on a proposal. + operationId: CircuitMsg_VoteMixin110 + parameters: + - description: MsgVote is the Msg/Vote request type. + name: body + in: body + required: true + schema: + $ref: '#/definitions/cosmos.group.v1.MsgVote' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.group.v1.MsgVoteResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos.group.v1.Msg/WithdrawProposal: + post: + tags: + - Msg + summary: WithdrawProposal withdraws a proposal. + operationId: CircuitMsg_WithdrawProposal + parameters: + - description: MsgWithdrawProposal is the Msg/WithdrawProposal request type. + name: body + in: body + required: true + schema: + $ref: '#/definitions/cosmos.group.v1.MsgWithdrawProposal' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.group.v1.MsgWithdrawProposalResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos.mint.v1beta1.Msg/UpdateParams: + post: + description: 'Since: cosmos-sdk 0.47' + tags: + - Msg + summary: |- + UpdateParams defines a governance operation for updating the x/mint module + parameters. The authority is defaults to the x/gov module account. + operationId: CircuitMsg_UpdateParamsMixin115 + parameters: + - description: |- + MsgUpdateParams is the Msg/UpdateParams request type. + + Since: cosmos-sdk 0.47 + name: body + in: body + required: true + schema: + $ref: '#/definitions/cosmos.mint.v1beta1.MsgUpdateParams' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.mint.v1beta1.MsgUpdateParamsResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos.nft.v1beta1.Msg/Send: + post: + tags: + - Msg + summary: Send defines a method to send a nft from one account to another account. + operationId: CircuitMsg_SendMixin121 + parameters: + - description: MsgSend represents a message to send a nft from one account to another account. + name: body + in: body + required: true + schema: + $ref: '#/definitions/cosmos.nft.v1beta1.MsgSend' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.nft.v1beta1.MsgSendResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos.slashing.v1beta1.Msg/Unjail: + post: + tags: + - Msg + summary: |- + Unjail defines a method for unjailing a jailed validator, thus returning + them into the bonded validator set, so they can begin receiving provisions + and rewards again. + operationId: CircuitMsg_Unjail + parameters: + - name: body + in: body + required: true + schema: + $ref: '#/definitions/cosmos.slashing.v1beta1.MsgUnjail' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.slashing.v1beta1.MsgUnjailResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos.slashing.v1beta1.Msg/UpdateParams: + post: + description: 'Since: cosmos-sdk 0.47' + tags: + - Msg + summary: |- + UpdateParams defines a governance operation for updating the x/slashing module + parameters. The authority defaults to the x/gov module account. + operationId: CircuitMsg_UpdateParamsMixin128 + parameters: + - description: |- + MsgUpdateParams is the Msg/UpdateParams request type. + + Since: cosmos-sdk 0.47 + name: body + in: body + required: true + schema: + $ref: '#/definitions/cosmos.slashing.v1beta1.MsgUpdateParams' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.slashing.v1beta1.MsgUpdateParamsResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos.staking.v1beta1.Msg/BeginRedelegate: + post: + tags: + - Msg + summary: |- + BeginRedelegate defines a method for performing a redelegation + of coins from a delegator and source validator to a destination validator. + operationId: CircuitMsg_BeginRedelegate + parameters: + - description: |- + MsgBeginRedelegate defines a SDK message for performing a redelegation + of coins from a delegator and source validator to a destination validator. + name: body + in: body + required: true + schema: + $ref: '#/definitions/cosmos.staking.v1beta1.MsgBeginRedelegate' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.staking.v1beta1.MsgBeginRedelegateResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos.staking.v1beta1.Msg/CancelUnbondingDelegation: + post: + description: 'Since: cosmos-sdk 0.46' + tags: + - Msg + summary: |- + CancelUnbondingDelegation defines a method for performing canceling the unbonding delegation + and delegate back to previous validator. + operationId: CircuitMsg_CancelUnbondingDelegation + parameters: + - description: 'Since: cosmos-sdk 0.46' + name: body + in: body + required: true + schema: + $ref: '#/definitions/cosmos.staking.v1beta1.MsgCancelUnbondingDelegation' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.staking.v1beta1.MsgCancelUnbondingDelegationResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos.staking.v1beta1.Msg/CreateValidator: + post: + tags: + - Msg + summary: CreateValidator defines a method for creating a new validator. + operationId: CircuitMsg_CreateValidator + parameters: + - description: MsgCreateValidator defines a SDK message for creating a new validator. + name: body + in: body + required: true + schema: + $ref: '#/definitions/cosmos.staking.v1beta1.MsgCreateValidator' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.staking.v1beta1.MsgCreateValidatorResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos.staking.v1beta1.Msg/Delegate: + post: + tags: + - Msg + summary: |- + Delegate defines a method for performing a delegation of coins + from a delegator to a validator. + operationId: CircuitMsg_Delegate + parameters: + - description: |- + MsgDelegate defines a SDK message for performing a delegation of coins + from a delegator to a validator. + name: body + in: body + required: true + schema: + $ref: '#/definitions/cosmos.staking.v1beta1.MsgDelegate' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.staking.v1beta1.MsgDelegateResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos.staking.v1beta1.Msg/EditValidator: + post: + tags: + - Msg + summary: EditValidator defines a method for editing an existing validator. + operationId: CircuitMsg_EditValidator + parameters: + - description: MsgEditValidator defines a SDK message for editing an existing validator. + name: body + in: body + required: true + schema: + $ref: '#/definitions/cosmos.staking.v1beta1.MsgEditValidator' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.staking.v1beta1.MsgEditValidatorResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos.staking.v1beta1.Msg/Undelegate: + post: + tags: + - Msg + summary: |- + Undelegate defines a method for performing an undelegation from a + delegate and a validator. + operationId: CircuitMsg_Undelegate + parameters: + - description: |- + MsgUndelegate defines a SDK message for performing an undelegation from a + delegate and a validator. + name: body + in: body + required: true + schema: + $ref: '#/definitions/cosmos.staking.v1beta1.MsgUndelegate' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.staking.v1beta1.MsgUndelegateResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos.staking.v1beta1.Msg/UpdateParams: + post: + tags: + - Msg + summary: |- + UpdateParams defines an operation for updating the x/staking module + parameters. + Since: cosmos-sdk 0.47 + operationId: CircuitMsg_UpdateParamsMixin133 + parameters: + - description: |- + MsgUpdateParams is the Msg/UpdateParams request type. + + Since: cosmos-sdk 0.47 + name: body + in: body + required: true + schema: + $ref: '#/definitions/cosmos.staking.v1beta1.MsgUpdateParams' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.staking.v1beta1.MsgUpdateParamsResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos.store.streaming.abci.ABCIListenerService/ListenCommit: + post: + tags: + - ABCIListenerService + summary: ListenCommit is the corresponding endpoint for ABCIListener.ListenCommit + operationId: CircuitABCIListenerService_ListenCommit + parameters: + - name: body + in: body + required: true + schema: + $ref: '#/definitions/cosmos.store.streaming.abci.ListenCommitRequest' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.store.streaming.abci.ListenCommitResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos.store.streaming.abci.ABCIListenerService/ListenFinalizeBlock: + post: + tags: + - ABCIListenerService + summary: ListenFinalizeBlock is the corresponding endpoint for ABCIListener.ListenEndBlock + operationId: CircuitABCIListenerService_ListenFinalizeBlock + parameters: + - name: body + in: body + required: true + schema: + $ref: '#/definitions/cosmos.store.streaming.abci.ListenFinalizeBlockRequest' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.store.streaming.abci.ListenFinalizeBlockResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos.upgrade.v1beta1.Msg/CancelUpgrade: + post: + description: 'Since: cosmos-sdk 0.46' + tags: + - Msg + summary: |- + CancelUpgrade is a governance operation for cancelling a previously + approved software upgrade. + operationId: CircuitMsg_CancelUpgrade + parameters: + - description: |- + MsgCancelUpgrade is the Msg/CancelUpgrade request type. + + Since: cosmos-sdk 0.46 + name: body + in: body + required: true + schema: + $ref: '#/definitions/cosmos.upgrade.v1beta1.MsgCancelUpgrade' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.upgrade.v1beta1.MsgCancelUpgradeResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos.upgrade.v1beta1.Msg/SoftwareUpgrade: + post: + description: 'Since: cosmos-sdk 0.46' + tags: + - Msg + summary: SoftwareUpgrade is a governance operation for initiating a software upgrade. + operationId: CircuitMsg_SoftwareUpgrade + parameters: + - description: |- + MsgSoftwareUpgrade is the Msg/SoftwareUpgrade request type. + + Since: cosmos-sdk 0.46 + name: body + in: body + required: true + schema: + $ref: '#/definitions/cosmos.upgrade.v1beta1.MsgSoftwareUpgrade' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.upgrade.v1beta1.MsgSoftwareUpgradeResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos.vesting.v1beta1.Msg/CreatePeriodicVestingAccount: + post: + description: 'Since: cosmos-sdk 0.46' + tags: + - Msg + summary: |- + CreatePeriodicVestingAccount defines a method that enables creating a + periodic vesting account. + operationId: CircuitMsg_CreatePeriodicVestingAccount + parameters: + - description: |- + MsgCreateVestingAccount defines a message that enables creating a vesting + account. + + Since: cosmos-sdk 0.46 + name: body + in: body + required: true + schema: + $ref: '#/definitions/cosmos.vesting.v1beta1.MsgCreatePeriodicVestingAccount' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.vesting.v1beta1.MsgCreatePeriodicVestingAccountResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos.vesting.v1beta1.Msg/CreatePermanentLockedAccount: + post: + description: 'Since: cosmos-sdk 0.46' + tags: + - Msg + summary: |- + CreatePermanentLockedAccount defines a method that enables creating a permanent + locked account. + operationId: CircuitMsg_CreatePermanentLockedAccount + parameters: + - description: |- + MsgCreatePermanentLockedAccount defines a message that enables creating a permanent + locked account. + + Since: cosmos-sdk 0.46 + name: body + in: body + required: true + schema: + $ref: '#/definitions/cosmos.vesting.v1beta1.MsgCreatePermanentLockedAccount' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.vesting.v1beta1.MsgCreatePermanentLockedAccountResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos.vesting.v1beta1.Msg/CreateVestingAccount: + post: + tags: + - Msg + summary: |- + CreateVestingAccount defines a method that enables creating a vesting + account. + operationId: CircuitMsg_CreateVestingAccount + parameters: + - description: |- + MsgCreateVestingAccount defines a message that enables creating a vesting + account. + name: body + in: body + required: true + schema: + $ref: '#/definitions/cosmos.vesting.v1beta1.MsgCreateVestingAccount' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.vesting.v1beta1.MsgCreateVestingAccountResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos/auth/v1beta1/account_info/{address}: + get: + description: 'Since: cosmos-sdk 0.47' + tags: + - Query + summary: AccountInfo queries account info which is common to all account types. + operationId: CircuitQuery_AccountInfo + parameters: + - type: string + description: address is the account address string. + name: address + in: path + required: true + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.auth.v1beta1.QueryAccountInfoResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos/auth/v1beta1/accounts: + get: + description: |- + When called from another module, this query might consume a high amount of + gas if the pagination field is incorrectly set. + + Since: cosmos-sdk 0.43 + tags: + - Query + summary: Accounts returns all the existing accounts. + operationId: CircuitQuery_Accounts + parameters: + - type: string + format: byte + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + name: pagination.key + in: query + - type: string + format: uint64 + description: |- + offset is a numeric offset that can be used when key is unavailable. + It is less efficient than using key. Only one of offset or key should + be set. + name: pagination.offset + in: query + - type: string + format: uint64 + description: |- + limit is the total number of results to be returned in the result page. + If left empty it will default to a value to be set by each app. + name: pagination.limit + in: query + - type: boolean + description: |- + count_total is set to true to indicate that the result set should include + a count of the total number of items available for pagination in UIs. + count_total is only respected when offset is used. It is ignored when key + is set. + name: pagination.count_total + in: query + - type: boolean + description: |- + reverse is set to true if results are to be returned in the descending order. + + Since: cosmos-sdk 0.43 + name: pagination.reverse + in: query + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.auth.v1beta1.QueryAccountsResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos/auth/v1beta1/accounts/{address}: + get: + tags: + - Query + summary: Account returns account details based on address. + operationId: CircuitQuery_Account + parameters: + - type: string + description: address defines the address to query for. + name: address + in: path + required: true + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.auth.v1beta1.QueryAccountResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos/auth/v1beta1/address_by_id/{id}: + get: + description: 'Since: cosmos-sdk 0.46.2' + tags: + - Query + summary: AccountAddressByID returns account address based on account number. + operationId: CircuitQuery_AccountAddressByID + parameters: + - type: string + format: int64 + description: |- + Deprecated, use account_id instead + + id is the account number of the address to be queried. This field + should have been an uint64 (like all account numbers), and will be + updated to uint64 in a future version of the auth query. + name: id + in: path + required: true + - type: string + format: uint64 + description: |- + account_id is the account number of the address to be queried. + + Since: cosmos-sdk 0.47 + name: account_id + in: query + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.auth.v1beta1.QueryAccountAddressByIDResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos/auth/v1beta1/bech32: + get: + description: 'Since: cosmos-sdk 0.46' + tags: + - Query + summary: Bech32Prefix queries bech32Prefix + operationId: CircuitQuery_Bech32Prefix + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.auth.v1beta1.Bech32PrefixResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos/auth/v1beta1/bech32/{address_bytes}: + get: + description: 'Since: cosmos-sdk 0.46' + tags: + - Query + summary: AddressBytesToString converts Account Address bytes to string + operationId: CircuitQuery_AddressBytesToString + parameters: + - type: string + format: byte + name: address_bytes + in: path + required: true + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.auth.v1beta1.AddressBytesToStringResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos/auth/v1beta1/bech32/{address_string}: + get: + description: 'Since: cosmos-sdk 0.46' + tags: + - Query + summary: AddressStringToBytes converts Address string to bytes + operationId: CircuitQuery_AddressStringToBytes + parameters: + - type: string + name: address_string + in: path + required: true + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.auth.v1beta1.AddressStringToBytesResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos/auth/v1beta1/module_accounts: + get: + description: 'Since: cosmos-sdk 0.46' + tags: + - Query + summary: ModuleAccounts returns all the existing module accounts. + operationId: CircuitQuery_ModuleAccounts + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.auth.v1beta1.QueryModuleAccountsResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos/auth/v1beta1/module_accounts/{name}: + get: + tags: + - Query + summary: ModuleAccountByName returns the module account info by module name + operationId: CircuitQuery_ModuleAccountByName + parameters: + - type: string + name: name + in: path + required: true + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.auth.v1beta1.QueryModuleAccountByNameResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos/auth/v1beta1/params: + get: + tags: + - Query + summary: Params queries all parameters. + operationId: CircuitQuery_Params + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.auth.v1beta1.QueryParamsResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos/authz/v1beta1/grants: + get: + tags: + - Query + summary: Returns list of `Authorization`, granted to the grantee by the granter. + operationId: CircuitQuery_Grants + parameters: + - type: string + name: granter + in: query + - type: string + name: grantee + in: query + - type: string + description: Optional, msg_type_url, when set, will query only grants matching given msg type. + name: msg_type_url + in: query + - type: string + format: byte + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + name: pagination.key + in: query + - type: string + format: uint64 + description: |- + offset is a numeric offset that can be used when key is unavailable. + It is less efficient than using key. Only one of offset or key should + be set. + name: pagination.offset + in: query + - type: string + format: uint64 + description: |- + limit is the total number of results to be returned in the result page. + If left empty it will default to a value to be set by each app. + name: pagination.limit + in: query + - type: boolean + description: |- + count_total is set to true to indicate that the result set should include + a count of the total number of items available for pagination in UIs. + count_total is only respected when offset is used. It is ignored when key + is set. + name: pagination.count_total + in: query + - type: boolean + description: |- + reverse is set to true if results are to be returned in the descending order. + + Since: cosmos-sdk 0.43 + name: pagination.reverse + in: query + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.authz.v1beta1.QueryGrantsResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos/authz/v1beta1/grants/grantee/{grantee}: + get: + description: 'Since: cosmos-sdk 0.46' + tags: + - Query + summary: GranteeGrants returns a list of `GrantAuthorization` by grantee. + operationId: CircuitQuery_GranteeGrants + parameters: + - type: string + name: grantee + in: path + required: true + - type: string + format: byte + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + name: pagination.key + in: query + - type: string + format: uint64 + description: |- + offset is a numeric offset that can be used when key is unavailable. + It is less efficient than using key. Only one of offset or key should + be set. + name: pagination.offset + in: query + - type: string + format: uint64 + description: |- + limit is the total number of results to be returned in the result page. + If left empty it will default to a value to be set by each app. + name: pagination.limit + in: query + - type: boolean + description: |- + count_total is set to true to indicate that the result set should include + a count of the total number of items available for pagination in UIs. + count_total is only respected when offset is used. It is ignored when key + is set. + name: pagination.count_total + in: query + - type: boolean + description: |- + reverse is set to true if results are to be returned in the descending order. + + Since: cosmos-sdk 0.43 + name: pagination.reverse + in: query + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.authz.v1beta1.QueryGranteeGrantsResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos/authz/v1beta1/grants/granter/{granter}: + get: + description: 'Since: cosmos-sdk 0.46' + tags: + - Query + summary: GranterGrants returns list of `GrantAuthorization`, granted by granter. + operationId: CircuitQuery_GranterGrants + parameters: + - type: string + name: granter + in: path + required: true + - type: string + format: byte + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + name: pagination.key + in: query + - type: string + format: uint64 + description: |- + offset is a numeric offset that can be used when key is unavailable. + It is less efficient than using key. Only one of offset or key should + be set. + name: pagination.offset + in: query + - type: string + format: uint64 + description: |- + limit is the total number of results to be returned in the result page. + If left empty it will default to a value to be set by each app. + name: pagination.limit + in: query + - type: boolean + description: |- + count_total is set to true to indicate that the result set should include + a count of the total number of items available for pagination in UIs. + count_total is only respected when offset is used. It is ignored when key + is set. + name: pagination.count_total + in: query + - type: boolean + description: |- + reverse is set to true if results are to be returned in the descending order. + + Since: cosmos-sdk 0.43 + name: pagination.reverse + in: query + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.authz.v1beta1.QueryGranterGrantsResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos/bank/v1beta1/balances/{address}: + get: + description: |- + When called from another module, this query might consume a high amount of + gas if the pagination field is incorrectly set. + tags: + - Query + summary: AllBalances queries the balance of all coins for a single account. + operationId: CircuitQuery_AllBalances + parameters: + - type: string + description: address is the address to query balances for. + name: address + in: path + required: true + - type: string + format: byte + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + name: pagination.key + in: query + - type: string + format: uint64 + description: |- + offset is a numeric offset that can be used when key is unavailable. + It is less efficient than using key. Only one of offset or key should + be set. + name: pagination.offset + in: query + - type: string + format: uint64 + description: |- + limit is the total number of results to be returned in the result page. + If left empty it will default to a value to be set by each app. + name: pagination.limit + in: query + - type: boolean + description: |- + count_total is set to true to indicate that the result set should include + a count of the total number of items available for pagination in UIs. + count_total is only respected when offset is used. It is ignored when key + is set. + name: pagination.count_total + in: query + - type: boolean + description: |- + reverse is set to true if results are to be returned in the descending order. + + Since: cosmos-sdk 0.43 + name: pagination.reverse + in: query + - type: boolean + description: |- + resolve_denom is the flag to resolve the denom into a human-readable form from the metadata. + + Since: cosmos-sdk 0.50 + name: resolve_denom + in: query + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.bank.v1beta1.QueryAllBalancesResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos/bank/v1beta1/balances/{address}/by_denom: + get: + tags: + - Query + summary: Balance queries the balance of a single coin for a single account. + operationId: CircuitQuery_Balance + parameters: + - type: string + description: address is the address to query balances for. + name: address + in: path + required: true + - type: string + description: denom is the coin denom to query balances for. + name: denom + in: query + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.bank.v1beta1.QueryBalanceResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos/bank/v1beta1/denom_owners/{denom}: + get: + description: |- + When called from another module, this query might consume a high amount of + gas if the pagination field is incorrectly set. + + Since: cosmos-sdk 0.46 + tags: + - Query + summary: |- + DenomOwners queries for all account addresses that own a particular token + denomination. + operationId: CircuitQuery_DenomOwners + parameters: + - type: string + description: denom defines the coin denomination to query all account holders for. + name: denom + in: path + required: true + - type: string + format: byte + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + name: pagination.key + in: query + - type: string + format: uint64 + description: |- + offset is a numeric offset that can be used when key is unavailable. + It is less efficient than using key. Only one of offset or key should + be set. + name: pagination.offset + in: query + - type: string + format: uint64 + description: |- + limit is the total number of results to be returned in the result page. + If left empty it will default to a value to be set by each app. + name: pagination.limit + in: query + - type: boolean + description: |- + count_total is set to true to indicate that the result set should include + a count of the total number of items available for pagination in UIs. + count_total is only respected when offset is used. It is ignored when key + is set. + name: pagination.count_total + in: query + - type: boolean + description: |- + reverse is set to true if results are to be returned in the descending order. + + Since: cosmos-sdk 0.43 + name: pagination.reverse + in: query + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.bank.v1beta1.QueryDenomOwnersResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos/bank/v1beta1/denom_owners_by_query: + get: + description: 'Since: cosmos-sdk 0.50.3' + tags: + - Query + summary: |- + DenomOwnersByQuery queries for all account addresses that own a particular token + denomination. + operationId: CircuitQuery_DenomOwnersByQuery + parameters: + - type: string + description: denom defines the coin denomination to query all account holders for. + name: denom + in: query + - type: string + format: byte + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + name: pagination.key + in: query + - type: string + format: uint64 + description: |- + offset is a numeric offset that can be used when key is unavailable. + It is less efficient than using key. Only one of offset or key should + be set. + name: pagination.offset + in: query + - type: string + format: uint64 + description: |- + limit is the total number of results to be returned in the result page. + If left empty it will default to a value to be set by each app. + name: pagination.limit + in: query + - type: boolean + description: |- + count_total is set to true to indicate that the result set should include + a count of the total number of items available for pagination in UIs. + count_total is only respected when offset is used. It is ignored when key + is set. + name: pagination.count_total + in: query + - type: boolean + description: |- + reverse is set to true if results are to be returned in the descending order. + + Since: cosmos-sdk 0.43 + name: pagination.reverse + in: query + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.bank.v1beta1.QueryDenomOwnersByQueryResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos/bank/v1beta1/denoms_metadata: + get: + tags: + - Query + summary: |- + DenomsMetadata queries the client metadata for all registered coin + denominations. + operationId: CircuitQuery_DenomsMetadata + parameters: + - type: string + format: byte + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + name: pagination.key + in: query + - type: string + format: uint64 + description: |- + offset is a numeric offset that can be used when key is unavailable. + It is less efficient than using key. Only one of offset or key should + be set. + name: pagination.offset + in: query + - type: string + format: uint64 + description: |- + limit is the total number of results to be returned in the result page. + If left empty it will default to a value to be set by each app. + name: pagination.limit + in: query + - type: boolean + description: |- + count_total is set to true to indicate that the result set should include + a count of the total number of items available for pagination in UIs. + count_total is only respected when offset is used. It is ignored when key + is set. + name: pagination.count_total + in: query + - type: boolean + description: |- + reverse is set to true if results are to be returned in the descending order. + + Since: cosmos-sdk 0.43 + name: pagination.reverse + in: query + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.bank.v1beta1.QueryDenomsMetadataResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos/bank/v1beta1/denoms_metadata/{denom}: + get: + tags: + - Query + summary: DenomMetadata queries the client metadata of a given coin denomination. + operationId: CircuitQuery_DenomMetadata + parameters: + - type: string + description: denom is the coin denom to query the metadata for. + name: denom + in: path + required: true + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.bank.v1beta1.QueryDenomMetadataResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos/bank/v1beta1/denoms_metadata_by_query_string: + get: + tags: + - Query + summary: DenomMetadataByQueryString queries the client metadata of a given coin denomination. + operationId: CircuitQuery_DenomMetadataByQueryString + parameters: + - type: string + description: denom is the coin denom to query the metadata for. + name: denom + in: query + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.bank.v1beta1.QueryDenomMetadataByQueryStringResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos/bank/v1beta1/params: + get: + tags: + - Query + summary: Params queries the parameters of x/bank module. + operationId: CircuitQuery_ParamsMixin62 + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.bank.v1beta1.QueryParamsResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos/bank/v1beta1/send_enabled: + get: + description: |- + This query only returns denominations that have specific SendEnabled settings. + Any denomination that does not have a specific setting will use the default + params.default_send_enabled, and will not be returned by this query. + + Since: cosmos-sdk 0.47 + tags: + - Query + summary: SendEnabled queries for SendEnabled entries. + operationId: CircuitQuery_SendEnabled + parameters: + - type: array + items: + type: string + collectionFormat: multi + description: denoms is the specific denoms you want look up. Leave empty to get all entries. + name: denoms + in: query + - type: string + format: byte + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + name: pagination.key + in: query + - type: string + format: uint64 + description: |- + offset is a numeric offset that can be used when key is unavailable. + It is less efficient than using key. Only one of offset or key should + be set. + name: pagination.offset + in: query + - type: string + format: uint64 + description: |- + limit is the total number of results to be returned in the result page. + If left empty it will default to a value to be set by each app. + name: pagination.limit + in: query + - type: boolean + description: |- + count_total is set to true to indicate that the result set should include + a count of the total number of items available for pagination in UIs. + count_total is only respected when offset is used. It is ignored when key + is set. + name: pagination.count_total + in: query + - type: boolean + description: |- + reverse is set to true if results are to be returned in the descending order. + + Since: cosmos-sdk 0.43 + name: pagination.reverse + in: query + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.bank.v1beta1.QuerySendEnabledResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos/bank/v1beta1/spendable_balances/{address}: + get: + description: |- + When called from another module, this query might consume a high amount of + gas if the pagination field is incorrectly set. + + Since: cosmos-sdk 0.46 + tags: + - Query + summary: |- + SpendableBalances queries the spendable balance of all coins for a single + account. + operationId: CircuitQuery_SpendableBalances + parameters: + - type: string + description: address is the address to query spendable balances for. + name: address + in: path + required: true + - type: string + format: byte + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + name: pagination.key + in: query + - type: string + format: uint64 + description: |- + offset is a numeric offset that can be used when key is unavailable. + It is less efficient than using key. Only one of offset or key should + be set. + name: pagination.offset + in: query + - type: string + format: uint64 + description: |- + limit is the total number of results to be returned in the result page. + If left empty it will default to a value to be set by each app. + name: pagination.limit + in: query + - type: boolean + description: |- + count_total is set to true to indicate that the result set should include + a count of the total number of items available for pagination in UIs. + count_total is only respected when offset is used. It is ignored when key + is set. + name: pagination.count_total + in: query + - type: boolean + description: |- + reverse is set to true if results are to be returned in the descending order. + + Since: cosmos-sdk 0.43 + name: pagination.reverse + in: query + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.bank.v1beta1.QuerySpendableBalancesResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos/bank/v1beta1/spendable_balances/{address}/by_denom: + get: + description: |- + When called from another module, this query might consume a high amount of + gas if the pagination field is incorrectly set. + + Since: cosmos-sdk 0.47 + tags: + - Query + summary: |- + SpendableBalanceByDenom queries the spendable balance of a single denom for + a single account. + operationId: CircuitQuery_SpendableBalanceByDenom + parameters: + - type: string + description: address is the address to query balances for. + name: address + in: path + required: true + - type: string + description: denom is the coin denom to query balances for. + name: denom + in: query + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.bank.v1beta1.QuerySpendableBalanceByDenomResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos/bank/v1beta1/supply: + get: + description: |- + When called from another module, this query might consume a high amount of + gas if the pagination field is incorrectly set. + tags: + - Query + summary: TotalSupply queries the total supply of all coins. + operationId: CircuitQuery_TotalSupply + parameters: + - type: string + format: byte + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + name: pagination.key + in: query + - type: string + format: uint64 + description: |- + offset is a numeric offset that can be used when key is unavailable. + It is less efficient than using key. Only one of offset or key should + be set. + name: pagination.offset + in: query + - type: string + format: uint64 + description: |- + limit is the total number of results to be returned in the result page. + If left empty it will default to a value to be set by each app. + name: pagination.limit + in: query + - type: boolean + description: |- + count_total is set to true to indicate that the result set should include + a count of the total number of items available for pagination in UIs. + count_total is only respected when offset is used. It is ignored when key + is set. + name: pagination.count_total + in: query + - type: boolean + description: |- + reverse is set to true if results are to be returned in the descending order. + + Since: cosmos-sdk 0.43 + name: pagination.reverse + in: query + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.bank.v1beta1.QueryTotalSupplyResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos/bank/v1beta1/supply/by_denom: + get: + description: |- + When called from another module, this query might consume a high amount of + gas if the pagination field is incorrectly set. + tags: + - Query + summary: SupplyOf queries the supply of a single coin. + operationId: CircuitQuery_SupplyOf + parameters: + - type: string + description: denom is the coin denom to query balances for. + name: denom + in: query + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.bank.v1beta1.QuerySupplyOfResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos/base/node/v1beta1/config: + get: + tags: + - Service + summary: Config queries for the operator configuration. + operationId: CircuitService_Config + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.base.node.v1beta1.ConfigResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos/base/node/v1beta1/status: + get: + tags: + - Service + summary: Status queries for the node status. + operationId: CircuitService_Status + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.base.node.v1beta1.StatusResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos/base/reflection/v1beta1/app_descriptor/authn: + get: + tags: + - ReflectionService + summary: |- + GetAuthnDescriptor returns information on how to authenticate transactions in the application + NOTE: this RPC is still experimental and might be subject to breaking changes or removal in + future releases of the cosmos-sdk. + operationId: CircuitReflectionService_GetAuthnDescriptor + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.base.reflection.v2alpha1.GetAuthnDescriptorResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos/base/reflection/v1beta1/app_descriptor/chain: + get: + tags: + - ReflectionService + summary: GetChainDescriptor returns the description of the chain + operationId: CircuitReflectionService_GetChainDescriptor + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.base.reflection.v2alpha1.GetChainDescriptorResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos/base/reflection/v1beta1/app_descriptor/codec: + get: + tags: + - ReflectionService + summary: GetCodecDescriptor returns the descriptor of the codec of the application + operationId: CircuitReflectionService_GetCodecDescriptor + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.base.reflection.v2alpha1.GetCodecDescriptorResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos/base/reflection/v1beta1/app_descriptor/configuration: + get: + tags: + - ReflectionService + summary: GetConfigurationDescriptor returns the descriptor for the sdk.Config of the application + operationId: CircuitReflectionService_GetConfigurationDescriptor + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.base.reflection.v2alpha1.GetConfigurationDescriptorResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos/base/reflection/v1beta1/app_descriptor/query_services: + get: + tags: + - ReflectionService + summary: GetQueryServicesDescriptor returns the available gRPC queryable services of the application + operationId: CircuitReflectionService_GetQueryServicesDescriptor + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.base.reflection.v2alpha1.GetQueryServicesDescriptorResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos/base/reflection/v1beta1/app_descriptor/tx_descriptor: + get: + tags: + - ReflectionService + summary: GetTxDescriptor returns information on the used transaction object and available msgs that can be used + operationId: CircuitReflectionService_GetTxDescriptor + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.base.reflection.v2alpha1.GetTxDescriptorResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos/base/reflection/v1beta1/interfaces: + get: + tags: + - ReflectionService + summary: |- + ListAllInterfaces lists all the interfaces registered in the interface + registry. + operationId: CircuitReflectionService_ListAllInterfaces + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.base.reflection.v1beta1.ListAllInterfacesResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos/base/reflection/v1beta1/interfaces/{interface_name}/implementations: + get: + tags: + - ReflectionService + summary: |- + ListImplementations list all the concrete types that implement a given + interface. + operationId: CircuitReflectionService_ListImplementations + parameters: + - type: string + description: interface_name defines the interface to query the implementations for. + name: interface_name + in: path + required: true + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.base.reflection.v1beta1.ListImplementationsResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos/base/tendermint/v1beta1/abci_query: + get: + description: 'Since: cosmos-sdk 0.46' + tags: + - Service + summary: |- + ABCIQuery defines a query handler that supports ABCI queries directly to the + application, bypassing Tendermint completely. The ABCI query must contain + a valid and supported path, including app, custom, p2p, and store. + operationId: CircuitService_ABCIQuery + parameters: + - type: string + format: byte + name: data + in: query + - type: string + name: path + in: query + - type: string + format: int64 + name: height + in: query + - type: boolean + name: prove + in: query + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.base.tendermint.v1beta1.ABCIQueryResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos/base/tendermint/v1beta1/blocks/latest: + get: + tags: + - Service + summary: GetLatestBlock returns the latest block. + operationId: CircuitService_GetLatestBlock + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.base.tendermint.v1beta1.GetLatestBlockResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos/base/tendermint/v1beta1/blocks/{height}: + get: + tags: + - Service + summary: GetBlockByHeight queries block for given height. + operationId: CircuitService_GetBlockByHeight + parameters: + - type: string + format: int64 + name: height + in: path + required: true + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.base.tendermint.v1beta1.GetBlockByHeightResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos/base/tendermint/v1beta1/node_info: + get: + tags: + - Service + summary: GetNodeInfo queries the current node info. + operationId: CircuitService_GetNodeInfo + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.base.tendermint.v1beta1.GetNodeInfoResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos/base/tendermint/v1beta1/syncing: + get: + tags: + - Service + summary: GetSyncing queries node syncing. + operationId: CircuitService_GetSyncing + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.base.tendermint.v1beta1.GetSyncingResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos/base/tendermint/v1beta1/validatorsets/latest: + get: + tags: + - Service + summary: GetLatestValidatorSet queries latest validator-set. + operationId: CircuitService_GetLatestValidatorSet + parameters: + - type: string + format: byte + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + name: pagination.key + in: query + - type: string + format: uint64 + description: |- + offset is a numeric offset that can be used when key is unavailable. + It is less efficient than using key. Only one of offset or key should + be set. + name: pagination.offset + in: query + - type: string + format: uint64 + description: |- + limit is the total number of results to be returned in the result page. + If left empty it will default to a value to be set by each app. + name: pagination.limit + in: query + - type: boolean + description: |- + count_total is set to true to indicate that the result set should include + a count of the total number of items available for pagination in UIs. + count_total is only respected when offset is used. It is ignored when key + is set. + name: pagination.count_total + in: query + - type: boolean + description: |- + reverse is set to true if results are to be returned in the descending order. + + Since: cosmos-sdk 0.43 + name: pagination.reverse + in: query + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.base.tendermint.v1beta1.GetLatestValidatorSetResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos/base/tendermint/v1beta1/validatorsets/{height}: + get: + tags: + - Service + summary: GetValidatorSetByHeight queries validator-set at a given height. + operationId: CircuitService_GetValidatorSetByHeight + parameters: + - type: string + format: int64 + name: height + in: path + required: true + - type: string + format: byte + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + name: pagination.key + in: query + - type: string + format: uint64 + description: |- + offset is a numeric offset that can be used when key is unavailable. + It is less efficient than using key. Only one of offset or key should + be set. + name: pagination.offset + in: query + - type: string + format: uint64 + description: |- + limit is the total number of results to be returned in the result page. + If left empty it will default to a value to be set by each app. + name: pagination.limit + in: query + - type: boolean + description: |- + count_total is set to true to indicate that the result set should include + a count of the total number of items available for pagination in UIs. + count_total is only respected when offset is used. It is ignored when key + is set. + name: pagination.count_total + in: query + - type: boolean + description: |- + reverse is set to true if results are to be returned in the descending order. + + Since: cosmos-sdk 0.43 + name: pagination.reverse + in: query + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.base.tendermint.v1beta1.GetValidatorSetByHeightResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos/circuit/v1/accounts: + get: + tags: + - Query + summary: Account returns account permissions. + operationId: CircuitQuery_AccountsMixin72 + parameters: + - type: string + format: byte + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + name: pagination.key + in: query + - type: string + format: uint64 + description: |- + offset is a numeric offset that can be used when key is unavailable. + It is less efficient than using key. Only one of offset or key should + be set. + name: pagination.offset + in: query + - type: string + format: uint64 + description: |- + limit is the total number of results to be returned in the result page. + If left empty it will default to a value to be set by each app. + name: pagination.limit + in: query + - type: boolean + description: |- + count_total is set to true to indicate that the result set should include + a count of the total number of items available for pagination in UIs. + count_total is only respected when offset is used. It is ignored when key + is set. + name: pagination.count_total + in: query + - type: boolean + description: |- + reverse is set to true if results are to be returned in the descending order. + + Since: cosmos-sdk 0.43 + name: pagination.reverse + in: query + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.circuit.v1.AccountsResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos/circuit/v1/accounts/{address}: + get: + tags: + - Query + summary: Account returns account permissions. + operationId: CircuitQuery_AccountMixin72 + parameters: + - type: string + name: address + in: path + required: true + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.circuit.v1.AccountResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos/circuit/v1/disable_list: + get: + tags: + - Query + summary: DisabledList returns a list of disabled message urls + operationId: CircuitQuery_DisabledList + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.circuit.v1.DisabledListResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos/consensus/v1/params: + get: + tags: + - Query + summary: Params queries the parameters of x/consensus module. + operationId: CircuitQuery_ParamsMixin75 + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.consensus.v1.QueryParamsResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos/distribution/v1beta1/community_pool: + get: + tags: + - Query + summary: CommunityPool queries the community pool coins. + operationId: CircuitQuery_CommunityPool + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.distribution.v1beta1.QueryCommunityPoolResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos/distribution/v1beta1/delegators/{delegator_address}/rewards: + get: + tags: + - Query + summary: |- + DelegationTotalRewards queries the total rewards accrued by each + validator. + operationId: CircuitQuery_DelegationTotalRewards + parameters: + - type: string + description: delegator_address defines the delegator address to query for. + name: delegator_address + in: path + required: true + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.distribution.v1beta1.QueryDelegationTotalRewardsResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos/distribution/v1beta1/delegators/{delegator_address}/rewards/{validator_address}: + get: + tags: + - Query + summary: DelegationRewards queries the total rewards accrued by a delegation. + operationId: CircuitQuery_DelegationRewards + parameters: + - type: string + description: delegator_address defines the delegator address to query for. + name: delegator_address + in: path + required: true + - type: string + description: validator_address defines the validator address to query for. + name: validator_address + in: path + required: true + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.distribution.v1beta1.QueryDelegationRewardsResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos/distribution/v1beta1/delegators/{delegator_address}/validators: + get: + tags: + - Query + summary: DelegatorValidators queries the validators of a delegator. + operationId: CircuitQuery_DelegatorValidators + parameters: + - type: string + description: delegator_address defines the delegator address to query for. + name: delegator_address + in: path + required: true + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.distribution.v1beta1.QueryDelegatorValidatorsResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos/distribution/v1beta1/delegators/{delegator_address}/withdraw_address: + get: + tags: + - Query + summary: DelegatorWithdrawAddress queries withdraw address of a delegator. + operationId: CircuitQuery_DelegatorWithdrawAddress + parameters: + - type: string + description: delegator_address defines the delegator address to query for. + name: delegator_address + in: path + required: true + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.distribution.v1beta1.QueryDelegatorWithdrawAddressResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos/distribution/v1beta1/params: + get: + tags: + - Query + summary: Params queries params of the distribution module. + operationId: CircuitQuery_ParamsMixin88 + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.distribution.v1beta1.QueryParamsResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos/distribution/v1beta1/validators/{validator_address}: + get: + tags: + - Query + summary: ValidatorDistributionInfo queries validator commission and self-delegation rewards for validator + operationId: CircuitQuery_ValidatorDistributionInfo + parameters: + - type: string + description: validator_address defines the validator address to query for. + name: validator_address + in: path + required: true + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.distribution.v1beta1.QueryValidatorDistributionInfoResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos/distribution/v1beta1/validators/{validator_address}/commission: + get: + tags: + - Query + summary: ValidatorCommission queries accumulated commission for a validator. + operationId: CircuitQuery_ValidatorCommission + parameters: + - type: string + description: validator_address defines the validator address to query for. + name: validator_address + in: path + required: true + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.distribution.v1beta1.QueryValidatorCommissionResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos/distribution/v1beta1/validators/{validator_address}/outstanding_rewards: + get: + tags: + - Query + summary: ValidatorOutstandingRewards queries rewards of a validator address. + operationId: CircuitQuery_ValidatorOutstandingRewards + parameters: + - type: string + description: validator_address defines the validator address to query for. + name: validator_address + in: path + required: true + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.distribution.v1beta1.QueryValidatorOutstandingRewardsResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos/distribution/v1beta1/validators/{validator_address}/slashes: + get: + tags: + - Query + summary: ValidatorSlashes queries slash events of a validator. + operationId: CircuitQuery_ValidatorSlashes + parameters: + - type: string + description: validator_address defines the validator address to query for. + name: validator_address + in: path + required: true + - type: string + format: uint64 + description: starting_height defines the optional starting height to query the slashes. + name: starting_height + in: query + - type: string + format: uint64 + description: starting_height defines the optional ending height to query the slashes. + name: ending_height + in: query + - type: string + format: byte + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + name: pagination.key + in: query + - type: string + format: uint64 + description: |- + offset is a numeric offset that can be used when key is unavailable. + It is less efficient than using key. Only one of offset or key should + be set. + name: pagination.offset + in: query + - type: string + format: uint64 + description: |- + limit is the total number of results to be returned in the result page. + If left empty it will default to a value to be set by each app. + name: pagination.limit + in: query + - type: boolean + description: |- + count_total is set to true to indicate that the result set should include + a count of the total number of items available for pagination in UIs. + count_total is only respected when offset is used. It is ignored when key + is set. + name: pagination.count_total + in: query + - type: boolean + description: |- + reverse is set to true if results are to be returned in the descending order. + + Since: cosmos-sdk 0.43 + name: pagination.reverse + in: query + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.distribution.v1beta1.QueryValidatorSlashesResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos/evidence/v1beta1/evidence: + get: + tags: + - Query + summary: AllEvidence queries all evidence. + operationId: CircuitQuery_AllEvidence + parameters: + - type: string + format: byte + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + name: pagination.key + in: query + - type: string + format: uint64 + description: |- + offset is a numeric offset that can be used when key is unavailable. + It is less efficient than using key. Only one of offset or key should + be set. + name: pagination.offset + in: query + - type: string + format: uint64 + description: |- + limit is the total number of results to be returned in the result page. + If left empty it will default to a value to be set by each app. + name: pagination.limit + in: query + - type: boolean + description: |- + count_total is set to true to indicate that the result set should include + a count of the total number of items available for pagination in UIs. + count_total is only respected when offset is used. It is ignored when key + is set. + name: pagination.count_total + in: query + - type: boolean + description: |- + reverse is set to true if results are to be returned in the descending order. + + Since: cosmos-sdk 0.43 + name: pagination.reverse + in: query + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.evidence.v1beta1.QueryAllEvidenceResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos/evidence/v1beta1/evidence/{hash}: + get: + tags: + - Query + summary: Evidence queries evidence based on evidence hash. + operationId: CircuitQuery_Evidence + parameters: + - type: string + description: |- + hash defines the evidence hash of the requested evidence. + + Since: cosmos-sdk 0.47 + name: hash + in: path + required: true + - type: string + format: byte + description: |- + evidence_hash defines the hash of the requested evidence. + Deprecated: Use hash, a HEX encoded string, instead. + name: evidence_hash + in: query + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.evidence.v1beta1.QueryEvidenceResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos/feegrant/v1beta1/allowance/{granter}/{grantee}: + get: + tags: + - Query + summary: Allowance returns granted allwance to the grantee by the granter. + operationId: CircuitQuery_Allowance + parameters: + - type: string + description: granter is the address of the user granting an allowance of their funds. + name: granter + in: path + required: true + - type: string + description: grantee is the address of the user being granted an allowance of another user's funds. + name: grantee + in: path + required: true + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.feegrant.v1beta1.QueryAllowanceResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos/feegrant/v1beta1/allowances/{grantee}: + get: + tags: + - Query + summary: Allowances returns all the grants for the given grantee address. + operationId: CircuitQuery_Allowances + parameters: + - type: string + name: grantee + in: path + required: true + - type: string + format: byte + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + name: pagination.key + in: query + - type: string + format: uint64 + description: |- + offset is a numeric offset that can be used when key is unavailable. + It is less efficient than using key. Only one of offset or key should + be set. + name: pagination.offset + in: query + - type: string + format: uint64 + description: |- + limit is the total number of results to be returned in the result page. + If left empty it will default to a value to be set by each app. + name: pagination.limit + in: query + - type: boolean + description: |- + count_total is set to true to indicate that the result set should include + a count of the total number of items available for pagination in UIs. + count_total is only respected when offset is used. It is ignored when key + is set. + name: pagination.count_total + in: query + - type: boolean + description: |- + reverse is set to true if results are to be returned in the descending order. + + Since: cosmos-sdk 0.43 + name: pagination.reverse + in: query + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.feegrant.v1beta1.QueryAllowancesResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos/feegrant/v1beta1/issued/{granter}: + get: + description: 'Since: cosmos-sdk 0.46' + tags: + - Query + summary: AllowancesByGranter returns all the grants given by an address + operationId: CircuitQuery_AllowancesByGranter + parameters: + - type: string + name: granter + in: path + required: true + - type: string + format: byte + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + name: pagination.key + in: query + - type: string + format: uint64 + description: |- + offset is a numeric offset that can be used when key is unavailable. + It is less efficient than using key. Only one of offset or key should + be set. + name: pagination.offset + in: query + - type: string + format: uint64 + description: |- + limit is the total number of results to be returned in the result page. + If left empty it will default to a value to be set by each app. + name: pagination.limit + in: query + - type: boolean + description: |- + count_total is set to true to indicate that the result set should include + a count of the total number of items available for pagination in UIs. + count_total is only respected when offset is used. It is ignored when key + is set. + name: pagination.count_total + in: query + - type: boolean + description: |- + reverse is set to true if results are to be returned in the descending order. + + Since: cosmos-sdk 0.43 + name: pagination.reverse + in: query + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.feegrant.v1beta1.QueryAllowancesByGranterResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos/gov/v1/constitution: + get: + tags: + - Query + summary: Constitution queries the chain's constitution. + operationId: CircuitQuery_Constitution + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.gov.v1.QueryConstitutionResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos/gov/v1/params/{params_type}: + get: + tags: + - Query + summary: Params queries all parameters of the gov module. + operationId: CircuitQuery_ParamsMixin101 + parameters: + - type: string + description: |- + params_type defines which parameters to query for, can be one of "voting", + "tallying" or "deposit". + name: params_type + in: path + required: true + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.gov.v1.QueryParamsResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos/gov/v1/proposals: + get: + tags: + - Query + summary: Proposals queries all proposals based on given status. + operationId: CircuitQuery_Proposals + parameters: + - enum: + - PROPOSAL_STATUS_UNSPECIFIED + - PROPOSAL_STATUS_DEPOSIT_PERIOD + - PROPOSAL_STATUS_VOTING_PERIOD + - PROPOSAL_STATUS_PASSED + - PROPOSAL_STATUS_REJECTED + - PROPOSAL_STATUS_FAILED + type: string + default: PROPOSAL_STATUS_UNSPECIFIED + description: |- + proposal_status defines the status of the proposals. + + - PROPOSAL_STATUS_UNSPECIFIED: PROPOSAL_STATUS_UNSPECIFIED defines the default proposal status. + - PROPOSAL_STATUS_DEPOSIT_PERIOD: PROPOSAL_STATUS_DEPOSIT_PERIOD defines a proposal status during the deposit + period. + - PROPOSAL_STATUS_VOTING_PERIOD: PROPOSAL_STATUS_VOTING_PERIOD defines a proposal status during the voting + period. + - PROPOSAL_STATUS_PASSED: PROPOSAL_STATUS_PASSED defines a proposal status of a proposal that has + passed. + - PROPOSAL_STATUS_REJECTED: PROPOSAL_STATUS_REJECTED defines a proposal status of a proposal that has + been rejected. + - PROPOSAL_STATUS_FAILED: PROPOSAL_STATUS_FAILED defines a proposal status of a proposal that has + failed. + name: proposal_status + in: query + - type: string + description: voter defines the voter address for the proposals. + name: voter + in: query + - type: string + description: depositor defines the deposit addresses from the proposals. + name: depositor + in: query + - type: string + format: byte + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + name: pagination.key + in: query + - type: string + format: uint64 + description: |- + offset is a numeric offset that can be used when key is unavailable. + It is less efficient than using key. Only one of offset or key should + be set. + name: pagination.offset + in: query + - type: string + format: uint64 + description: |- + limit is the total number of results to be returned in the result page. + If left empty it will default to a value to be set by each app. + name: pagination.limit + in: query + - type: boolean + description: |- + count_total is set to true to indicate that the result set should include + a count of the total number of items available for pagination in UIs. + count_total is only respected when offset is used. It is ignored when key + is set. + name: pagination.count_total + in: query + - type: boolean + description: |- + reverse is set to true if results are to be returned in the descending order. + + Since: cosmos-sdk 0.43 + name: pagination.reverse + in: query + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.gov.v1.QueryProposalsResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos/gov/v1/proposals/{proposal_id}: + get: + tags: + - Query + summary: Proposal queries proposal details based on ProposalID. + operationId: CircuitQuery_Proposal + parameters: + - type: string + format: uint64 + description: proposal_id defines the unique id of the proposal. + name: proposal_id + in: path + required: true + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.gov.v1.QueryProposalResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos/gov/v1/proposals/{proposal_id}/deposits: + get: + tags: + - Query + summary: Deposits queries all deposits of a single proposal. + operationId: CircuitQuery_Deposits + parameters: + - type: string + format: uint64 + description: proposal_id defines the unique id of the proposal. + name: proposal_id + in: path + required: true + - type: string + format: byte + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + name: pagination.key + in: query + - type: string + format: uint64 + description: |- + offset is a numeric offset that can be used when key is unavailable. + It is less efficient than using key. Only one of offset or key should + be set. + name: pagination.offset + in: query + - type: string + format: uint64 + description: |- + limit is the total number of results to be returned in the result page. + If left empty it will default to a value to be set by each app. + name: pagination.limit + in: query + - type: boolean + description: |- + count_total is set to true to indicate that the result set should include + a count of the total number of items available for pagination in UIs. + count_total is only respected when offset is used. It is ignored when key + is set. + name: pagination.count_total + in: query + - type: boolean + description: |- + reverse is set to true if results are to be returned in the descending order. + + Since: cosmos-sdk 0.43 + name: pagination.reverse + in: query + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.gov.v1.QueryDepositsResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos/gov/v1/proposals/{proposal_id}/deposits/{depositor}: + get: + tags: + - Query + summary: Deposit queries single deposit information based on proposalID, depositAddr. + operationId: CircuitQuery_Deposit + parameters: + - type: string + format: uint64 + description: proposal_id defines the unique id of the proposal. + name: proposal_id + in: path + required: true + - type: string + description: depositor defines the deposit addresses from the proposals. + name: depositor + in: path + required: true + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.gov.v1.QueryDepositResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos/gov/v1/proposals/{proposal_id}/tally: + get: + tags: + - Query + summary: TallyResult queries the tally of a proposal vote. + operationId: CircuitQuery_TallyResult + parameters: + - type: string + format: uint64 + description: proposal_id defines the unique id of the proposal. + name: proposal_id + in: path + required: true + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.gov.v1.QueryTallyResultResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos/gov/v1/proposals/{proposal_id}/votes: + get: + tags: + - Query + summary: Votes queries votes of a given proposal. + operationId: CircuitQuery_Votes + parameters: + - type: string + format: uint64 + description: proposal_id defines the unique id of the proposal. + name: proposal_id + in: path + required: true + - type: string + format: byte + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + name: pagination.key + in: query + - type: string + format: uint64 + description: |- + offset is a numeric offset that can be used when key is unavailable. + It is less efficient than using key. Only one of offset or key should + be set. + name: pagination.offset + in: query + - type: string + format: uint64 + description: |- + limit is the total number of results to be returned in the result page. + If left empty it will default to a value to be set by each app. + name: pagination.limit + in: query + - type: boolean + description: |- + count_total is set to true to indicate that the result set should include + a count of the total number of items available for pagination in UIs. + count_total is only respected when offset is used. It is ignored when key + is set. + name: pagination.count_total + in: query + - type: boolean + description: |- + reverse is set to true if results are to be returned in the descending order. + + Since: cosmos-sdk 0.43 + name: pagination.reverse + in: query + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.gov.v1.QueryVotesResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos/gov/v1/proposals/{proposal_id}/votes/{voter}: + get: + tags: + - Query + summary: Vote queries voted information based on proposalID, voterAddr. + operationId: CircuitQuery_Vote + parameters: + - type: string + format: uint64 + description: proposal_id defines the unique id of the proposal. + name: proposal_id + in: path + required: true + - type: string + description: voter defines the voter address for the proposals. + name: voter + in: path + required: true + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.gov.v1.QueryVoteResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos/gov/v1beta1/params/{params_type}: + get: + tags: + - Query + summary: Params queries all parameters of the gov module. + operationId: CircuitQuery_ParamsMixin105 + parameters: + - type: string + description: |- + params_type defines which parameters to query for, can be one of "voting", + "tallying" or "deposit". + name: params_type + in: path + required: true + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.gov.v1beta1.QueryParamsResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos/gov/v1beta1/proposals: + get: + tags: + - Query + summary: Proposals queries all proposals based on given status. + operationId: CircuitQuery_ProposalsMixin105 + parameters: + - enum: + - PROPOSAL_STATUS_UNSPECIFIED + - PROPOSAL_STATUS_DEPOSIT_PERIOD + - PROPOSAL_STATUS_VOTING_PERIOD + - PROPOSAL_STATUS_PASSED + - PROPOSAL_STATUS_REJECTED + - PROPOSAL_STATUS_FAILED + type: string + default: PROPOSAL_STATUS_UNSPECIFIED + description: |- + proposal_status defines the status of the proposals. + + - PROPOSAL_STATUS_UNSPECIFIED: PROPOSAL_STATUS_UNSPECIFIED defines the default proposal status. + - PROPOSAL_STATUS_DEPOSIT_PERIOD: PROPOSAL_STATUS_DEPOSIT_PERIOD defines a proposal status during the deposit + period. + - PROPOSAL_STATUS_VOTING_PERIOD: PROPOSAL_STATUS_VOTING_PERIOD defines a proposal status during the voting + period. + - PROPOSAL_STATUS_PASSED: PROPOSAL_STATUS_PASSED defines a proposal status of a proposal that has + passed. + - PROPOSAL_STATUS_REJECTED: PROPOSAL_STATUS_REJECTED defines a proposal status of a proposal that has + been rejected. + - PROPOSAL_STATUS_FAILED: PROPOSAL_STATUS_FAILED defines a proposal status of a proposal that has + failed. + name: proposal_status + in: query + - type: string + description: voter defines the voter address for the proposals. + name: voter + in: query + - type: string + description: depositor defines the deposit addresses from the proposals. + name: depositor + in: query + - type: string + format: byte + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + name: pagination.key + in: query + - type: string + format: uint64 + description: |- + offset is a numeric offset that can be used when key is unavailable. + It is less efficient than using key. Only one of offset or key should + be set. + name: pagination.offset + in: query + - type: string + format: uint64 + description: |- + limit is the total number of results to be returned in the result page. + If left empty it will default to a value to be set by each app. + name: pagination.limit + in: query + - type: boolean + description: |- + count_total is set to true to indicate that the result set should include + a count of the total number of items available for pagination in UIs. + count_total is only respected when offset is used. It is ignored when key + is set. + name: pagination.count_total + in: query + - type: boolean + description: |- + reverse is set to true if results are to be returned in the descending order. + + Since: cosmos-sdk 0.43 + name: pagination.reverse + in: query + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.gov.v1beta1.QueryProposalsResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos/gov/v1beta1/proposals/{proposal_id}: + get: + tags: + - Query + summary: Proposal queries proposal details based on ProposalID. + operationId: CircuitQuery_ProposalMixin105 + parameters: + - type: string + format: uint64 + description: proposal_id defines the unique id of the proposal. + name: proposal_id + in: path + required: true + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.gov.v1beta1.QueryProposalResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos/gov/v1beta1/proposals/{proposal_id}/deposits: + get: + tags: + - Query + summary: Deposits queries all deposits of a single proposal. + operationId: CircuitQuery_DepositsMixin105 + parameters: + - type: string + format: uint64 + description: proposal_id defines the unique id of the proposal. + name: proposal_id + in: path + required: true + - type: string + format: byte + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + name: pagination.key + in: query + - type: string + format: uint64 + description: |- + offset is a numeric offset that can be used when key is unavailable. + It is less efficient than using key. Only one of offset or key should + be set. + name: pagination.offset + in: query + - type: string + format: uint64 + description: |- + limit is the total number of results to be returned in the result page. + If left empty it will default to a value to be set by each app. + name: pagination.limit + in: query + - type: boolean + description: |- + count_total is set to true to indicate that the result set should include + a count of the total number of items available for pagination in UIs. + count_total is only respected when offset is used. It is ignored when key + is set. + name: pagination.count_total + in: query + - type: boolean + description: |- + reverse is set to true if results are to be returned in the descending order. + + Since: cosmos-sdk 0.43 + name: pagination.reverse + in: query + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.gov.v1beta1.QueryDepositsResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos/gov/v1beta1/proposals/{proposal_id}/deposits/{depositor}: + get: + tags: + - Query + summary: Deposit queries single deposit information based on proposalID, depositor address. + operationId: CircuitQuery_DepositMixin105 + parameters: + - type: string + format: uint64 + description: proposal_id defines the unique id of the proposal. + name: proposal_id + in: path + required: true + - type: string + description: depositor defines the deposit addresses from the proposals. + name: depositor + in: path + required: true + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.gov.v1beta1.QueryDepositResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos/gov/v1beta1/proposals/{proposal_id}/tally: + get: + tags: + - Query + summary: TallyResult queries the tally of a proposal vote. + operationId: CircuitQuery_TallyResultMixin105 + parameters: + - type: string + format: uint64 + description: proposal_id defines the unique id of the proposal. + name: proposal_id + in: path + required: true + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.gov.v1beta1.QueryTallyResultResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos/gov/v1beta1/proposals/{proposal_id}/votes: + get: + tags: + - Query + summary: Votes queries votes of a given proposal. + operationId: CircuitQuery_VotesMixin105 + parameters: + - type: string + format: uint64 + description: proposal_id defines the unique id of the proposal. + name: proposal_id + in: path + required: true + - type: string + format: byte + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + name: pagination.key + in: query + - type: string + format: uint64 + description: |- + offset is a numeric offset that can be used when key is unavailable. + It is less efficient than using key. Only one of offset or key should + be set. + name: pagination.offset + in: query + - type: string + format: uint64 + description: |- + limit is the total number of results to be returned in the result page. + If left empty it will default to a value to be set by each app. + name: pagination.limit + in: query + - type: boolean + description: |- + count_total is set to true to indicate that the result set should include + a count of the total number of items available for pagination in UIs. + count_total is only respected when offset is used. It is ignored when key + is set. + name: pagination.count_total + in: query + - type: boolean + description: |- + reverse is set to true if results are to be returned in the descending order. + + Since: cosmos-sdk 0.43 + name: pagination.reverse + in: query + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.gov.v1beta1.QueryVotesResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos/gov/v1beta1/proposals/{proposal_id}/votes/{voter}: + get: + tags: + - Query + summary: Vote queries voted information based on proposalID, voterAddr. + operationId: CircuitQuery_VoteMixin105 + parameters: + - type: string + format: uint64 + description: proposal_id defines the unique id of the proposal. + name: proposal_id + in: path + required: true + - type: string + description: voter defines the voter address for the proposals. + name: voter + in: path + required: true + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.gov.v1beta1.QueryVoteResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos/group/v1/group_info/{group_id}: + get: + tags: + - Query + summary: GroupInfo queries group info based on group id. + operationId: CircuitQuery_GroupInfo + parameters: + - type: string + format: uint64 + description: group_id is the unique ID of the group. + name: group_id + in: path + required: true + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.group.v1.QueryGroupInfoResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos/group/v1/group_members/{group_id}: + get: + tags: + - Query + summary: GroupMembers queries members of a group by group id. + operationId: CircuitQuery_GroupMembers + parameters: + - type: string + format: uint64 + description: group_id is the unique ID of the group. + name: group_id + in: path + required: true + - type: string + format: byte + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + name: pagination.key + in: query + - type: string + format: uint64 + description: |- + offset is a numeric offset that can be used when key is unavailable. + It is less efficient than using key. Only one of offset or key should + be set. + name: pagination.offset + in: query + - type: string + format: uint64 + description: |- + limit is the total number of results to be returned in the result page. + If left empty it will default to a value to be set by each app. + name: pagination.limit + in: query + - type: boolean + description: |- + count_total is set to true to indicate that the result set should include + a count of the total number of items available for pagination in UIs. + count_total is only respected when offset is used. It is ignored when key + is set. + name: pagination.count_total + in: query + - type: boolean + description: |- + reverse is set to true if results are to be returned in the descending order. + + Since: cosmos-sdk 0.43 + name: pagination.reverse + in: query + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.group.v1.QueryGroupMembersResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos/group/v1/group_policies_by_admin/{admin}: + get: + tags: + - Query + summary: GroupPoliciesByAdmin queries group policies by admin address. + operationId: CircuitQuery_GroupPoliciesByAdmin + parameters: + - type: string + description: admin is the admin address of the group policy. + name: admin + in: path + required: true + - type: string + format: byte + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + name: pagination.key + in: query + - type: string + format: uint64 + description: |- + offset is a numeric offset that can be used when key is unavailable. + It is less efficient than using key. Only one of offset or key should + be set. + name: pagination.offset + in: query + - type: string + format: uint64 + description: |- + limit is the total number of results to be returned in the result page. + If left empty it will default to a value to be set by each app. + name: pagination.limit + in: query + - type: boolean + description: |- + count_total is set to true to indicate that the result set should include + a count of the total number of items available for pagination in UIs. + count_total is only respected when offset is used. It is ignored when key + is set. + name: pagination.count_total + in: query + - type: boolean + description: |- + reverse is set to true if results are to be returned in the descending order. + + Since: cosmos-sdk 0.43 + name: pagination.reverse + in: query + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.group.v1.QueryGroupPoliciesByAdminResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos/group/v1/group_policies_by_group/{group_id}: + get: + tags: + - Query + summary: GroupPoliciesByGroup queries group policies by group id. + operationId: CircuitQuery_GroupPoliciesByGroup + parameters: + - type: string + format: uint64 + description: group_id is the unique ID of the group policy's group. + name: group_id + in: path + required: true + - type: string + format: byte + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + name: pagination.key + in: query + - type: string + format: uint64 + description: |- + offset is a numeric offset that can be used when key is unavailable. + It is less efficient than using key. Only one of offset or key should + be set. + name: pagination.offset + in: query + - type: string + format: uint64 + description: |- + limit is the total number of results to be returned in the result page. + If left empty it will default to a value to be set by each app. + name: pagination.limit + in: query + - type: boolean + description: |- + count_total is set to true to indicate that the result set should include + a count of the total number of items available for pagination in UIs. + count_total is only respected when offset is used. It is ignored when key + is set. + name: pagination.count_total + in: query + - type: boolean + description: |- + reverse is set to true if results are to be returned in the descending order. + + Since: cosmos-sdk 0.43 + name: pagination.reverse + in: query + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.group.v1.QueryGroupPoliciesByGroupResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos/group/v1/group_policy_info/{address}: + get: + tags: + - Query + summary: GroupPolicyInfo queries group policy info based on account address of group policy. + operationId: CircuitQuery_GroupPolicyInfo + parameters: + - type: string + description: address is the account address of the group policy. + name: address + in: path + required: true + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.group.v1.QueryGroupPolicyInfoResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos/group/v1/groups: + get: + description: 'Since: cosmos-sdk 0.47.1' + tags: + - Query + summary: Groups queries all groups in state. + operationId: CircuitQuery_Groups + parameters: + - type: string + format: byte + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + name: pagination.key + in: query + - type: string + format: uint64 + description: |- + offset is a numeric offset that can be used when key is unavailable. + It is less efficient than using key. Only one of offset or key should + be set. + name: pagination.offset + in: query + - type: string + format: uint64 + description: |- + limit is the total number of results to be returned in the result page. + If left empty it will default to a value to be set by each app. + name: pagination.limit + in: query + - type: boolean + description: |- + count_total is set to true to indicate that the result set should include + a count of the total number of items available for pagination in UIs. + count_total is only respected when offset is used. It is ignored when key + is set. + name: pagination.count_total + in: query + - type: boolean + description: |- + reverse is set to true if results are to be returned in the descending order. + + Since: cosmos-sdk 0.43 + name: pagination.reverse + in: query + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.group.v1.QueryGroupsResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos/group/v1/groups_by_admin/{admin}: + get: + tags: + - Query + summary: GroupsByAdmin queries groups by admin address. + operationId: CircuitQuery_GroupsByAdmin + parameters: + - type: string + description: admin is the account address of a group's admin. + name: admin + in: path + required: true + - type: string + format: byte + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + name: pagination.key + in: query + - type: string + format: uint64 + description: |- + offset is a numeric offset that can be used when key is unavailable. + It is less efficient than using key. Only one of offset or key should + be set. + name: pagination.offset + in: query + - type: string + format: uint64 + description: |- + limit is the total number of results to be returned in the result page. + If left empty it will default to a value to be set by each app. + name: pagination.limit + in: query + - type: boolean + description: |- + count_total is set to true to indicate that the result set should include + a count of the total number of items available for pagination in UIs. + count_total is only respected when offset is used. It is ignored when key + is set. + name: pagination.count_total + in: query + - type: boolean + description: |- + reverse is set to true if results are to be returned in the descending order. + + Since: cosmos-sdk 0.43 + name: pagination.reverse + in: query + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.group.v1.QueryGroupsByAdminResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos/group/v1/groups_by_member/{address}: + get: + tags: + - Query + summary: GroupsByMember queries groups by member address. + operationId: CircuitQuery_GroupsByMember + parameters: + - type: string + description: address is the group member address. + name: address + in: path + required: true + - type: string + format: byte + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + name: pagination.key + in: query + - type: string + format: uint64 + description: |- + offset is a numeric offset that can be used when key is unavailable. + It is less efficient than using key. Only one of offset or key should + be set. + name: pagination.offset + in: query + - type: string + format: uint64 + description: |- + limit is the total number of results to be returned in the result page. + If left empty it will default to a value to be set by each app. + name: pagination.limit + in: query + - type: boolean + description: |- + count_total is set to true to indicate that the result set should include + a count of the total number of items available for pagination in UIs. + count_total is only respected when offset is used. It is ignored when key + is set. + name: pagination.count_total + in: query + - type: boolean + description: |- + reverse is set to true if results are to be returned in the descending order. + + Since: cosmos-sdk 0.43 + name: pagination.reverse + in: query + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.group.v1.QueryGroupsByMemberResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos/group/v1/proposal/{proposal_id}: + get: + tags: + - Query + summary: Proposal queries a proposal based on proposal id. + operationId: CircuitQuery_ProposalMixin109 + parameters: + - type: string + format: uint64 + description: proposal_id is the unique ID of a proposal. + name: proposal_id + in: path + required: true + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.group.v1.QueryProposalResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos/group/v1/proposals/{proposal_id}/tally: + get: + tags: + - Query + summary: |- + TallyResult returns the tally result of a proposal. If the proposal is + still in voting period, then this query computes the current tally state, + which might not be final. On the other hand, if the proposal is final, + then it simply returns the `final_tally_result` state stored in the + proposal itself. + operationId: CircuitQuery_TallyResultMixin109 + parameters: + - type: string + format: uint64 + description: proposal_id is the unique id of a proposal. + name: proposal_id + in: path + required: true + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.group.v1.QueryTallyResultResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos/group/v1/proposals_by_group_policy/{address}: + get: + tags: + - Query + summary: ProposalsByGroupPolicy queries proposals based on account address of group policy. + operationId: CircuitQuery_ProposalsByGroupPolicy + parameters: + - type: string + description: address is the account address of the group policy related to proposals. + name: address + in: path + required: true + - type: string + format: byte + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + name: pagination.key + in: query + - type: string + format: uint64 + description: |- + offset is a numeric offset that can be used when key is unavailable. + It is less efficient than using key. Only one of offset or key should + be set. + name: pagination.offset + in: query + - type: string + format: uint64 + description: |- + limit is the total number of results to be returned in the result page. + If left empty it will default to a value to be set by each app. + name: pagination.limit + in: query + - type: boolean + description: |- + count_total is set to true to indicate that the result set should include + a count of the total number of items available for pagination in UIs. + count_total is only respected when offset is used. It is ignored when key + is set. + name: pagination.count_total + in: query + - type: boolean + description: |- + reverse is set to true if results are to be returned in the descending order. + + Since: cosmos-sdk 0.43 + name: pagination.reverse + in: query + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.group.v1.QueryProposalsByGroupPolicyResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos/group/v1/vote_by_proposal_voter/{proposal_id}/{voter}: + get: + tags: + - Query + summary: VoteByProposalVoter queries a vote by proposal id and voter. + operationId: CircuitQuery_VoteByProposalVoter + parameters: + - type: string + format: uint64 + description: proposal_id is the unique ID of a proposal. + name: proposal_id + in: path + required: true + - type: string + description: voter is a proposal voter account address. + name: voter + in: path + required: true + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.group.v1.QueryVoteByProposalVoterResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos/group/v1/votes_by_proposal/{proposal_id}: + get: + tags: + - Query + summary: VotesByProposal queries a vote by proposal id. + operationId: CircuitQuery_VotesByProposal + parameters: + - type: string + format: uint64 + description: proposal_id is the unique ID of a proposal. + name: proposal_id + in: path + required: true + - type: string + format: byte + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + name: pagination.key + in: query + - type: string + format: uint64 + description: |- + offset is a numeric offset that can be used when key is unavailable. + It is less efficient than using key. Only one of offset or key should + be set. + name: pagination.offset + in: query + - type: string + format: uint64 + description: |- + limit is the total number of results to be returned in the result page. + If left empty it will default to a value to be set by each app. + name: pagination.limit + in: query + - type: boolean + description: |- + count_total is set to true to indicate that the result set should include + a count of the total number of items available for pagination in UIs. + count_total is only respected when offset is used. It is ignored when key + is set. + name: pagination.count_total + in: query + - type: boolean + description: |- + reverse is set to true if results are to be returned in the descending order. + + Since: cosmos-sdk 0.43 + name: pagination.reverse + in: query + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.group.v1.QueryVotesByProposalResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos/group/v1/votes_by_voter/{voter}: + get: + tags: + - Query + summary: VotesByVoter queries a vote by voter. + operationId: CircuitQuery_VotesByVoter + parameters: + - type: string + description: voter is a proposal voter account address. + name: voter + in: path + required: true + - type: string + format: byte + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + name: pagination.key + in: query + - type: string + format: uint64 + description: |- + offset is a numeric offset that can be used when key is unavailable. + It is less efficient than using key. Only one of offset or key should + be set. + name: pagination.offset + in: query + - type: string + format: uint64 + description: |- + limit is the total number of results to be returned in the result page. + If left empty it will default to a value to be set by each app. + name: pagination.limit + in: query + - type: boolean + description: |- + count_total is set to true to indicate that the result set should include + a count of the total number of items available for pagination in UIs. + count_total is only respected when offset is used. It is ignored when key + is set. + name: pagination.count_total + in: query + - type: boolean + description: |- + reverse is set to true if results are to be returned in the descending order. + + Since: cosmos-sdk 0.43 + name: pagination.reverse + in: query + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.group.v1.QueryVotesByVoterResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos/mint/v1beta1/annual_provisions: + get: + tags: + - Query + summary: AnnualProvisions current minting annual provisions value. + operationId: CircuitQuery_AnnualProvisions + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.mint.v1beta1.QueryAnnualProvisionsResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos/mint/v1beta1/inflation: + get: + tags: + - Query + summary: Inflation returns the current minting inflation value. + operationId: CircuitQuery_Inflation + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.mint.v1beta1.QueryInflationResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos/mint/v1beta1/params: + get: + tags: + - Query + summary: Params returns the total set of minting parameters. + operationId: CircuitQuery_ParamsMixin114 + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.mint.v1beta1.QueryParamsResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos/nft/v1beta1/balance/{owner}/{class_id}: + get: + tags: + - Query + summary: Balance queries the number of NFTs of a given class owned by the owner, same as balanceOf in ERC721 + operationId: CircuitQuery_BalanceMixin120 + parameters: + - type: string + description: owner is the owner address of the nft + name: owner + in: path + required: true + - type: string + description: class_id associated with the nft + name: class_id + in: path + required: true + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.nft.v1beta1.QueryBalanceResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos/nft/v1beta1/classes: + get: + tags: + - Query + summary: Classes queries all NFT classes + operationId: CircuitQuery_Classes + parameters: + - type: string + format: byte + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + name: pagination.key + in: query + - type: string + format: uint64 + description: |- + offset is a numeric offset that can be used when key is unavailable. + It is less efficient than using key. Only one of offset or key should + be set. + name: pagination.offset + in: query + - type: string + format: uint64 + description: |- + limit is the total number of results to be returned in the result page. + If left empty it will default to a value to be set by each app. + name: pagination.limit + in: query + - type: boolean + description: |- + count_total is set to true to indicate that the result set should include + a count of the total number of items available for pagination in UIs. + count_total is only respected when offset is used. It is ignored when key + is set. + name: pagination.count_total + in: query + - type: boolean + description: |- + reverse is set to true if results are to be returned in the descending order. + + Since: cosmos-sdk 0.43 + name: pagination.reverse + in: query + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.nft.v1beta1.QueryClassesResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos/nft/v1beta1/classes/{class_id}: + get: + tags: + - Query + summary: Class queries an NFT class based on its id + operationId: CircuitQuery_Class + parameters: + - type: string + description: class_id associated with the nft + name: class_id + in: path + required: true + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.nft.v1beta1.QueryClassResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos/nft/v1beta1/nfts: + get: + tags: + - Query + summary: |- + NFTs queries all NFTs of a given class or owner,choose at least one of the two, similar to tokenByIndex in + ERC721Enumerable + operationId: CircuitQuery_NFTs + parameters: + - type: string + description: class_id associated with the nft + name: class_id + in: query + - type: string + description: owner is the owner address of the nft + name: owner + in: query + - type: string + format: byte + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + name: pagination.key + in: query + - type: string + format: uint64 + description: |- + offset is a numeric offset that can be used when key is unavailable. + It is less efficient than using key. Only one of offset or key should + be set. + name: pagination.offset + in: query + - type: string + format: uint64 + description: |- + limit is the total number of results to be returned in the result page. + If left empty it will default to a value to be set by each app. + name: pagination.limit + in: query + - type: boolean + description: |- + count_total is set to true to indicate that the result set should include + a count of the total number of items available for pagination in UIs. + count_total is only respected when offset is used. It is ignored when key + is set. + name: pagination.count_total + in: query + - type: boolean + description: |- + reverse is set to true if results are to be returned in the descending order. + + Since: cosmos-sdk 0.43 + name: pagination.reverse + in: query + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.nft.v1beta1.QueryNFTsResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos/nft/v1beta1/nfts/{class_id}/{id}: + get: + tags: + - Query + summary: NFT queries an NFT based on its class and id. + operationId: CircuitQuery_NFT + parameters: + - type: string + description: class_id associated with the nft + name: class_id + in: path + required: true + - type: string + description: id is a unique identifier of the NFT + name: id + in: path + required: true + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.nft.v1beta1.QueryNFTResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos/nft/v1beta1/owner/{class_id}/{id}: + get: + tags: + - Query + summary: Owner queries the owner of the NFT based on its class and id, same as ownerOf in ERC721 + operationId: CircuitQuery_Owner + parameters: + - type: string + description: class_id associated with the nft + name: class_id + in: path + required: true + - type: string + description: id is a unique identifier of the NFT + name: id + in: path + required: true + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.nft.v1beta1.QueryOwnerResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos/nft/v1beta1/supply/{class_id}: + get: + tags: + - Query + summary: Supply queries the number of NFTs from the given class, same as totalSupply of ERC721. + operationId: CircuitQuery_Supply + parameters: + - type: string + description: class_id associated with the nft + name: class_id + in: path + required: true + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.nft.v1beta1.QuerySupplyResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos/params/v1beta1/params: + get: + tags: + - Query + summary: |- + Params queries a specific parameter of a module, given its subspace and + key. + operationId: CircuitQuery_ParamsMixin123 + parameters: + - type: string + description: subspace defines the module to query the parameter for. + name: subspace + in: query + - type: string + description: key defines the key of the parameter in the subspace. + name: key + in: query + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.params.v1beta1.QueryParamsResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos/params/v1beta1/subspaces: + get: + description: 'Since: cosmos-sdk 0.46' + tags: + - Query + summary: Subspaces queries for all registered subspaces and all keys for a subspace. + operationId: CircuitQuery_Subspaces + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.params.v1beta1.QuerySubspacesResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos/slashing/v1beta1/params: + get: + tags: + - Query + summary: Params queries the parameters of slashing module + operationId: CircuitQuery_ParamsMixin126 + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.slashing.v1beta1.QueryParamsResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos/slashing/v1beta1/signing_infos: + get: + tags: + - Query + summary: SigningInfos queries signing info of all validators + operationId: CircuitQuery_SigningInfos + parameters: + - type: string + format: byte + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + name: pagination.key + in: query + - type: string + format: uint64 + description: |- + offset is a numeric offset that can be used when key is unavailable. + It is less efficient than using key. Only one of offset or key should + be set. + name: pagination.offset + in: query + - type: string + format: uint64 + description: |- + limit is the total number of results to be returned in the result page. + If left empty it will default to a value to be set by each app. + name: pagination.limit + in: query + - type: boolean + description: |- + count_total is set to true to indicate that the result set should include + a count of the total number of items available for pagination in UIs. + count_total is only respected when offset is used. It is ignored when key + is set. + name: pagination.count_total + in: query + - type: boolean + description: |- + reverse is set to true if results are to be returned in the descending order. + + Since: cosmos-sdk 0.43 + name: pagination.reverse + in: query + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.slashing.v1beta1.QuerySigningInfosResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos/slashing/v1beta1/signing_infos/{cons_address}: + get: + tags: + - Query + summary: SigningInfo queries the signing info of given cons address + operationId: CircuitQuery_SigningInfo + parameters: + - type: string + description: cons_address is the address to query signing info of + name: cons_address + in: path + required: true + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.slashing.v1beta1.QuerySigningInfoResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos/staking/v1beta1/delegations/{delegator_addr}: + get: + description: |- + When called from another module, this query might consume a high amount of + gas if the pagination field is incorrectly set. + tags: + - Query + summary: DelegatorDelegations queries all delegations of a given delegator address. + operationId: CircuitQuery_DelegatorDelegations + parameters: + - type: string + description: delegator_addr defines the delegator address to query for. + name: delegator_addr + in: path + required: true + - type: string + format: byte + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + name: pagination.key + in: query + - type: string + format: uint64 + description: |- + offset is a numeric offset that can be used when key is unavailable. + It is less efficient than using key. Only one of offset or key should + be set. + name: pagination.offset + in: query + - type: string + format: uint64 + description: |- + limit is the total number of results to be returned in the result page. + If left empty it will default to a value to be set by each app. + name: pagination.limit + in: query + - type: boolean + description: |- + count_total is set to true to indicate that the result set should include + a count of the total number of items available for pagination in UIs. + count_total is only respected when offset is used. It is ignored when key + is set. + name: pagination.count_total + in: query + - type: boolean + description: |- + reverse is set to true if results are to be returned in the descending order. + + Since: cosmos-sdk 0.43 + name: pagination.reverse + in: query + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.staking.v1beta1.QueryDelegatorDelegationsResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos/staking/v1beta1/delegators/{delegator_addr}/redelegations: + get: + description: |- + When called from another module, this query might consume a high amount of + gas if the pagination field is incorrectly set. + tags: + - Query + summary: Redelegations queries redelegations of given address. + operationId: CircuitQuery_Redelegations + parameters: + - type: string + description: delegator_addr defines the delegator address to query for. + name: delegator_addr + in: path + required: true + - type: string + description: src_validator_addr defines the validator address to redelegate from. + name: src_validator_addr + in: query + - type: string + description: dst_validator_addr defines the validator address to redelegate to. + name: dst_validator_addr + in: query + - type: string + format: byte + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + name: pagination.key + in: query + - type: string + format: uint64 + description: |- + offset is a numeric offset that can be used when key is unavailable. + It is less efficient than using key. Only one of offset or key should + be set. + name: pagination.offset + in: query + - type: string + format: uint64 + description: |- + limit is the total number of results to be returned in the result page. + If left empty it will default to a value to be set by each app. + name: pagination.limit + in: query + - type: boolean + description: |- + count_total is set to true to indicate that the result set should include + a count of the total number of items available for pagination in UIs. + count_total is only respected when offset is used. It is ignored when key + is set. + name: pagination.count_total + in: query + - type: boolean + description: |- + reverse is set to true if results are to be returned in the descending order. + + Since: cosmos-sdk 0.43 + name: pagination.reverse + in: query + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.staking.v1beta1.QueryRedelegationsResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos/staking/v1beta1/delegators/{delegator_addr}/unbonding_delegations: + get: + description: |- + When called from another module, this query might consume a high amount of + gas if the pagination field is incorrectly set. + tags: + - Query + summary: |- + DelegatorUnbondingDelegations queries all unbonding delegations of a given + delegator address. + operationId: CircuitQuery_DelegatorUnbondingDelegations + parameters: + - type: string + description: delegator_addr defines the delegator address to query for. + name: delegator_addr + in: path + required: true + - type: string + format: byte + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + name: pagination.key + in: query + - type: string + format: uint64 + description: |- + offset is a numeric offset that can be used when key is unavailable. + It is less efficient than using key. Only one of offset or key should + be set. + name: pagination.offset + in: query + - type: string + format: uint64 + description: |- + limit is the total number of results to be returned in the result page. + If left empty it will default to a value to be set by each app. + name: pagination.limit + in: query + - type: boolean + description: |- + count_total is set to true to indicate that the result set should include + a count of the total number of items available for pagination in UIs. + count_total is only respected when offset is used. It is ignored when key + is set. + name: pagination.count_total + in: query + - type: boolean + description: |- + reverse is set to true if results are to be returned in the descending order. + + Since: cosmos-sdk 0.43 + name: pagination.reverse + in: query + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.staking.v1beta1.QueryDelegatorUnbondingDelegationsResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos/staking/v1beta1/delegators/{delegator_addr}/validators: + get: + description: |- + When called from another module, this query might consume a high amount of + gas if the pagination field is incorrectly set. + tags: + - Query + summary: |- + DelegatorValidators queries all validators info for given delegator + address. + operationId: CircuitQuery_DelegatorValidatorsMixin131 + parameters: + - type: string + description: delegator_addr defines the delegator address to query for. + name: delegator_addr + in: path + required: true + - type: string + format: byte + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + name: pagination.key + in: query + - type: string + format: uint64 + description: |- + offset is a numeric offset that can be used when key is unavailable. + It is less efficient than using key. Only one of offset or key should + be set. + name: pagination.offset + in: query + - type: string + format: uint64 + description: |- + limit is the total number of results to be returned in the result page. + If left empty it will default to a value to be set by each app. + name: pagination.limit + in: query + - type: boolean + description: |- + count_total is set to true to indicate that the result set should include + a count of the total number of items available for pagination in UIs. + count_total is only respected when offset is used. It is ignored when key + is set. + name: pagination.count_total + in: query + - type: boolean + description: |- + reverse is set to true if results are to be returned in the descending order. + + Since: cosmos-sdk 0.43 + name: pagination.reverse + in: query + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.staking.v1beta1.QueryDelegatorValidatorsResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos/staking/v1beta1/delegators/{delegator_addr}/validators/{validator_addr}: + get: + tags: + - Query + summary: |- + DelegatorValidator queries validator info for given delegator validator + pair. + operationId: CircuitQuery_DelegatorValidator + parameters: + - type: string + description: delegator_addr defines the delegator address to query for. + name: delegator_addr + in: path + required: true + - type: string + description: validator_addr defines the validator address to query for. + name: validator_addr + in: path + required: true + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.staking.v1beta1.QueryDelegatorValidatorResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos/staking/v1beta1/historical_info/{height}: + get: + tags: + - Query + summary: HistoricalInfo queries the historical info for given height. + operationId: CircuitQuery_HistoricalInfo + parameters: + - type: string + format: int64 + description: height defines at which height to query the historical info. + name: height + in: path + required: true + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.staking.v1beta1.QueryHistoricalInfoResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos/staking/v1beta1/params: + get: + tags: + - Query + summary: Parameters queries the staking parameters. + operationId: CircuitQuery_ParamsMixin131 + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.staking.v1beta1.QueryParamsResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos/staking/v1beta1/pool: + get: + tags: + - Query + summary: Pool queries the pool info. + operationId: CircuitQuery_Pool + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.staking.v1beta1.QueryPoolResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos/staking/v1beta1/validators: + get: + description: |- + When called from another module, this query might consume a high amount of + gas if the pagination field is incorrectly set. + tags: + - Query + summary: Validators queries all validators that match the given status. + operationId: CircuitQuery_Validators + parameters: + - type: string + description: status enables to query for validators matching a given status. + name: status + in: query + - type: string + format: byte + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + name: pagination.key + in: query + - type: string + format: uint64 + description: |- + offset is a numeric offset that can be used when key is unavailable. + It is less efficient than using key. Only one of offset or key should + be set. + name: pagination.offset + in: query + - type: string + format: uint64 + description: |- + limit is the total number of results to be returned in the result page. + If left empty it will default to a value to be set by each app. + name: pagination.limit + in: query + - type: boolean + description: |- + count_total is set to true to indicate that the result set should include + a count of the total number of items available for pagination in UIs. + count_total is only respected when offset is used. It is ignored when key + is set. + name: pagination.count_total + in: query + - type: boolean + description: |- + reverse is set to true if results are to be returned in the descending order. + + Since: cosmos-sdk 0.43 + name: pagination.reverse + in: query + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.staking.v1beta1.QueryValidatorsResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos/staking/v1beta1/validators/{validator_addr}: + get: + tags: + - Query + summary: Validator queries validator info for given validator address. + operationId: CircuitQuery_Validator + parameters: + - type: string + description: validator_addr defines the validator address to query for. + name: validator_addr + in: path + required: true + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.staking.v1beta1.QueryValidatorResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos/staking/v1beta1/validators/{validator_addr}/delegations: + get: + description: |- + When called from another module, this query might consume a high amount of + gas if the pagination field is incorrectly set. + tags: + - Query + summary: ValidatorDelegations queries delegate info for given validator. + operationId: CircuitQuery_ValidatorDelegations + parameters: + - type: string + description: validator_addr defines the validator address to query for. + name: validator_addr + in: path + required: true + - type: string + format: byte + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + name: pagination.key + in: query + - type: string + format: uint64 + description: |- + offset is a numeric offset that can be used when key is unavailable. + It is less efficient than using key. Only one of offset or key should + be set. + name: pagination.offset + in: query + - type: string + format: uint64 + description: |- + limit is the total number of results to be returned in the result page. + If left empty it will default to a value to be set by each app. + name: pagination.limit + in: query + - type: boolean + description: |- + count_total is set to true to indicate that the result set should include + a count of the total number of items available for pagination in UIs. + count_total is only respected when offset is used. It is ignored when key + is set. + name: pagination.count_total + in: query + - type: boolean + description: |- + reverse is set to true if results are to be returned in the descending order. + + Since: cosmos-sdk 0.43 + name: pagination.reverse + in: query + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.staking.v1beta1.QueryValidatorDelegationsResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos/staking/v1beta1/validators/{validator_addr}/delegations/{delegator_addr}: + get: + tags: + - Query + summary: Delegation queries delegate info for given validator delegator pair. + operationId: CircuitQuery_Delegation + parameters: + - type: string + description: validator_addr defines the validator address to query for. + name: validator_addr + in: path + required: true + - type: string + description: delegator_addr defines the delegator address to query for. + name: delegator_addr + in: path + required: true + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.staking.v1beta1.QueryDelegationResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos/staking/v1beta1/validators/{validator_addr}/delegations/{delegator_addr}/unbonding_delegation: + get: + tags: + - Query + summary: |- + UnbondingDelegation queries unbonding info for given validator delegator + pair. + operationId: CircuitQuery_UnbondingDelegation + parameters: + - type: string + description: validator_addr defines the validator address to query for. + name: validator_addr + in: path + required: true + - type: string + description: delegator_addr defines the delegator address to query for. + name: delegator_addr + in: path + required: true + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.staking.v1beta1.QueryUnbondingDelegationResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos/staking/v1beta1/validators/{validator_addr}/unbonding_delegations: + get: + description: |- + When called from another module, this query might consume a high amount of + gas if the pagination field is incorrectly set. + tags: + - Query + summary: ValidatorUnbondingDelegations queries unbonding delegations of a validator. + operationId: CircuitQuery_ValidatorUnbondingDelegations + parameters: + - type: string + description: validator_addr defines the validator address to query for. + name: validator_addr + in: path + required: true + - type: string + format: byte + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + name: pagination.key + in: query + - type: string + format: uint64 + description: |- + offset is a numeric offset that can be used when key is unavailable. + It is less efficient than using key. Only one of offset or key should + be set. + name: pagination.offset + in: query + - type: string + format: uint64 + description: |- + limit is the total number of results to be returned in the result page. + If left empty it will default to a value to be set by each app. + name: pagination.limit + in: query + - type: boolean + description: |- + count_total is set to true to indicate that the result set should include + a count of the total number of items available for pagination in UIs. + count_total is only respected when offset is used. It is ignored when key + is set. + name: pagination.count_total + in: query + - type: boolean + description: |- + reverse is set to true if results are to be returned in the descending order. + + Since: cosmos-sdk 0.43 + name: pagination.reverse + in: query + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.staking.v1beta1.QueryValidatorUnbondingDelegationsResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos/tx/v1beta1/decode: + post: + description: 'Since: cosmos-sdk 0.47' + tags: + - Service + summary: TxDecode decodes the transaction. + operationId: CircuitService_TxDecode + parameters: + - description: |- + TxDecodeRequest is the request type for the Service.TxDecode + RPC method. + + Since: cosmos-sdk 0.47 + name: body + in: body + required: true + schema: + $ref: '#/definitions/cosmos.tx.v1beta1.TxDecodeRequest' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.tx.v1beta1.TxDecodeResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos/tx/v1beta1/decode/amino: + post: + description: 'Since: cosmos-sdk 0.47' + tags: + - Service + summary: TxDecodeAmino decodes an Amino transaction from encoded bytes to JSON. + operationId: CircuitService_TxDecodeAmino + parameters: + - description: |- + TxDecodeAminoRequest is the request type for the Service.TxDecodeAmino + RPC method. + + Since: cosmos-sdk 0.47 + name: body + in: body + required: true + schema: + $ref: '#/definitions/cosmos.tx.v1beta1.TxDecodeAminoRequest' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.tx.v1beta1.TxDecodeAminoResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos/tx/v1beta1/encode: + post: + description: 'Since: cosmos-sdk 0.47' + tags: + - Service + summary: TxEncode encodes the transaction. + operationId: CircuitService_TxEncode + parameters: + - description: |- + TxEncodeRequest is the request type for the Service.TxEncode + RPC method. + + Since: cosmos-sdk 0.47 + name: body + in: body + required: true + schema: + $ref: '#/definitions/cosmos.tx.v1beta1.TxEncodeRequest' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.tx.v1beta1.TxEncodeResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos/tx/v1beta1/encode/amino: + post: + description: 'Since: cosmos-sdk 0.47' + tags: + - Service + summary: TxEncodeAmino encodes an Amino transaction from JSON to encoded bytes. + operationId: CircuitService_TxEncodeAmino + parameters: + - description: |- + TxEncodeAminoRequest is the request type for the Service.TxEncodeAmino + RPC method. + + Since: cosmos-sdk 0.47 + name: body + in: body + required: true + schema: + $ref: '#/definitions/cosmos.tx.v1beta1.TxEncodeAminoRequest' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.tx.v1beta1.TxEncodeAminoResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos/tx/v1beta1/simulate: + post: + tags: + - Service + summary: Simulate simulates executing a transaction for estimating gas usage. + operationId: CircuitService_Simulate + parameters: + - description: |- + SimulateRequest is the request type for the Service.Simulate + RPC method. + name: body + in: body + required: true + schema: + $ref: '#/definitions/cosmos.tx.v1beta1.SimulateRequest' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.tx.v1beta1.SimulateResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos/tx/v1beta1/txs: + get: + tags: + - Service + summary: GetTxsEvent fetches txs by event. + operationId: CircuitService_GetTxsEvent + parameters: + - type: array + items: + type: string + collectionFormat: multi + description: |- + events is the list of transaction event type. + Deprecated post v0.47.x: use query instead, which should contain a valid + events query. + name: events + in: query + - type: string + format: byte + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + name: pagination.key + in: query + - type: string + format: uint64 + description: |- + offset is a numeric offset that can be used when key is unavailable. + It is less efficient than using key. Only one of offset or key should + be set. + name: pagination.offset + in: query + - type: string + format: uint64 + description: |- + limit is the total number of results to be returned in the result page. + If left empty it will default to a value to be set by each app. + name: pagination.limit + in: query + - type: boolean + description: |- + count_total is set to true to indicate that the result set should include + a count of the total number of items available for pagination in UIs. + count_total is only respected when offset is used. It is ignored when key + is set. + name: pagination.count_total + in: query + - type: boolean + description: |- + reverse is set to true if results are to be returned in the descending order. + + Since: cosmos-sdk 0.43 + name: pagination.reverse + in: query + - enum: + - ORDER_BY_UNSPECIFIED + - ORDER_BY_ASC + - ORDER_BY_DESC + type: string + default: ORDER_BY_UNSPECIFIED + description: |2- + - ORDER_BY_UNSPECIFIED: ORDER_BY_UNSPECIFIED specifies an unknown sorting order. OrderBy defaults + to ASC in this case. + - ORDER_BY_ASC: ORDER_BY_ASC defines ascending order + - ORDER_BY_DESC: ORDER_BY_DESC defines descending order + name: order_by + in: query + - type: string + format: uint64 + description: |- + page is the page number to query, starts at 1. If not provided, will + default to first page. + name: page + in: query + - type: string + format: uint64 + description: |- + limit is the total number of results to be returned in the result page. + If left empty it will default to a value to be set by each app. + name: limit + in: query + - type: string + description: |- + query defines the transaction event query that is proxied to Tendermint's + TxSearch RPC method. The query must be valid. + + Since cosmos-sdk 0.50 + name: query + in: query + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.tx.v1beta1.GetTxsEventResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + post: + tags: + - Service + summary: BroadcastTx broadcast transaction. + operationId: CircuitService_BroadcastTx + parameters: + - description: |- + BroadcastTxRequest is the request type for the Service.BroadcastTxRequest + RPC method. + name: body + in: body + required: true + schema: + $ref: '#/definitions/cosmos.tx.v1beta1.BroadcastTxRequest' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.tx.v1beta1.BroadcastTxResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos/tx/v1beta1/txs/block/{height}: + get: + description: 'Since: cosmos-sdk 0.45.2' + tags: + - Service + summary: GetBlockWithTxs fetches a block with decoded txs. + operationId: CircuitService_GetBlockWithTxs + parameters: + - type: string + format: int64 + description: height is the height of the block to query. + name: height + in: path + required: true + - type: string + format: byte + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + name: pagination.key + in: query + - type: string + format: uint64 + description: |- + offset is a numeric offset that can be used when key is unavailable. + It is less efficient than using key. Only one of offset or key should + be set. + name: pagination.offset + in: query + - type: string + format: uint64 + description: |- + limit is the total number of results to be returned in the result page. + If left empty it will default to a value to be set by each app. + name: pagination.limit + in: query + - type: boolean + description: |- + count_total is set to true to indicate that the result set should include + a count of the total number of items available for pagination in UIs. + count_total is only respected when offset is used. It is ignored when key + is set. + name: pagination.count_total + in: query + - type: boolean + description: |- + reverse is set to true if results are to be returned in the descending order. + + Since: cosmos-sdk 0.43 + name: pagination.reverse + in: query + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.tx.v1beta1.GetBlockWithTxsResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos/tx/v1beta1/txs/{hash}: + get: + tags: + - Service + summary: GetTx fetches a tx by hash. + operationId: CircuitService_GetTx + parameters: + - type: string + description: hash is the tx hash to query, encoded as a hex string. + name: hash + in: path + required: true + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.tx.v1beta1.GetTxResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos/upgrade/v1beta1/applied_plan/{name}: + get: + tags: + - Query + summary: AppliedPlan queries a previously applied upgrade plan by its name. + operationId: CircuitQuery_AppliedPlan + parameters: + - type: string + description: name is the name of the applied plan to query for. + name: name + in: path + required: true + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.upgrade.v1beta1.QueryAppliedPlanResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos/upgrade/v1beta1/authority: + get: + description: 'Since: cosmos-sdk 0.46' + tags: + - Query + summary: Returns the account with authority to conduct upgrades + operationId: CircuitQuery_Authority + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.upgrade.v1beta1.QueryAuthorityResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos/upgrade/v1beta1/current_plan: + get: + tags: + - Query + summary: CurrentPlan queries the current upgrade plan. + operationId: CircuitQuery_CurrentPlan + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.upgrade.v1beta1.QueryCurrentPlanResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos/upgrade/v1beta1/module_versions: + get: + description: 'Since: cosmos-sdk 0.43' + tags: + - Query + summary: ModuleVersions queries the list of module versions from state. + operationId: CircuitQuery_ModuleVersions + parameters: + - type: string + description: |- + module_name is a field to query a specific module + consensus version from state. Leaving this empty will + fetch the full list of module versions from state + name: module_name + in: query + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.upgrade.v1beta1.QueryModuleVersionsResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /cosmos/upgrade/v1beta1/upgraded_consensus_state/{last_height}: + get: + tags: + - Query + summary: |- + UpgradedConsensusState queries the consensus state that will serve + as a trusted kernel for the next version of this chain. It will only be + stored at the last height of this chain. + UpgradedConsensusState RPC not supported with legacy querier + This rpc is deprecated now that IBC has its own replacement + (https://github.com/cosmos/ibc-go/blob/2c880a22e9f9cc75f62b527ca94aa75ce1106001/proto/ibc/core/client/v1/query.proto#L54) + operationId: CircuitQuery_UpgradedConsensusState + parameters: + - type: string + format: int64 + description: |- + last height of the current chain must be sent in request + as this is the height under which next consensus state is stored + name: last_height + in: path + required: true + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/cosmos.upgrade.v1beta1.QueryUpgradedConsensusStateResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /ibc.applications.fee.v1.Msg/PayPacketFee: + post: + tags: + - Msg + summary: |- + PayPacketFee defines a rpc handler method for MsgPayPacketFee + PayPacketFee is an open callback that may be called by any module/user that wishes to escrow funds in order to + incentivize the relaying of the packet at the next sequence + NOTE: This method is intended to be used within a multi msg transaction, where the subsequent msg that follows + initiates the lifecycle of the incentivized packet + operationId: FeeMsg_PayPacketFee + parameters: + - name: body + in: body + required: true + schema: + $ref: '#/definitions/ibc.applications.fee.v1.MsgPayPacketFee' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/ibc.applications.fee.v1.MsgPayPacketFeeResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /ibc.applications.fee.v1.Msg/PayPacketFeeAsync: + post: + tags: + - Msg + summary: |- + PayPacketFeeAsync defines a rpc handler method for MsgPayPacketFeeAsync + PayPacketFeeAsync is an open callback that may be called by any module/user that wishes to escrow funds in order to + incentivize the relaying of a known packet (i.e. at a particular sequence) + operationId: FeeMsg_PayPacketFeeAsync + parameters: + - name: body + in: body + required: true + schema: + $ref: '#/definitions/ibc.applications.fee.v1.MsgPayPacketFeeAsync' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/ibc.applications.fee.v1.MsgPayPacketFeeAsyncResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /ibc.applications.fee.v1.Msg/RegisterCounterpartyPayee: + post: + tags: + - Msg + summary: |- + RegisterCounterpartyPayee defines a rpc handler method for MsgRegisterCounterpartyPayee + RegisterCounterpartyPayee is called by the relayer on each channelEnd and allows them to specify the counterparty + payee address before relaying. This ensures they will be properly compensated for forward relaying since + the destination chain must include the registered counterparty payee address in the acknowledgement. This function + may be called more than once by a relayer, in which case, the latest counterparty payee address is always used. + operationId: FeeMsg_RegisterCounterpartyPayee + parameters: + - name: body + in: body + required: true + schema: + $ref: '#/definitions/ibc.applications.fee.v1.MsgRegisterCounterpartyPayee' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/ibc.applications.fee.v1.MsgRegisterCounterpartyPayeeResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /ibc.applications.fee.v1.Msg/RegisterPayee: + post: + tags: + - Msg + summary: |- + RegisterPayee defines a rpc handler method for MsgRegisterPayee + RegisterPayee is called by the relayer on each channelEnd and allows them to set an optional + payee to which reverse and timeout relayer packet fees will be paid out. The payee should be registered on + the source chain from which packets originate as this is where fee distribution takes place. This function may be + called more than once by a relayer, in which case, the latest payee is always used. + operationId: FeeMsg_RegisterPayee + parameters: + - name: body + in: body + required: true + schema: + $ref: '#/definitions/ibc.applications.fee.v1.MsgRegisterPayee' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/ibc.applications.fee.v1.MsgRegisterPayeeResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /ibc.applications.interchain_accounts.controller.v1.Msg/RegisterInterchainAccount: + post: + tags: + - Msg + summary: RegisterInterchainAccount defines a rpc handler for MsgRegisterInterchainAccount. + operationId: FeeMsg_RegisterInterchainAccount + parameters: + - name: body + in: body + required: true + schema: + $ref: '#/definitions/ibc.applications.interchain_accounts.controller.v1.MsgRegisterInterchainAccount' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/ibc.applications.interchain_accounts.controller.v1.MsgRegisterInterchainAccountResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /ibc.applications.interchain_accounts.controller.v1.Msg/SendTx: + post: + tags: + - Msg + summary: SendTx defines a rpc handler for MsgSendTx. + operationId: FeeMsg_SendTx + parameters: + - name: body + in: body + required: true + schema: + $ref: '#/definitions/ibc.applications.interchain_accounts.controller.v1.MsgSendTx' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/ibc.applications.interchain_accounts.controller.v1.MsgSendTxResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /ibc.applications.interchain_accounts.controller.v1.Msg/UpdateParams: + post: + tags: + - Msg + summary: UpdateParams defines a rpc handler for MsgUpdateParams. + operationId: FeeMsg_UpdateParams + parameters: + - name: body + in: body + required: true + schema: + $ref: '#/definitions/ibc.applications.interchain_accounts.controller.v1.MsgUpdateParams' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/ibc.applications.interchain_accounts.controller.v1.MsgUpdateParamsResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /ibc.applications.interchain_accounts.host.v1.Msg/UpdateParams: + post: + tags: + - Msg + summary: UpdateParams defines a rpc handler for MsgUpdateParams. + operationId: FeeMsg_UpdateParamsMixin172 + parameters: + - name: body + in: body + required: true + schema: + $ref: '#/definitions/ibc.applications.interchain_accounts.host.v1.MsgUpdateParams' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/ibc.applications.interchain_accounts.host.v1.MsgUpdateParamsResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /ibc.applications.transfer.v1.Msg/Transfer: + post: + tags: + - Msg + summary: Transfer defines a rpc handler method for MsgTransfer. + operationId: FeeMsg_Transfer + parameters: + - name: body + in: body + required: true + schema: + $ref: '#/definitions/ibc.applications.transfer.v1.MsgTransfer' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/ibc.applications.transfer.v1.MsgTransferResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /ibc.applications.transfer.v1.Msg/UpdateParams: + post: + tags: + - Msg + summary: UpdateParams defines a rpc handler for MsgUpdateParams. + operationId: FeeMsg_UpdateParamsMixin180 + parameters: + - description: MsgUpdateParams is the Msg/UpdateParams request type. + name: body + in: body + required: true + schema: + $ref: '#/definitions/ibc.applications.transfer.v1.MsgUpdateParams' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/ibc.applications.transfer.v1.MsgUpdateParamsResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /ibc.core.channel.v1.Msg/Acknowledgement: + post: + tags: + - Msg + summary: Acknowledgement defines a rpc handler method for MsgAcknowledgement. + operationId: FeeMsg_Acknowledgement + parameters: + - name: body + in: body + required: true + schema: + $ref: '#/definitions/ibc.core.channel.v1.MsgAcknowledgement' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/ibc.core.channel.v1.MsgAcknowledgementResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /ibc.core.channel.v1.Msg/ChannelCloseConfirm: + post: + tags: + - Msg + summary: |- + ChannelCloseConfirm defines a rpc handler method for + MsgChannelCloseConfirm. + operationId: FeeMsg_ChannelCloseConfirm + parameters: + - description: |- + MsgChannelCloseConfirm defines a msg sent by a Relayer to Chain B + to acknowledge the change of channel state to CLOSED on Chain A. + name: body + in: body + required: true + schema: + $ref: '#/definitions/ibc.core.channel.v1.MsgChannelCloseConfirm' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/ibc.core.channel.v1.MsgChannelCloseConfirmResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /ibc.core.channel.v1.Msg/ChannelCloseInit: + post: + tags: + - Msg + summary: ChannelCloseInit defines a rpc handler method for MsgChannelCloseInit. + operationId: FeeMsg_ChannelCloseInit + parameters: + - description: |- + MsgChannelCloseInit defines a msg sent by a Relayer to Chain A + to close a channel with Chain B. + name: body + in: body + required: true + schema: + $ref: '#/definitions/ibc.core.channel.v1.MsgChannelCloseInit' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/ibc.core.channel.v1.MsgChannelCloseInitResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /ibc.core.channel.v1.Msg/ChannelOpenAck: + post: + tags: + - Msg + summary: ChannelOpenAck defines a rpc handler method for MsgChannelOpenAck. + operationId: FeeMsg_ChannelOpenAck + parameters: + - description: |- + MsgChannelOpenAck defines a msg sent by a Relayer to Chain A to acknowledge + the change of channel state to TRYOPEN on Chain B. + WARNING: a channel upgrade MUST NOT initialize an upgrade for this channel + in the same block as executing this message otherwise the counterparty will + be incapable of opening. + name: body + in: body + required: true + schema: + $ref: '#/definitions/ibc.core.channel.v1.MsgChannelOpenAck' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/ibc.core.channel.v1.MsgChannelOpenAckResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /ibc.core.channel.v1.Msg/ChannelOpenConfirm: + post: + tags: + - Msg + summary: ChannelOpenConfirm defines a rpc handler method for MsgChannelOpenConfirm. + operationId: FeeMsg_ChannelOpenConfirm + parameters: + - description: |- + MsgChannelOpenConfirm defines a msg sent by a Relayer to Chain B to + acknowledge the change of channel state to OPEN on Chain A. + name: body + in: body + required: true + schema: + $ref: '#/definitions/ibc.core.channel.v1.MsgChannelOpenConfirm' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/ibc.core.channel.v1.MsgChannelOpenConfirmResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /ibc.core.channel.v1.Msg/ChannelOpenInit: + post: + tags: + - Msg + summary: ChannelOpenInit defines a rpc handler method for MsgChannelOpenInit. + operationId: FeeMsg_ChannelOpenInit + parameters: + - description: |- + MsgChannelOpenInit defines an sdk.Msg to initialize a channel handshake. It + is called by a relayer on Chain A. + name: body + in: body + required: true + schema: + $ref: '#/definitions/ibc.core.channel.v1.MsgChannelOpenInit' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/ibc.core.channel.v1.MsgChannelOpenInitResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /ibc.core.channel.v1.Msg/ChannelOpenTry: + post: + tags: + - Msg + summary: ChannelOpenTry defines a rpc handler method for MsgChannelOpenTry. + operationId: FeeMsg_ChannelOpenTry + parameters: + - description: |- + MsgChannelOpenInit defines a msg sent by a Relayer to try to open a channel + on Chain B. The version field within the Channel field has been deprecated. Its + value will be ignored by core IBC. + name: body + in: body + required: true + schema: + $ref: '#/definitions/ibc.core.channel.v1.MsgChannelOpenTry' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/ibc.core.channel.v1.MsgChannelOpenTryResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /ibc.core.channel.v1.Msg/ChannelUpgradeAck: + post: + tags: + - Msg + summary: ChannelUpgradeAck defines a rpc handler method for MsgChannelUpgradeAck. + operationId: FeeMsg_ChannelUpgradeAck + parameters: + - name: body + in: body + required: true + schema: + $ref: '#/definitions/ibc.core.channel.v1.MsgChannelUpgradeAck' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/ibc.core.channel.v1.MsgChannelUpgradeAckResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /ibc.core.channel.v1.Msg/ChannelUpgradeCancel: + post: + tags: + - Msg + summary: ChannelUpgradeCancel defines a rpc handler method for MsgChannelUpgradeCancel. + operationId: FeeMsg_ChannelUpgradeCancel + parameters: + - name: body + in: body + required: true + schema: + $ref: '#/definitions/ibc.core.channel.v1.MsgChannelUpgradeCancel' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/ibc.core.channel.v1.MsgChannelUpgradeCancelResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /ibc.core.channel.v1.Msg/ChannelUpgradeConfirm: + post: + tags: + - Msg + summary: ChannelUpgradeConfirm defines a rpc handler method for MsgChannelUpgradeConfirm. + operationId: FeeMsg_ChannelUpgradeConfirm + parameters: + - name: body + in: body + required: true + schema: + $ref: '#/definitions/ibc.core.channel.v1.MsgChannelUpgradeConfirm' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/ibc.core.channel.v1.MsgChannelUpgradeConfirmResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /ibc.core.channel.v1.Msg/ChannelUpgradeInit: + post: + tags: + - Msg + summary: ChannelUpgradeInit defines a rpc handler method for MsgChannelUpgradeInit. + operationId: FeeMsg_ChannelUpgradeInit + parameters: + - description: |- + MsgChannelUpgradeInit defines the request type for the ChannelUpgradeInit rpc + WARNING: Initializing a channel upgrade in the same block as opening the channel + may result in the counterparty being incapable of opening. + name: body + in: body + required: true + schema: + $ref: '#/definitions/ibc.core.channel.v1.MsgChannelUpgradeInit' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/ibc.core.channel.v1.MsgChannelUpgradeInitResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /ibc.core.channel.v1.Msg/ChannelUpgradeOpen: + post: + tags: + - Msg + summary: ChannelUpgradeOpen defines a rpc handler method for MsgChannelUpgradeOpen. + operationId: FeeMsg_ChannelUpgradeOpen + parameters: + - name: body + in: body + required: true + schema: + $ref: '#/definitions/ibc.core.channel.v1.MsgChannelUpgradeOpen' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/ibc.core.channel.v1.MsgChannelUpgradeOpenResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /ibc.core.channel.v1.Msg/ChannelUpgradeTimeout: + post: + tags: + - Msg + summary: ChannelUpgradeTimeout defines a rpc handler method for MsgChannelUpgradeTimeout. + operationId: FeeMsg_ChannelUpgradeTimeout + parameters: + - name: body + in: body + required: true + schema: + $ref: '#/definitions/ibc.core.channel.v1.MsgChannelUpgradeTimeout' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/ibc.core.channel.v1.MsgChannelUpgradeTimeoutResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /ibc.core.channel.v1.Msg/ChannelUpgradeTry: + post: + tags: + - Msg + summary: ChannelUpgradeTry defines a rpc handler method for MsgChannelUpgradeTry. + operationId: FeeMsg_ChannelUpgradeTry + parameters: + - name: body + in: body + required: true + schema: + $ref: '#/definitions/ibc.core.channel.v1.MsgChannelUpgradeTry' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/ibc.core.channel.v1.MsgChannelUpgradeTryResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /ibc.core.channel.v1.Msg/PruneAcknowledgements: + post: + tags: + - Msg + summary: PruneAcknowledgements defines a rpc handler method for MsgPruneAcknowledgements. + operationId: FeeMsg_PruneAcknowledgements + parameters: + - description: MsgPruneAcknowledgements defines the request type for the PruneAcknowledgements rpc. + name: body + in: body + required: true + schema: + $ref: '#/definitions/ibc.core.channel.v1.MsgPruneAcknowledgements' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/ibc.core.channel.v1.MsgPruneAcknowledgementsResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /ibc.core.channel.v1.Msg/RecvPacket: + post: + tags: + - Msg + summary: RecvPacket defines a rpc handler method for MsgRecvPacket. + operationId: FeeMsg_RecvPacket + parameters: + - name: body + in: body + required: true + schema: + $ref: '#/definitions/ibc.core.channel.v1.MsgRecvPacket' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/ibc.core.channel.v1.MsgRecvPacketResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /ibc.core.channel.v1.Msg/Timeout: + post: + tags: + - Msg + summary: Timeout defines a rpc handler method for MsgTimeout. + operationId: FeeMsg_Timeout + parameters: + - name: body + in: body + required: true + schema: + $ref: '#/definitions/ibc.core.channel.v1.MsgTimeout' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/ibc.core.channel.v1.MsgTimeoutResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /ibc.core.channel.v1.Msg/TimeoutOnClose: + post: + tags: + - Msg + summary: TimeoutOnClose defines a rpc handler method for MsgTimeoutOnClose. + operationId: FeeMsg_TimeoutOnClose + parameters: + - description: MsgTimeoutOnClose timed-out packet upon counterparty channel closure. + name: body + in: body + required: true + schema: + $ref: '#/definitions/ibc.core.channel.v1.MsgTimeoutOnClose' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/ibc.core.channel.v1.MsgTimeoutOnCloseResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /ibc.core.channel.v1.Msg/UpdateChannelParams: + post: + tags: + - Msg + summary: UpdateChannelParams defines a rpc handler method for MsgUpdateParams. + operationId: FeeMsg_UpdateChannelParams + parameters: + - description: MsgUpdateParams is the MsgUpdateParams request type. + name: body + in: body + required: true + schema: + $ref: '#/definitions/ibc.core.channel.v1.MsgUpdateParams' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/ibc.core.channel.v1.MsgUpdateParamsResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /ibc.core.client.v1.Msg/CreateClient: + post: + tags: + - Msg + summary: CreateClient defines a rpc handler method for MsgCreateClient. + operationId: FeeMsg_CreateClient + parameters: + - name: body + in: body + required: true + schema: + $ref: '#/definitions/ibc.core.client.v1.MsgCreateClient' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/ibc.core.client.v1.MsgCreateClientResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /ibc.core.client.v1.Msg/IBCSoftwareUpgrade: + post: + tags: + - Msg + summary: IBCSoftwareUpgrade defines a rpc handler method for MsgIBCSoftwareUpgrade. + operationId: FeeMsg_IBCSoftwareUpgrade + parameters: + - name: body + in: body + required: true + schema: + $ref: '#/definitions/ibc.core.client.v1.MsgIBCSoftwareUpgrade' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/ibc.core.client.v1.MsgIBCSoftwareUpgradeResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /ibc.core.client.v1.Msg/RecoverClient: + post: + tags: + - Msg + summary: RecoverClient defines a rpc handler method for MsgRecoverClient. + operationId: FeeMsg_RecoverClient + parameters: + - description: MsgRecoverClient defines the message used to recover a frozen or expired client. + name: body + in: body + required: true + schema: + $ref: '#/definitions/ibc.core.client.v1.MsgRecoverClient' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/ibc.core.client.v1.MsgRecoverClientResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /ibc.core.client.v1.Msg/SubmitMisbehaviour: + post: + tags: + - Msg + summary: SubmitMisbehaviour defines a rpc handler method for MsgSubmitMisbehaviour. + operationId: FeeMsg_SubmitMisbehaviour + parameters: + - description: |- + MsgSubmitMisbehaviour defines an sdk.Msg type that submits Evidence for + light client misbehaviour. + This message has been deprecated. Use MsgUpdateClient instead. + name: body + in: body + required: true + schema: + $ref: '#/definitions/ibc.core.client.v1.MsgSubmitMisbehaviour' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/ibc.core.client.v1.MsgSubmitMisbehaviourResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /ibc.core.client.v1.Msg/UpdateClient: + post: + tags: + - Msg + summary: UpdateClient defines a rpc handler method for MsgUpdateClient. + operationId: FeeMsg_UpdateClient + parameters: + - description: |- + MsgUpdateClient defines an sdk.Msg to update a IBC client state using + the given client message. + name: body + in: body + required: true + schema: + $ref: '#/definitions/ibc.core.client.v1.MsgUpdateClient' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/ibc.core.client.v1.MsgUpdateClientResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /ibc.core.client.v1.Msg/UpdateClientParams: + post: + tags: + - Msg + summary: UpdateClientParams defines a rpc handler method for MsgUpdateParams. + operationId: FeeMsg_UpdateClientParams + parameters: + - description: MsgUpdateParams defines the sdk.Msg type to update the client parameters. + name: body + in: body + required: true + schema: + $ref: '#/definitions/ibc.core.client.v1.MsgUpdateParams' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/ibc.core.client.v1.MsgUpdateParamsResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /ibc.core.client.v1.Msg/UpgradeClient: + post: + tags: + - Msg + summary: UpgradeClient defines a rpc handler method for MsgUpgradeClient. + operationId: FeeMsg_UpgradeClient + parameters: + - name: body + in: body + required: true + schema: + $ref: '#/definitions/ibc.core.client.v1.MsgUpgradeClient' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/ibc.core.client.v1.MsgUpgradeClientResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /ibc.core.connection.v1.Msg/ConnectionOpenAck: + post: + tags: + - Msg + summary: ConnectionOpenAck defines a rpc handler method for MsgConnectionOpenAck. + operationId: FeeMsg_ConnectionOpenAck + parameters: + - description: |- + MsgConnectionOpenAck defines a msg sent by a Relayer to Chain A to + acknowledge the change of connection state to TRYOPEN on Chain B. + name: body + in: body + required: true + schema: + $ref: '#/definitions/ibc.core.connection.v1.MsgConnectionOpenAck' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/ibc.core.connection.v1.MsgConnectionOpenAckResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /ibc.core.connection.v1.Msg/ConnectionOpenConfirm: + post: + tags: + - Msg + summary: |- + ConnectionOpenConfirm defines a rpc handler method for + MsgConnectionOpenConfirm. + operationId: FeeMsg_ConnectionOpenConfirm + parameters: + - description: |- + MsgConnectionOpenConfirm defines a msg sent by a Relayer to Chain B to + acknowledge the change of connection state to OPEN on Chain A. + name: body + in: body + required: true + schema: + $ref: '#/definitions/ibc.core.connection.v1.MsgConnectionOpenConfirm' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/ibc.core.connection.v1.MsgConnectionOpenConfirmResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /ibc.core.connection.v1.Msg/ConnectionOpenInit: + post: + tags: + - Msg + summary: ConnectionOpenInit defines a rpc handler method for MsgConnectionOpenInit. + operationId: FeeMsg_ConnectionOpenInit + parameters: + - description: |- + MsgConnectionOpenInit defines the msg sent by an account on Chain A to + initialize a connection with Chain B. + name: body + in: body + required: true + schema: + $ref: '#/definitions/ibc.core.connection.v1.MsgConnectionOpenInit' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/ibc.core.connection.v1.MsgConnectionOpenInitResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /ibc.core.connection.v1.Msg/ConnectionOpenTry: + post: + tags: + - Msg + summary: ConnectionOpenTry defines a rpc handler method for MsgConnectionOpenTry. + operationId: FeeMsg_ConnectionOpenTry + parameters: + - description: |- + MsgConnectionOpenTry defines a msg sent by a Relayer to try to open a + connection on Chain B. + name: body + in: body + required: true + schema: + $ref: '#/definitions/ibc.core.connection.v1.MsgConnectionOpenTry' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/ibc.core.connection.v1.MsgConnectionOpenTryResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /ibc.core.connection.v1.Msg/UpdateConnectionParams: + post: + tags: + - Msg + summary: |- + UpdateConnectionParams defines a rpc handler method for + MsgUpdateParams. + operationId: FeeMsg_UpdateConnectionParams + parameters: + - description: MsgUpdateParams defines the sdk.Msg type to update the connection parameters. + name: body + in: body + required: true + schema: + $ref: '#/definitions/ibc.core.connection.v1.MsgUpdateParams' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/ibc.core.connection.v1.MsgUpdateParamsResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /ibc.lightclients.wasm.v1.Msg/MigrateContract: + post: + tags: + - Msg + summary: MigrateContract defines a rpc handler method for MsgMigrateContract. + operationId: FeeMsg_MigrateContract + parameters: + - description: MsgMigrateContract defines the request type for the MigrateContract rpc. + name: body + in: body + required: true + schema: + $ref: '#/definitions/ibc.lightclients.wasm.v1.MsgMigrateContract' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/ibc.lightclients.wasm.v1.MsgMigrateContractResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /ibc.lightclients.wasm.v1.Msg/RemoveChecksum: + post: + tags: + - Msg + summary: RemoveChecksum defines a rpc handler method for MsgRemoveChecksum. + operationId: FeeMsg_RemoveChecksum + parameters: + - description: MsgRemoveChecksum defines the request type for the MsgRemoveChecksum rpc. + name: body + in: body + required: true + schema: + $ref: '#/definitions/ibc.lightclients.wasm.v1.MsgRemoveChecksum' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/ibc.lightclients.wasm.v1.MsgRemoveChecksumResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /ibc.lightclients.wasm.v1.Msg/StoreCode: + post: + tags: + - Msg + summary: StoreCode defines a rpc handler method for MsgStoreCode. + operationId: FeeMsg_StoreCode + parameters: + - description: MsgStoreCode defines the request type for the StoreCode rpc. + name: body + in: body + required: true + schema: + $ref: '#/definitions/ibc.lightclients.wasm.v1.MsgStoreCode' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/ibc.lightclients.wasm.v1.MsgStoreCodeResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /ibc/apps/fee/v1/channels/{channel_id}/ports/{port_id}/fee_enabled: + get: + tags: + - Query + summary: FeeEnabledChannel returns true if the provided port and channel identifiers belong to a fee enabled channel + operationId: FeeQuery_FeeEnabledChannel + parameters: + - type: string + description: unique channel identifier + name: channel_id + in: path + required: true + - type: string + description: unique port identifier + name: port_id + in: path + required: true + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/ibc.applications.fee.v1.QueryFeeEnabledChannelResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /ibc/apps/fee/v1/channels/{channel_id}/ports/{port_id}/incentivized_packets: + get: + tags: + - Query + summary: Gets all incentivized packets for a specific channel + operationId: FeeQuery_IncentivizedPacketsForChannel + parameters: + - type: string + name: channel_id + in: path + required: true + - type: string + name: port_id + in: path + required: true + - type: string + format: byte + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + name: pagination.key + in: query + - type: string + format: uint64 + description: |- + offset is a numeric offset that can be used when key is unavailable. + It is less efficient than using key. Only one of offset or key should + be set. + name: pagination.offset + in: query + - type: string + format: uint64 + description: |- + limit is the total number of results to be returned in the result page. + If left empty it will default to a value to be set by each app. + name: pagination.limit + in: query + - type: boolean + description: |- + count_total is set to true to indicate that the result set should include + a count of the total number of items available for pagination in UIs. + count_total is only respected when offset is used. It is ignored when key + is set. + name: pagination.count_total + in: query + - type: boolean + description: |- + reverse is set to true if results are to be returned in the descending order. + + Since: cosmos-sdk 0.43 + name: pagination.reverse + in: query + - type: string + format: uint64 + description: Height to query at + name: query_height + in: query + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/ibc.applications.fee.v1.QueryIncentivizedPacketsForChannelResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /ibc/apps/fee/v1/channels/{channel_id}/relayers/{relayer}/counterparty_payee: + get: + tags: + - Query + summary: CounterpartyPayee returns the registered counterparty payee for forward relaying + operationId: FeeQuery_CounterpartyPayee + parameters: + - type: string + description: unique channel identifier + name: channel_id + in: path + required: true + - type: string + description: the relayer address to which the counterparty is registered + name: relayer + in: path + required: true + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/ibc.applications.fee.v1.QueryCounterpartyPayeeResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /ibc/apps/fee/v1/channels/{channel_id}/relayers/{relayer}/payee: + get: + tags: + - Query + summary: Payee returns the registered payee address for a specific channel given the relayer address + operationId: FeeQuery_Payee + parameters: + - type: string + description: unique channel identifier + name: channel_id + in: path + required: true + - type: string + description: the relayer address to which the distribution address is registered + name: relayer + in: path + required: true + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/ibc.applications.fee.v1.QueryPayeeResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /ibc/apps/fee/v1/channels/{packet_id.channel_id}/ports/{packet_id.port_id}/sequences/{packet_id.sequence}/incentivized_packet: + get: + tags: + - Query + summary: IncentivizedPacket returns all packet fees for a packet given its identifier + operationId: FeeQuery_IncentivizedPacket + parameters: + - type: string + description: channel unique identifier + name: packet_id.channel_id + in: path + required: true + - type: string + description: channel port identifier + name: packet_id.port_id + in: path + required: true + - type: string + format: uint64 + description: packet sequence + name: packet_id.sequence + in: path + required: true + - type: string + format: uint64 + description: block height at which to query + name: query_height + in: query + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/ibc.applications.fee.v1.QueryIncentivizedPacketResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /ibc/apps/fee/v1/channels/{packet_id.channel_id}/ports/{packet_id.port_id}/sequences/{packet_id.sequence}/total_ack_fees: + get: + tags: + - Query + summary: TotalAckFees returns the total acknowledgement fees for a packet given its identifier + operationId: FeeQuery_TotalAckFees + parameters: + - type: string + description: channel unique identifier + name: packet_id.channel_id + in: path + required: true + - type: string + description: channel port identifier + name: packet_id.port_id + in: path + required: true + - type: string + format: uint64 + description: packet sequence + name: packet_id.sequence + in: path + required: true + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/ibc.applications.fee.v1.QueryTotalAckFeesResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /ibc/apps/fee/v1/channels/{packet_id.channel_id}/ports/{packet_id.port_id}/sequences/{packet_id.sequence}/total_recv_fees: + get: + tags: + - Query + summary: TotalRecvFees returns the total receive fees for a packet given its identifier + operationId: FeeQuery_TotalRecvFees + parameters: + - type: string + description: channel unique identifier + name: packet_id.channel_id + in: path + required: true + - type: string + description: channel port identifier + name: packet_id.port_id + in: path + required: true + - type: string + format: uint64 + description: packet sequence + name: packet_id.sequence + in: path + required: true + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/ibc.applications.fee.v1.QueryTotalRecvFeesResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /ibc/apps/fee/v1/channels/{packet_id.channel_id}/ports/{packet_id.port_id}/sequences/{packet_id.sequence}/total_timeout_fees: + get: + tags: + - Query + summary: TotalTimeoutFees returns the total timeout fees for a packet given its identifier + operationId: FeeQuery_TotalTimeoutFees + parameters: + - type: string + description: channel unique identifier + name: packet_id.channel_id + in: path + required: true + - type: string + description: channel port identifier + name: packet_id.port_id + in: path + required: true + - type: string + format: uint64 + description: packet sequence + name: packet_id.sequence + in: path + required: true + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/ibc.applications.fee.v1.QueryTotalTimeoutFeesResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /ibc/apps/fee/v1/fee_enabled: + get: + tags: + - Query + summary: FeeEnabledChannels returns a list of all fee enabled channels + operationId: FeeQuery_FeeEnabledChannels + parameters: + - type: string + format: byte + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + name: pagination.key + in: query + - type: string + format: uint64 + description: |- + offset is a numeric offset that can be used when key is unavailable. + It is less efficient than using key. Only one of offset or key should + be set. + name: pagination.offset + in: query + - type: string + format: uint64 + description: |- + limit is the total number of results to be returned in the result page. + If left empty it will default to a value to be set by each app. + name: pagination.limit + in: query + - type: boolean + description: |- + count_total is set to true to indicate that the result set should include + a count of the total number of items available for pagination in UIs. + count_total is only respected when offset is used. It is ignored when key + is set. + name: pagination.count_total + in: query + - type: boolean + description: |- + reverse is set to true if results are to be returned in the descending order. + + Since: cosmos-sdk 0.43 + name: pagination.reverse + in: query + - type: string + format: uint64 + description: block height at which to query + name: query_height + in: query + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/ibc.applications.fee.v1.QueryFeeEnabledChannelsResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /ibc/apps/fee/v1/incentivized_packets: + get: + tags: + - Query + summary: IncentivizedPackets returns all incentivized packets and their associated fees + operationId: FeeQuery_IncentivizedPackets + parameters: + - type: string + format: byte + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + name: pagination.key + in: query + - type: string + format: uint64 + description: |- + offset is a numeric offset that can be used when key is unavailable. + It is less efficient than using key. Only one of offset or key should + be set. + name: pagination.offset + in: query + - type: string + format: uint64 + description: |- + limit is the total number of results to be returned in the result page. + If left empty it will default to a value to be set by each app. + name: pagination.limit + in: query + - type: boolean + description: |- + count_total is set to true to indicate that the result set should include + a count of the total number of items available for pagination in UIs. + count_total is only respected when offset is used. It is ignored when key + is set. + name: pagination.count_total + in: query + - type: boolean + description: |- + reverse is set to true if results are to be returned in the descending order. + + Since: cosmos-sdk 0.43 + name: pagination.reverse + in: query + - type: string + format: uint64 + description: block height at which to query + name: query_height + in: query + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/ibc.applications.fee.v1.QueryIncentivizedPacketsResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /ibc/apps/interchain_accounts/controller/v1/owners/{owner}/connections/{connection_id}: + get: + tags: + - Query + summary: InterchainAccount returns the interchain account address for a given owner address on a given connection + operationId: FeeQuery_InterchainAccount + parameters: + - type: string + name: owner + in: path + required: true + - type: string + name: connection_id + in: path + required: true + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/ibc.applications.interchain_accounts.controller.v1.QueryInterchainAccountResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /ibc/apps/interchain_accounts/controller/v1/params: + get: + tags: + - Query + summary: Params queries all parameters of the ICA controller submodule. + operationId: FeeQuery_Params + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/ibc.applications.interchain_accounts.controller.v1.QueryParamsResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /ibc/apps/interchain_accounts/host/v1/params: + get: + tags: + - Query + summary: Params queries all parameters of the ICA host submodule. + operationId: FeeQuery_ParamsMixin171 + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/ibc.applications.interchain_accounts.host.v1.QueryParamsResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /ibc/apps/transfer/v1/channels/{channel_id}/ports/{port_id}/escrow_address: + get: + tags: + - Query + summary: EscrowAddress returns the escrow address for a particular port and channel id. + operationId: FeeQuery_EscrowAddress + parameters: + - type: string + description: unique channel identifier + name: channel_id + in: path + required: true + - type: string + description: unique port identifier + name: port_id + in: path + required: true + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/ibc.applications.transfer.v1.QueryEscrowAddressResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /ibc/apps/transfer/v1/denom_hashes/{trace}: + get: + tags: + - Query + summary: DenomHash queries a denomination hash information. + operationId: FeeQuery_DenomHash + parameters: + - pattern: .+ + type: string + description: The denomination trace ([port_id]/[channel_id])+/[denom] + name: trace + in: path + required: true + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/ibc.applications.transfer.v1.QueryDenomHashResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /ibc/apps/transfer/v1/denom_traces: + get: + tags: + - Query + summary: DenomTraces queries all denomination traces. + operationId: FeeQuery_DenomTraces + parameters: + - type: string + format: byte + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + name: pagination.key + in: query + - type: string + format: uint64 + description: |- + offset is a numeric offset that can be used when key is unavailable. + It is less efficient than using key. Only one of offset or key should + be set. + name: pagination.offset + in: query + - type: string + format: uint64 + description: |- + limit is the total number of results to be returned in the result page. + If left empty it will default to a value to be set by each app. + name: pagination.limit + in: query + - type: boolean + description: |- + count_total is set to true to indicate that the result set should include + a count of the total number of items available for pagination in UIs. + count_total is only respected when offset is used. It is ignored when key + is set. + name: pagination.count_total + in: query + - type: boolean + description: |- + reverse is set to true if results are to be returned in the descending order. + + Since: cosmos-sdk 0.43 + name: pagination.reverse + in: query + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/ibc.applications.transfer.v1.QueryDenomTracesResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /ibc/apps/transfer/v1/denom_traces/{hash}: + get: + tags: + - Query + summary: DenomTrace queries a denomination trace information. + operationId: FeeQuery_DenomTrace + parameters: + - pattern: .+ + type: string + description: hash (in hex format) or denom (full denom with ibc prefix) of the denomination trace information. + name: hash + in: path + required: true + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/ibc.applications.transfer.v1.QueryDenomTraceResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /ibc/apps/transfer/v1/denoms/{denom}/total_escrow: + get: + tags: + - Query + summary: TotalEscrowForDenom returns the total amount of tokens in escrow based on the denom. + operationId: FeeQuery_TotalEscrowForDenom + parameters: + - pattern: .+ + type: string + name: denom + in: path + required: true + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/ibc.applications.transfer.v1.QueryTotalEscrowForDenomResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /ibc/apps/transfer/v1/params: + get: + tags: + - Query + summary: Params queries all parameters of the ibc-transfer module. + operationId: FeeQuery_ParamsMixin178 + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/ibc.applications.transfer.v1.QueryParamsResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /ibc/core/channel/v1/channels: + get: + tags: + - Query + summary: Channels queries all the IBC channels of a chain. + operationId: FeeQuery_Channels + parameters: + - type: string + format: byte + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + name: pagination.key + in: query + - type: string + format: uint64 + description: |- + offset is a numeric offset that can be used when key is unavailable. + It is less efficient than using key. Only one of offset or key should + be set. + name: pagination.offset + in: query + - type: string + format: uint64 + description: |- + limit is the total number of results to be returned in the result page. + If left empty it will default to a value to be set by each app. + name: pagination.limit + in: query + - type: boolean + description: |- + count_total is set to true to indicate that the result set should include + a count of the total number of items available for pagination in UIs. + count_total is only respected when offset is used. It is ignored when key + is set. + name: pagination.count_total + in: query + - type: boolean + description: |- + reverse is set to true if results are to be returned in the descending order. + + Since: cosmos-sdk 0.43 + name: pagination.reverse + in: query + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/ibc.core.channel.v1.QueryChannelsResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}: + get: + tags: + - Query + summary: Channel queries an IBC Channel. + operationId: FeeQuery_Channel + parameters: + - type: string + description: channel unique identifier + name: channel_id + in: path + required: true + - type: string + description: port unique identifier + name: port_id + in: path + required: true + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/ibc.core.channel.v1.QueryChannelResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/client_state: + get: + tags: + - Query + summary: |- + ChannelClientState queries for the client state for the channel associated + with the provided channel identifiers. + operationId: FeeQuery_ChannelClientState + parameters: + - type: string + description: channel unique identifier + name: channel_id + in: path + required: true + - type: string + description: port unique identifier + name: port_id + in: path + required: true + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/ibc.core.channel.v1.QueryChannelClientStateResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/consensus_state/revision/{revision_number}/height/{revision_height}: + get: + tags: + - Query + summary: |- + ChannelConsensusState queries for the consensus state for the channel + associated with the provided channel identifiers. + operationId: FeeQuery_ChannelConsensusState + parameters: + - type: string + description: channel unique identifier + name: channel_id + in: path + required: true + - type: string + description: port unique identifier + name: port_id + in: path + required: true + - type: string + format: uint64 + description: revision number of the consensus state + name: revision_number + in: path + required: true + - type: string + format: uint64 + description: revision height of the consensus state + name: revision_height + in: path + required: true + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/ibc.core.channel.v1.QueryChannelConsensusStateResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/next_sequence: + get: + tags: + - Query + summary: NextSequenceReceive returns the next receive sequence for a given channel. + operationId: FeeQuery_NextSequenceReceive + parameters: + - type: string + description: channel unique identifier + name: channel_id + in: path + required: true + - type: string + description: port unique identifier + name: port_id + in: path + required: true + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/ibc.core.channel.v1.QueryNextSequenceReceiveResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/next_sequence_send: + get: + tags: + - Query + summary: NextSequenceSend returns the next send sequence for a given channel. + operationId: FeeQuery_NextSequenceSend + parameters: + - type: string + description: channel unique identifier + name: channel_id + in: path + required: true + - type: string + description: port unique identifier + name: port_id + in: path + required: true + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/ibc.core.channel.v1.QueryNextSequenceSendResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/packet_acknowledgements: + get: + tags: + - Query + summary: |- + PacketAcknowledgements returns all the packet acknowledgements associated + with a channel. + operationId: FeeQuery_PacketAcknowledgements + parameters: + - type: string + description: channel unique identifier + name: channel_id + in: path + required: true + - type: string + description: port unique identifier + name: port_id + in: path + required: true + - type: string + format: byte + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + name: pagination.key + in: query + - type: string + format: uint64 + description: |- + offset is a numeric offset that can be used when key is unavailable. + It is less efficient than using key. Only one of offset or key should + be set. + name: pagination.offset + in: query + - type: string + format: uint64 + description: |- + limit is the total number of results to be returned in the result page. + If left empty it will default to a value to be set by each app. + name: pagination.limit + in: query + - type: boolean + description: |- + count_total is set to true to indicate that the result set should include + a count of the total number of items available for pagination in UIs. + count_total is only respected when offset is used. It is ignored when key + is set. + name: pagination.count_total + in: query + - type: boolean + description: |- + reverse is set to true if results are to be returned in the descending order. + + Since: cosmos-sdk 0.43 + name: pagination.reverse + in: query + - type: array + items: + type: string + format: uint64 + collectionFormat: multi + description: list of packet sequences + name: packet_commitment_sequences + in: query + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/ibc.core.channel.v1.QueryPacketAcknowledgementsResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/packet_acks/{sequence}: + get: + tags: + - Query + summary: PacketAcknowledgement queries a stored packet acknowledgement hash. + operationId: FeeQuery_PacketAcknowledgement + parameters: + - type: string + description: channel unique identifier + name: channel_id + in: path + required: true + - type: string + description: port unique identifier + name: port_id + in: path + required: true + - type: string + format: uint64 + description: packet sequence + name: sequence + in: path + required: true + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/ibc.core.channel.v1.QueryPacketAcknowledgementResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/packet_commitments: + get: + tags: + - Query + summary: |- + PacketCommitments returns all the packet commitments hashes associated + with a channel. + operationId: FeeQuery_PacketCommitments + parameters: + - type: string + description: channel unique identifier + name: channel_id + in: path + required: true + - type: string + description: port unique identifier + name: port_id + in: path + required: true + - type: string + format: byte + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + name: pagination.key + in: query + - type: string + format: uint64 + description: |- + offset is a numeric offset that can be used when key is unavailable. + It is less efficient than using key. Only one of offset or key should + be set. + name: pagination.offset + in: query + - type: string + format: uint64 + description: |- + limit is the total number of results to be returned in the result page. + If left empty it will default to a value to be set by each app. + name: pagination.limit + in: query + - type: boolean + description: |- + count_total is set to true to indicate that the result set should include + a count of the total number of items available for pagination in UIs. + count_total is only respected when offset is used. It is ignored when key + is set. + name: pagination.count_total + in: query + - type: boolean + description: |- + reverse is set to true if results are to be returned in the descending order. + + Since: cosmos-sdk 0.43 + name: pagination.reverse + in: query + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/ibc.core.channel.v1.QueryPacketCommitmentsResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/packet_commitments/{packet_ack_sequences}/unreceived_acks: + get: + tags: + - Query + summary: |- + UnreceivedAcks returns all the unreceived IBC acknowledgements associated + with a channel and sequences. + operationId: FeeQuery_UnreceivedAcks + parameters: + - type: string + description: channel unique identifier + name: channel_id + in: path + required: true + - type: string + description: port unique identifier + name: port_id + in: path + required: true + - minItems: 1 + type: array + items: + type: string + format: uint64 + collectionFormat: csv + description: list of acknowledgement sequences + name: packet_ack_sequences + in: path + required: true + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/ibc.core.channel.v1.QueryUnreceivedAcksResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/packet_commitments/{packet_commitment_sequences}/unreceived_packets: + get: + tags: + - Query + summary: |- + UnreceivedPackets returns all the unreceived IBC packets associated with a + channel and sequences. + operationId: FeeQuery_UnreceivedPackets + parameters: + - type: string + description: channel unique identifier + name: channel_id + in: path + required: true + - type: string + description: port unique identifier + name: port_id + in: path + required: true + - minItems: 1 + type: array + items: + type: string + format: uint64 + collectionFormat: csv + description: list of packet sequences + name: packet_commitment_sequences + in: path + required: true + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/ibc.core.channel.v1.QueryUnreceivedPacketsResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/packet_commitments/{sequence}: + get: + tags: + - Query + summary: PacketCommitment queries a stored packet commitment hash. + operationId: FeeQuery_PacketCommitment + parameters: + - type: string + description: channel unique identifier + name: channel_id + in: path + required: true + - type: string + description: port unique identifier + name: port_id + in: path + required: true + - type: string + format: uint64 + description: packet sequence + name: sequence + in: path + required: true + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/ibc.core.channel.v1.QueryPacketCommitmentResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/packet_receipts/{sequence}: + get: + tags: + - Query + summary: |- + PacketReceipt queries if a given packet sequence has been received on the + queried chain + operationId: FeeQuery_PacketReceipt + parameters: + - type: string + description: channel unique identifier + name: channel_id + in: path + required: true + - type: string + description: port unique identifier + name: port_id + in: path + required: true + - type: string + format: uint64 + description: packet sequence + name: sequence + in: path + required: true + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/ibc.core.channel.v1.QueryPacketReceiptResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/upgrade: + get: + tags: + - Query + summary: Upgrade returns the upgrade for a given port and channel id. + operationId: FeeQuery_Upgrade + parameters: + - type: string + name: channel_id + in: path + required: true + - type: string + name: port_id + in: path + required: true + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/ibc.core.channel.v1.QueryUpgradeResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/upgrade_error: + get: + tags: + - Query + summary: UpgradeError returns the error receipt if the upgrade handshake failed. + operationId: FeeQuery_UpgradeError + parameters: + - type: string + name: channel_id + in: path + required: true + - type: string + name: port_id + in: path + required: true + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/ibc.core.channel.v1.QueryUpgradeErrorResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /ibc/core/channel/v1/connections/{connection}/channels: + get: + tags: + - Query + summary: |- + ConnectionChannels queries all the channels associated with a connection + end. + operationId: FeeQuery_ConnectionChannels + parameters: + - type: string + description: connection unique identifier + name: connection + in: path + required: true + - type: string + format: byte + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + name: pagination.key + in: query + - type: string + format: uint64 + description: |- + offset is a numeric offset that can be used when key is unavailable. + It is less efficient than using key. Only one of offset or key should + be set. + name: pagination.offset + in: query + - type: string + format: uint64 + description: |- + limit is the total number of results to be returned in the result page. + If left empty it will default to a value to be set by each app. + name: pagination.limit + in: query + - type: boolean + description: |- + count_total is set to true to indicate that the result set should include + a count of the total number of items available for pagination in UIs. + count_total is only respected when offset is used. It is ignored when key + is set. + name: pagination.count_total + in: query + - type: boolean + description: |- + reverse is set to true if results are to be returned in the descending order. + + Since: cosmos-sdk 0.43 + name: pagination.reverse + in: query + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/ibc.core.channel.v1.QueryConnectionChannelsResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /ibc/core/channel/v1/params: + get: + tags: + - Query + summary: ChannelParams queries all parameters of the ibc channel submodule. + operationId: FeeQuery_ChannelParams + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/ibc.core.channel.v1.QueryChannelParamsResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /ibc/core/client/v1/client_states: + get: + tags: + - Query + summary: ClientStates queries all the IBC light clients of a chain. + operationId: FeeQuery_ClientStates + parameters: + - type: string + format: byte + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + name: pagination.key + in: query + - type: string + format: uint64 + description: |- + offset is a numeric offset that can be used when key is unavailable. + It is less efficient than using key. Only one of offset or key should + be set. + name: pagination.offset + in: query + - type: string + format: uint64 + description: |- + limit is the total number of results to be returned in the result page. + If left empty it will default to a value to be set by each app. + name: pagination.limit + in: query + - type: boolean + description: |- + count_total is set to true to indicate that the result set should include + a count of the total number of items available for pagination in UIs. + count_total is only respected when offset is used. It is ignored when key + is set. + name: pagination.count_total + in: query + - type: boolean + description: |- + reverse is set to true if results are to be returned in the descending order. + + Since: cosmos-sdk 0.43 + name: pagination.reverse + in: query + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/ibc.core.client.v1.QueryClientStatesResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /ibc/core/client/v1/client_states/{client_id}: + get: + tags: + - Query + summary: ClientState queries an IBC light client. + operationId: FeeQuery_ClientState + parameters: + - type: string + description: client state unique identifier + name: client_id + in: path + required: true + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/ibc.core.client.v1.QueryClientStateResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /ibc/core/client/v1/client_status/{client_id}: + get: + tags: + - Query + summary: Status queries the status of an IBC client. + operationId: FeeQuery_ClientStatus + parameters: + - type: string + description: client unique identifier + name: client_id + in: path + required: true + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/ibc.core.client.v1.QueryClientStatusResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /ibc/core/client/v1/consensus_states/{client_id}: + get: + tags: + - Query + summary: |- + ConsensusStates queries all the consensus state associated with a given + client. + operationId: FeeQuery_ConsensusStates + parameters: + - type: string + description: client identifier + name: client_id + in: path + required: true + - type: string + format: byte + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + name: pagination.key + in: query + - type: string + format: uint64 + description: |- + offset is a numeric offset that can be used when key is unavailable. + It is less efficient than using key. Only one of offset or key should + be set. + name: pagination.offset + in: query + - type: string + format: uint64 + description: |- + limit is the total number of results to be returned in the result page. + If left empty it will default to a value to be set by each app. + name: pagination.limit + in: query + - type: boolean + description: |- + count_total is set to true to indicate that the result set should include + a count of the total number of items available for pagination in UIs. + count_total is only respected when offset is used. It is ignored when key + is set. + name: pagination.count_total + in: query + - type: boolean + description: |- + reverse is set to true if results are to be returned in the descending order. + + Since: cosmos-sdk 0.43 + name: pagination.reverse + in: query + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/ibc.core.client.v1.QueryConsensusStatesResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /ibc/core/client/v1/consensus_states/{client_id}/heights: + get: + tags: + - Query + summary: ConsensusStateHeights queries the height of every consensus states associated with a given client. + operationId: FeeQuery_ConsensusStateHeights + parameters: + - type: string + description: client identifier + name: client_id + in: path + required: true + - type: string + format: byte + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + name: pagination.key + in: query + - type: string + format: uint64 + description: |- + offset is a numeric offset that can be used when key is unavailable. + It is less efficient than using key. Only one of offset or key should + be set. + name: pagination.offset + in: query + - type: string + format: uint64 + description: |- + limit is the total number of results to be returned in the result page. + If left empty it will default to a value to be set by each app. + name: pagination.limit + in: query + - type: boolean + description: |- + count_total is set to true to indicate that the result set should include + a count of the total number of items available for pagination in UIs. + count_total is only respected when offset is used. It is ignored when key + is set. + name: pagination.count_total + in: query + - type: boolean + description: |- + reverse is set to true if results are to be returned in the descending order. + + Since: cosmos-sdk 0.43 + name: pagination.reverse + in: query + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/ibc.core.client.v1.QueryConsensusStateHeightsResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /ibc/core/client/v1/consensus_states/{client_id}/revision/{revision_number}/height/{revision_height}: + get: + tags: + - Query + summary: |- + ConsensusState queries a consensus state associated with a client state at + a given height. + operationId: FeeQuery_ConsensusState + parameters: + - type: string + description: client identifier + name: client_id + in: path + required: true + - type: string + format: uint64 + description: consensus state revision number + name: revision_number + in: path + required: true + - type: string + format: uint64 + description: consensus state revision height + name: revision_height + in: path + required: true + - type: boolean + description: |- + latest_height overrrides the height field and queries the latest stored + ConsensusState + name: latest_height + in: query + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/ibc.core.client.v1.QueryConsensusStateResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /ibc/core/client/v1/params: + get: + tags: + - Query + summary: ClientParams queries all parameters of the ibc client submodule. + operationId: FeeQuery_ClientParams + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/ibc.core.client.v1.QueryClientParamsResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /ibc/core/client/v1/upgraded_client_states: + get: + tags: + - Query + summary: UpgradedClientState queries an Upgraded IBC light client. + operationId: FeeQuery_UpgradedClientState + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/ibc.core.client.v1.QueryUpgradedClientStateResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /ibc/core/client/v1/upgraded_consensus_states: + get: + tags: + - Query + summary: UpgradedConsensusState queries an Upgraded IBC consensus state. + operationId: FeeQuery_UpgradedConsensusState + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/ibc.core.client.v1.QueryUpgradedConsensusStateResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /ibc/core/connection/v1/client_connections/{client_id}: + get: + tags: + - Query + summary: |- + ClientConnections queries the connection paths associated with a client + state. + operationId: FeeQuery_ClientConnections + parameters: + - type: string + description: client identifier associated with a connection + name: client_id + in: path + required: true + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/ibc.core.connection.v1.QueryClientConnectionsResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /ibc/core/connection/v1/connections: + get: + tags: + - Query + summary: Connections queries all the IBC connections of a chain. + operationId: FeeQuery_Connections + parameters: + - type: string + format: byte + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + name: pagination.key + in: query + - type: string + format: uint64 + description: |- + offset is a numeric offset that can be used when key is unavailable. + It is less efficient than using key. Only one of offset or key should + be set. + name: pagination.offset + in: query + - type: string + format: uint64 + description: |- + limit is the total number of results to be returned in the result page. + If left empty it will default to a value to be set by each app. + name: pagination.limit + in: query + - type: boolean + description: |- + count_total is set to true to indicate that the result set should include + a count of the total number of items available for pagination in UIs. + count_total is only respected when offset is used. It is ignored when key + is set. + name: pagination.count_total + in: query + - type: boolean + description: |- + reverse is set to true if results are to be returned in the descending order. + + Since: cosmos-sdk 0.43 + name: pagination.reverse + in: query + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/ibc.core.connection.v1.QueryConnectionsResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /ibc/core/connection/v1/connections/{connection_id}: + get: + tags: + - Query + summary: Connection queries an IBC connection end. + operationId: FeeQuery_Connection + parameters: + - type: string + description: connection unique identifier + name: connection_id + in: path + required: true + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/ibc.core.connection.v1.QueryConnectionResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /ibc/core/connection/v1/connections/{connection_id}/client_state: + get: + tags: + - Query + summary: |- + ConnectionClientState queries the client state associated with the + connection. + operationId: FeeQuery_ConnectionClientState + parameters: + - type: string + description: connection identifier + name: connection_id + in: path + required: true + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/ibc.core.connection.v1.QueryConnectionClientStateResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /ibc/core/connection/v1/connections/{connection_id}/consensus_state/revision/{revision_number}/height/{revision_height}: + get: + tags: + - Query + summary: |- + ConnectionConsensusState queries the consensus state associated with the + connection. + operationId: FeeQuery_ConnectionConsensusState + parameters: + - type: string + description: connection identifier + name: connection_id + in: path + required: true + - type: string + format: uint64 + name: revision_number + in: path + required: true + - type: string + format: uint64 + name: revision_height + in: path + required: true + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/ibc.core.connection.v1.QueryConnectionConsensusStateResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /ibc/core/connection/v1/params: + get: + tags: + - Query + summary: ConnectionParams queries all parameters of the ibc connection submodule. + operationId: FeeQuery_ConnectionParams + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/ibc.core.connection.v1.QueryConnectionParamsResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /ibc/lightclients/wasm/v1/checksums: + get: + tags: + - Query + summary: Get all Wasm checksums + operationId: FeeQuery_Checksums + parameters: + - type: string + format: byte + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + name: pagination.key + in: query + - type: string + format: uint64 + description: |- + offset is a numeric offset that can be used when key is unavailable. + It is less efficient than using key. Only one of offset or key should + be set. + name: pagination.offset + in: query + - type: string + format: uint64 + description: |- + limit is the total number of results to be returned in the result page. + If left empty it will default to a value to be set by each app. + name: pagination.limit + in: query + - type: boolean + description: |- + count_total is set to true to indicate that the result set should include + a count of the total number of items available for pagination in UIs. + count_total is only respected when offset is used. It is ignored when key + is set. + name: pagination.count_total + in: query + - type: boolean + description: |- + reverse is set to true if results are to be returned in the descending order. + + Since: cosmos-sdk 0.43 + name: pagination.reverse + in: query + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/ibc.lightclients.wasm.v1.QueryChecksumsResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /ibc/lightclients/wasm/v1/checksums/{checksum}/code: + get: + tags: + - Query + summary: Get Wasm code for given checksum + operationId: FeeQuery_Code + parameters: + - type: string + description: checksum is a hex encoded string of the code stored. + name: checksum + in: path + required: true + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/ibc.lightclients.wasm.v1.QueryCodeResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /pokt-network/poktroll/application/application: + get: + tags: + - Query + operationId: GithubCompoktNetworkpoktrollQuery_AllApplications + parameters: + - type: string + format: byte + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + name: pagination.key + in: query + - type: string + format: uint64 + description: |- + offset is a numeric offset that can be used when key is unavailable. + It is less efficient than using key. Only one of offset or key should + be set. + name: pagination.offset + in: query + - type: string + format: uint64 + description: |- + limit is the total number of results to be returned in the result page. + If left empty it will default to a value to be set by each app. + name: pagination.limit + in: query + - type: boolean + description: |- + count_total is set to true to indicate that the result set should include + a count of the total number of items available for pagination in UIs. + count_total is only respected when offset is used. It is ignored when key + is set. + name: pagination.count_total + in: query + - type: boolean + description: |- + reverse is set to true if results are to be returned in the descending order. + + Since: cosmos-sdk 0.43 + name: pagination.reverse + in: query + - type: string + description: |- + TODO_MAINNET(@adshmh): rename this field to `gateway_address_delegated_to` + delegatee_gateway_address, if specified, filters the application list to only include those with delegation to the specified gateway address. + name: delegatee_gateway_address + in: query + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/poktroll.application.QueryAllApplicationsResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /pokt-network/poktroll/application/application/{address}: + get: + tags: + - Query + summary: Queries a list of Application items. + operationId: GithubCompoktNetworkpoktrollQuery_Application + parameters: + - type: string + name: address + in: path + required: true + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/poktroll.application.QueryGetApplicationResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /pokt-network/poktroll/application/params: + get: + tags: + - Query + summary: Parameters queries the parameters of the module. + operationId: GithubCompoktNetworkpoktrollQuery_Params + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/poktroll.application.QueryParamsResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /pokt-network/poktroll/gateway/gateway: + get: + tags: + - Query + operationId: GithubCompoktNetworkpoktrollQuery_AllGateways + parameters: + - type: string + format: byte + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + name: pagination.key + in: query + - type: string + format: uint64 + description: |- + offset is a numeric offset that can be used when key is unavailable. + It is less efficient than using key. Only one of offset or key should + be set. + name: pagination.offset + in: query + - type: string + format: uint64 + description: |- + limit is the total number of results to be returned in the result page. + If left empty it will default to a value to be set by each app. + name: pagination.limit + in: query + - type: boolean + description: |- + count_total is set to true to indicate that the result set should include + a count of the total number of items available for pagination in UIs. + count_total is only respected when offset is used. It is ignored when key + is set. + name: pagination.count_total + in: query + - type: boolean + description: |- + reverse is set to true if results are to be returned in the descending order. + + Since: cosmos-sdk 0.43 + name: pagination.reverse + in: query + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/poktroll.gateway.QueryAllGatewaysResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /pokt-network/poktroll/gateway/gateway/{address}: + get: + tags: + - Query + summary: Queries a list of Gateway items. + operationId: GithubCompoktNetworkpoktrollQuery_Gateway + parameters: + - type: string + name: address + in: path + required: true + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/poktroll.gateway.QueryGetGatewayResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /pokt-network/poktroll/gateway/params: + get: + tags: + - Query + summary: Parameters queries the parameters of the module. + operationId: GithubCompoktNetworkpoktrollQuery_ParamsMixin9 + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/poktroll.gateway.QueryParamsResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /pokt-network/poktroll/proof/claim: + get: + tags: + - Query + operationId: GithubCompoktNetworkpoktrollQuery_AllClaims + parameters: + - type: string + format: byte + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + name: pagination.key + in: query + - type: string + format: uint64 + description: |- + offset is a numeric offset that can be used when key is unavailable. + It is less efficient than using key. Only one of offset or key should + be set. + name: pagination.offset + in: query + - type: string + format: uint64 + description: |- + limit is the total number of results to be returned in the result page. + If left empty it will default to a value to be set by each app. + name: pagination.limit + in: query + - type: boolean + description: |- + count_total is set to true to indicate that the result set should include + a count of the total number of items available for pagination in UIs. + count_total is only respected when offset is used. It is ignored when key + is set. + name: pagination.count_total + in: query + - type: boolean + description: |- + reverse is set to true if results are to be returned in the descending order. + + Since: cosmos-sdk 0.43 + name: pagination.reverse + in: query + - type: string + name: supplier_operator_address + in: query + - type: string + name: session_id + in: query + - type: string + format: uint64 + name: session_end_height + in: query + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/poktroll.proof.QueryAllClaimsResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /pokt-network/poktroll/proof/claim/{session_id}/{supplier_operator_address}: + get: + tags: + - Query + summary: Queries a list of Claim items. + operationId: GithubCompoktNetworkpoktrollQuery_Claim + parameters: + - type: string + name: session_id + in: path + required: true + - type: string + name: supplier_operator_address + in: path + required: true + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/poktroll.proof.QueryGetClaimResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /pokt-network/poktroll/proof/params: + get: + tags: + - Query + summary: Parameters queries the parameters of the module. + operationId: GithubCompoktNetworkpoktrollQuery_ParamsMixin15 + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/poktroll.proof.QueryParamsResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /pokt-network/poktroll/proof/proof: + get: + tags: + - Query + operationId: GithubCompoktNetworkpoktrollQuery_AllProofs + parameters: + - type: string + format: byte + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + name: pagination.key + in: query + - type: string + format: uint64 + description: |- + offset is a numeric offset that can be used when key is unavailable. + It is less efficient than using key. Only one of offset or key should + be set. + name: pagination.offset + in: query + - type: string + format: uint64 + description: |- + limit is the total number of results to be returned in the result page. + If left empty it will default to a value to be set by each app. + name: pagination.limit + in: query + - type: boolean + description: |- + count_total is set to true to indicate that the result set should include + a count of the total number of items available for pagination in UIs. + count_total is only respected when offset is used. It is ignored when key + is set. + name: pagination.count_total + in: query + - type: boolean + description: |- + reverse is set to true if results are to be returned in the descending order. + + Since: cosmos-sdk 0.43 + name: pagination.reverse + in: query + - type: string + name: supplier_operator_address + in: query + - type: string + name: session_id + in: query + - type: string + format: uint64 + name: session_end_height + in: query + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/poktroll.proof.QueryAllProofsResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /pokt-network/poktroll/proof/proof/{session_id}/{supplier_operator_address}: + get: + tags: + - Query + summary: Queries a list of Proof items. + operationId: GithubCompoktNetworkpoktrollQuery_Proof + parameters: + - type: string + name: session_id + in: path + required: true + - type: string + name: supplier_operator_address + in: path + required: true + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/poktroll.proof.QueryGetProofResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /pokt-network/poktroll/service/params: + get: + tags: + - Query + summary: Parameters queries the parameters of the module. + operationId: GithubCompoktNetworkpoktrollQuery_ParamsMixin21 + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/poktroll.service.QueryParamsResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /pokt-network/poktroll/service/relay_mining_difficulty: + get: + tags: + - Query + operationId: GithubCompoktNetworkpoktrollQuery_RelayMiningDifficultyAll + parameters: + - type: string + format: byte + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + name: pagination.key + in: query + - type: string + format: uint64 + description: |- + offset is a numeric offset that can be used when key is unavailable. + It is less efficient than using key. Only one of offset or key should + be set. + name: pagination.offset + in: query + - type: string + format: uint64 + description: |- + limit is the total number of results to be returned in the result page. + If left empty it will default to a value to be set by each app. + name: pagination.limit + in: query + - type: boolean + description: |- + count_total is set to true to indicate that the result set should include + a count of the total number of items available for pagination in UIs. + count_total is only respected when offset is used. It is ignored when key + is set. + name: pagination.count_total + in: query + - type: boolean + description: |- + reverse is set to true if results are to be returned in the descending order. + + Since: cosmos-sdk 0.43 + name: pagination.reverse + in: query + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/poktroll.service.QueryAllRelayMiningDifficultyResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /pokt-network/poktroll/service/relay_mining_difficulty/{serviceId}: + get: + tags: + - Query + summary: Queries a list of RelayMiningDifficulty items. + operationId: GithubCompoktNetworkpoktrollQuery_RelayMiningDifficulty + parameters: + - type: string + name: serviceId + in: path + required: true + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/poktroll.service.QueryGetRelayMiningDifficultyResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /pokt-network/poktroll/service/service: + get: + tags: + - Query + operationId: GithubCompoktNetworkpoktrollQuery_AllServices + parameters: + - type: string + format: byte + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + name: pagination.key + in: query + - type: string + format: uint64 + description: |- + offset is a numeric offset that can be used when key is unavailable. + It is less efficient than using key. Only one of offset or key should + be set. + name: pagination.offset + in: query + - type: string + format: uint64 + description: |- + limit is the total number of results to be returned in the result page. + If left empty it will default to a value to be set by each app. + name: pagination.limit + in: query + - type: boolean + description: |- + count_total is set to true to indicate that the result set should include + a count of the total number of items available for pagination in UIs. + count_total is only respected when offset is used. It is ignored when key + is set. + name: pagination.count_total + in: query + - type: boolean + description: |- + reverse is set to true if results are to be returned in the descending order. + + Since: cosmos-sdk 0.43 + name: pagination.reverse + in: query + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/poktroll.service.QueryAllServicesResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /pokt-network/poktroll/service/service/{id}: + get: + tags: + - Query + summary: Queries a list of Service items. + operationId: GithubCompoktNetworkpoktrollQuery_Service + parameters: + - type: string + description: 'TODO_IMPROVE: We could support getting services by name.' + name: id + in: path + required: true + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/poktroll.service.QueryGetServiceResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /pokt-network/poktroll/session/get_session: + get: + tags: + - Query + summary: Queries the session given app_address, service and block_height. + operationId: GithubCompoktNetworkpoktrollQuery_GetSession + parameters: + - type: string + description: The Bech32 address of the application. + name: application_address + in: query + - type: string + description: The service ID to query the session for + name: service_id + in: query + - type: string + format: int64 + description: The block height to query the session for + name: block_height + in: query + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/poktroll.session.QueryGetSessionResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /pokt-network/poktroll/session/params: + get: + tags: + - Query + summary: Parameters queries the parameters of the module. + operationId: GithubCompoktNetworkpoktrollQuery_ParamsMixin27 + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/poktroll.session.QueryParamsResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /pokt-network/poktroll/shared/params: + get: + tags: + - Query + summary: Parameters queries the parameters of the module. + operationId: GithubCompoktNetworkpoktrollQuery_ParamsMixin32 + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/poktroll.shared.QueryParamsResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /pokt-network/poktroll/supplier/params: + get: + tags: + - Query + summary: Parameters queries the parameters of the module. + operationId: GithubCompoktNetworkpoktrollQuery_ParamsMixin39 + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/poktroll.supplier.QueryParamsResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /pokt-network/poktroll/supplier/supplier: + get: + tags: + - Query + operationId: GithubCompoktNetworkpoktrollQuery_AllSuppliers + parameters: + - type: string + format: byte + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + name: pagination.key + in: query + - type: string + format: uint64 + description: |- + offset is a numeric offset that can be used when key is unavailable. + It is less efficient than using key. Only one of offset or key should + be set. + name: pagination.offset + in: query + - type: string + format: uint64 + description: |- + limit is the total number of results to be returned in the result page. + If left empty it will default to a value to be set by each app. + name: pagination.limit + in: query + - type: boolean + description: |- + count_total is set to true to indicate that the result set should include + a count of the total number of items available for pagination in UIs. + count_total is only respected when offset is used. It is ignored when key + is set. + name: pagination.count_total + in: query + - type: boolean + description: |- + reverse is set to true if results are to be returned in the descending order. + + Since: cosmos-sdk 0.43 + name: pagination.reverse + in: query + - type: string + description: unique service identifier to filter by + name: service_id + in: query + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/poktroll.supplier.QueryAllSuppliersResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /pokt-network/poktroll/supplier/supplier/{operator_address}: + get: + tags: + - Query + summary: Queries a list of Supplier items. + operationId: GithubCompoktNetworkpoktrollQuery_Supplier + parameters: + - type: string + description: 'TODO_TECHDEBT: Add the ability to query for a supplier by owner_id' + name: operator_address + in: path + required: true + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/poktroll.supplier.QueryGetSupplierResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /pokt-network/poktroll/tokenomics/params: + get: + tags: + - Query + summary: Parameters queries the parameters of the module. + operationId: GithubCompoktNetworkpoktrollQuery_ParamsMixin44 + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/poktroll.tokenomics.QueryParamsResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /poktroll.application.Msg/DelegateToGateway: + post: + tags: + - Msg + operationId: GithubCompoktNetworkpoktrollMsg_DelegateToGateway + parameters: + - name: body + in: body + required: true + schema: + $ref: '#/definitions/poktroll.application.MsgDelegateToGateway' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/poktroll.application.MsgDelegateToGatewayResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /poktroll.application.Msg/StakeApplication: + post: + tags: + - Msg + operationId: GithubCompoktNetworkpoktrollMsg_StakeApplication + parameters: + - name: body + in: body + required: true + schema: + $ref: '#/definitions/poktroll.application.MsgStakeApplication' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/poktroll.application.MsgStakeApplicationResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /poktroll.application.Msg/TransferApplication: + post: + tags: + - Msg + operationId: GithubCompoktNetworkpoktrollMsg_TransferApplication + parameters: + - name: body + in: body + required: true + schema: + $ref: '#/definitions/poktroll.application.MsgTransferApplication' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/poktroll.application.MsgTransferApplicationResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /poktroll.application.Msg/UndelegateFromGateway: + post: + tags: + - Msg + operationId: GithubCompoktNetworkpoktrollMsg_UndelegateFromGateway + parameters: + - name: body + in: body + required: true + schema: + $ref: '#/definitions/poktroll.application.MsgUndelegateFromGateway' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/poktroll.application.MsgUndelegateFromGatewayResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /poktroll.application.Msg/UnstakeApplication: + post: + tags: + - Msg + operationId: GithubCompoktNetworkpoktrollMsg_UnstakeApplication + parameters: + - name: body + in: body + required: true + schema: + $ref: '#/definitions/poktroll.application.MsgUnstakeApplication' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/poktroll.application.MsgUnstakeApplicationResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /poktroll.application.Msg/UpdateParam: + post: + tags: + - Msg + operationId: GithubCompoktNetworkpoktrollMsg_UpdateParam + parameters: + - name: body + in: body + required: true + schema: + $ref: '#/definitions/poktroll.application.MsgUpdateParam' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/poktroll.application.MsgUpdateParamResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /poktroll.application.Msg/UpdateParams: + post: + tags: + - Msg + summary: |- + UpdateParams defines a (governance) operation for updating the module + parameters. The authority defaults to the x/gov module account. + operationId: GithubCompoktNetworkpoktrollMsg_UpdateParams + parameters: + - description: MsgUpdateParams is the Msg/UpdateParams request type. + name: body + in: body + required: true + schema: + $ref: '#/definitions/poktroll.application.MsgUpdateParams' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/poktroll.application.MsgUpdateParamsResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /poktroll.gateway.Msg/StakeGateway: + post: + tags: + - Msg + operationId: GithubCompoktNetworkpoktrollMsg_StakeGateway + parameters: + - name: body + in: body + required: true + schema: + $ref: '#/definitions/poktroll.gateway.MsgStakeGateway' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/poktroll.gateway.MsgStakeGatewayResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /poktroll.gateway.Msg/UnstakeGateway: + post: + tags: + - Msg + operationId: GithubCompoktNetworkpoktrollMsg_UnstakeGateway + parameters: + - name: body + in: body + required: true + schema: + $ref: '#/definitions/poktroll.gateway.MsgUnstakeGateway' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/poktroll.gateway.MsgUnstakeGatewayResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /poktroll.gateway.Msg/UpdateParam: + post: + tags: + - Msg + operationId: GithubCompoktNetworkpoktrollMsg_UpdateParamMixin10 + parameters: + - description: MsgUpdateParam is the Msg/UpdateParam request type to update a single param. + name: body + in: body + required: true + schema: + $ref: '#/definitions/poktroll.gateway.MsgUpdateParam' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/poktroll.gateway.MsgUpdateParamResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /poktroll.gateway.Msg/UpdateParams: + post: + tags: + - Msg + summary: |- + UpdateParams defines a (governance) operation for updating the module + parameters. The authority defaults to the x/gov module account. + operationId: GithubCompoktNetworkpoktrollMsg_UpdateParamsMixin10 + parameters: + - description: MsgUpdateParams is the Msg/UpdateParams request type. + name: body + in: body + required: true + schema: + $ref: '#/definitions/poktroll.gateway.MsgUpdateParams' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/poktroll.gateway.MsgUpdateParamsResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /poktroll.proof.Msg/CreateClaim: + post: + tags: + - Msg + operationId: GithubCompoktNetworkpoktrollMsg_CreateClaim + parameters: + - name: body + in: body + required: true + schema: + $ref: '#/definitions/poktroll.proof.MsgCreateClaim' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/poktroll.proof.MsgCreateClaimResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /poktroll.proof.Msg/SubmitProof: + post: + tags: + - Msg + operationId: GithubCompoktNetworkpoktrollMsg_SubmitProof + parameters: + - name: body + in: body + required: true + schema: + $ref: '#/definitions/poktroll.proof.MsgSubmitProof' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/poktroll.proof.MsgSubmitProofResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /poktroll.proof.Msg/UpdateParam: + post: + tags: + - Msg + operationId: GithubCompoktNetworkpoktrollMsg_UpdateParamMixin16 + parameters: + - description: MsgUpdateParam is the Msg/UpdateParam request type to update a single param. + name: body + in: body + required: true + schema: + $ref: '#/definitions/poktroll.proof.MsgUpdateParam' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/poktroll.proof.MsgUpdateParamResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /poktroll.proof.Msg/UpdateParams: + post: + tags: + - Msg + summary: |- + UpdateParams defines a (governance) operation for updating the module + parameters. The authority defaults to the x/gov module account. + operationId: GithubCompoktNetworkpoktrollMsg_UpdateParamsMixin16 + parameters: + - description: MsgUpdateParams is the Msg/UpdateParams request type to update all params at once. + name: body + in: body + required: true + schema: + $ref: '#/definitions/poktroll.proof.MsgUpdateParams' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/poktroll.proof.MsgUpdateParamsResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /poktroll.service.Msg/AddService: + post: + tags: + - Msg + operationId: GithubCompoktNetworkpoktrollMsg_AddService + parameters: + - description: |- + MsgAddService defines a message for adding a new message to the network. + Services can be added by any actor in the network making them truly + permissionless. + name: body + in: body + required: true + schema: + $ref: '#/definitions/poktroll.service.MsgAddService' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/poktroll.service.MsgAddServiceResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /poktroll.service.Msg/UpdateParam: + post: + tags: + - Msg + operationId: GithubCompoktNetworkpoktrollMsg_UpdateParamMixin24 + parameters: + - description: MsgUpdateParam is the Msg/UpdateParam request type to update a single param. + name: body + in: body + required: true + schema: + $ref: '#/definitions/poktroll.service.MsgUpdateParam' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/poktroll.service.MsgUpdateParamResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /poktroll.service.Msg/UpdateParams: + post: + tags: + - Msg + summary: |- + UpdateParams defines a (governance) operation for updating the module + parameters. The authority defaults to the x/gov module account. + operationId: GithubCompoktNetworkpoktrollMsg_UpdateParamsMixin24 + parameters: + - description: MsgUpdateParams is the Msg/UpdateParams request type. + name: body + in: body + required: true + schema: + $ref: '#/definitions/poktroll.service.MsgUpdateParams' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/poktroll.service.MsgUpdateParamsResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /poktroll.session.Msg/UpdateParam: + post: + tags: + - Msg + operationId: GithubCompoktNetworkpoktrollMsg_UpdateParamMixin28 + parameters: + - name: body + in: body + required: true + schema: + $ref: '#/definitions/poktroll.session.MsgUpdateParam' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/poktroll.session.MsgUpdateParamResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /poktroll.session.Msg/UpdateParams: + post: + tags: + - Msg + summary: |- + UpdateParams defines a (governance) operation for updating the module + parameters. The authority defaults to the x/gov module account. + operationId: GithubCompoktNetworkpoktrollMsg_UpdateParamsMixin28 + parameters: + - description: MsgUpdateParams is the Msg/UpdateParams request type. + name: body + in: body + required: true + schema: + $ref: '#/definitions/poktroll.session.MsgUpdateParams' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/poktroll.session.MsgUpdateParamsResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /poktroll.shared.Msg/UpdateParam: + post: + tags: + - Msg + operationId: GithubCompoktNetworkpoktrollMsg_UpdateParamMixin35 + parameters: + - description: MsgUpdateParam is the Msg/UpdateParam request type to update a single param. + name: body + in: body + required: true + schema: + $ref: '#/definitions/poktroll.shared.MsgUpdateParam' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/poktroll.shared.MsgUpdateParamResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /poktroll.shared.Msg/UpdateParams: + post: + tags: + - Msg + summary: |- + UpdateParams defines a (governance) operation for updating the module + parameters. The authority defaults to the x/gov module account. + operationId: GithubCompoktNetworkpoktrollMsg_UpdateParamsMixin35 + parameters: + - description: MsgUpdateParams is the Msg/UpdateParams request type. + name: body + in: body + required: true + schema: + $ref: '#/definitions/poktroll.shared.MsgUpdateParams' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/poktroll.shared.MsgUpdateParamsResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /poktroll.supplier.Msg/StakeSupplier: + post: + tags: + - Msg + operationId: GithubCompoktNetworkpoktrollMsg_StakeSupplier + parameters: + - name: body + in: body + required: true + schema: + $ref: '#/definitions/poktroll.supplier.MsgStakeSupplier' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/poktroll.supplier.MsgStakeSupplierResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /poktroll.supplier.Msg/UnstakeSupplier: + post: + tags: + - Msg + operationId: GithubCompoktNetworkpoktrollMsg_UnstakeSupplier + parameters: + - name: body + in: body + required: true + schema: + $ref: '#/definitions/poktroll.supplier.MsgUnstakeSupplier' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/poktroll.supplier.MsgUnstakeSupplierResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /poktroll.supplier.Msg/UpdateParam: + post: + tags: + - Msg + operationId: GithubCompoktNetworkpoktrollMsg_UpdateParamMixin40 + parameters: + - description: MsgUpdateParam is the Msg/UpdateParam request type to update a single param. + name: body + in: body + required: true + schema: + $ref: '#/definitions/poktroll.supplier.MsgUpdateParam' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/poktroll.supplier.MsgUpdateParamResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /poktroll.supplier.Msg/UpdateParams: + post: + tags: + - Msg + summary: |- + UpdateParams defines a (governance) operation for updating the module + parameters. The authority defaults to the x/gov module account. + operationId: GithubCompoktNetworkpoktrollMsg_UpdateParamsMixin40 + parameters: + - description: MsgUpdateParams is the Msg/UpdateParams request type. + name: body + in: body + required: true + schema: + $ref: '#/definitions/poktroll.supplier.MsgUpdateParams' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/poktroll.supplier.MsgUpdateParamsResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /poktroll.tokenomics.Msg/UpdateParam: + post: + tags: + - Msg + operationId: GithubCompoktNetworkpoktrollMsg_UpdateParamMixin45 + parameters: + - description: MsgUpdateParam is the Msg/UpdateParam request type to update a single param. + name: body + in: body + required: true + schema: + $ref: '#/definitions/poktroll.tokenomics.MsgUpdateParam' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/poktroll.tokenomics.MsgUpdateParamResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /poktroll.tokenomics.Msg/UpdateParams: + post: + tags: + - Msg + summary: |- + UpdateParams defines a (governance) operation for updating the module + parameters. The authority defaults to the x/gov module account. + operationId: GithubCompoktNetworkpoktrollMsg_UpdateParamsMixin45 + parameters: + - description: MsgUpdateParams is the Msg/UpdateParams request type to update all params at once. + name: body + in: body + required: true + schema: + $ref: '#/definitions/poktroll.tokenomics.MsgUpdateParams' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/poktroll.tokenomics.MsgUpdateParamsResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /tendermint.abci.ABCI/ApplySnapshotChunk: + post: + tags: + - ABCI + operationId: CircuitABCI_ApplySnapshotChunk + parameters: + - name: body + in: body + required: true + schema: + $ref: '#/definitions/tendermint.abci.RequestApplySnapshotChunk' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/tendermint.abci.ResponseApplySnapshotChunk' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /tendermint.abci.ABCI/CheckTx: + post: + tags: + - ABCI + operationId: CircuitABCI_CheckTx + parameters: + - name: body + in: body + required: true + schema: + $ref: '#/definitions/tendermint.abci.RequestCheckTx' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/tendermint.abci.ResponseCheckTx' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /tendermint.abci.ABCI/Commit: + post: + tags: + - ABCI + operationId: CircuitABCI_Commit + parameters: + - name: body + in: body + required: true + schema: + $ref: '#/definitions/tendermint.abci.RequestCommit' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/tendermint.abci.ResponseCommit' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /tendermint.abci.ABCI/Echo: + post: + tags: + - ABCI + operationId: CircuitABCI_Echo + parameters: + - name: body + in: body + required: true + schema: + $ref: '#/definitions/tendermint.abci.RequestEcho' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/tendermint.abci.ResponseEcho' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /tendermint.abci.ABCI/ExtendVote: + post: + tags: + - ABCI + operationId: CircuitABCI_ExtendVote + parameters: + - name: body + in: body + required: true + schema: + $ref: '#/definitions/tendermint.abci.RequestExtendVote' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/tendermint.abci.ResponseExtendVote' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /tendermint.abci.ABCI/FinalizeBlock: + post: + tags: + - ABCI + operationId: CircuitABCI_FinalizeBlock + parameters: + - name: body + in: body + required: true + schema: + $ref: '#/definitions/tendermint.abci.RequestFinalizeBlock' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/tendermint.abci.ResponseFinalizeBlock' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /tendermint.abci.ABCI/Flush: + post: + tags: + - ABCI + operationId: CircuitABCI_Flush + parameters: + - name: body + in: body + required: true + schema: + $ref: '#/definitions/tendermint.abci.RequestFlush' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/tendermint.abci.ResponseFlush' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /tendermint.abci.ABCI/Info: + post: + tags: + - ABCI + operationId: CircuitABCI_Info + parameters: + - name: body + in: body + required: true + schema: + $ref: '#/definitions/tendermint.abci.RequestInfo' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/tendermint.abci.ResponseInfo' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /tendermint.abci.ABCI/InitChain: + post: + tags: + - ABCI + operationId: CircuitABCI_InitChain + parameters: + - name: body + in: body + required: true + schema: + $ref: '#/definitions/tendermint.abci.RequestInitChain' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/tendermint.abci.ResponseInitChain' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /tendermint.abci.ABCI/ListSnapshots: + post: + tags: + - ABCI + operationId: CircuitABCI_ListSnapshots + parameters: + - name: body + in: body + required: true + schema: + $ref: '#/definitions/tendermint.abci.RequestListSnapshots' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/tendermint.abci.ResponseListSnapshots' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /tendermint.abci.ABCI/LoadSnapshotChunk: + post: + tags: + - ABCI + operationId: CircuitABCI_LoadSnapshotChunk + parameters: + - name: body + in: body + required: true + schema: + $ref: '#/definitions/tendermint.abci.RequestLoadSnapshotChunk' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/tendermint.abci.ResponseLoadSnapshotChunk' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /tendermint.abci.ABCI/OfferSnapshot: + post: + tags: + - ABCI + operationId: CircuitABCI_OfferSnapshot + parameters: + - name: body + in: body + required: true + schema: + $ref: '#/definitions/tendermint.abci.RequestOfferSnapshot' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/tendermint.abci.ResponseOfferSnapshot' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /tendermint.abci.ABCI/PrepareProposal: + post: + tags: + - ABCI + operationId: CircuitABCI_PrepareProposal + parameters: + - name: body + in: body + required: true + schema: + $ref: '#/definitions/tendermint.abci.RequestPrepareProposal' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/tendermint.abci.ResponsePrepareProposal' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /tendermint.abci.ABCI/ProcessProposal: + post: + tags: + - ABCI + operationId: CircuitABCI_ProcessProposal + parameters: + - name: body + in: body + required: true + schema: + $ref: '#/definitions/tendermint.abci.RequestProcessProposal' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/tendermint.abci.ResponseProcessProposal' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /tendermint.abci.ABCI/Query: + post: + tags: + - ABCI + operationId: CircuitABCI_Query + parameters: + - name: body + in: body + required: true + schema: + $ref: '#/definitions/tendermint.abci.RequestQuery' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/tendermint.abci.ResponseQuery' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' + /tendermint.abci.ABCI/VerifyVoteExtension: + post: + tags: + - ABCI + operationId: CircuitABCI_VerifyVoteExtension + parameters: + - name: body + in: body + required: true + schema: + $ref: '#/definitions/tendermint.abci.RequestVerifyVoteExtension' + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/tendermint.abci.ResponseVerifyVoteExtension' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/google.rpc.Status' +definitions: + cosmos.auth.v1beta1.AddressBytesToStringResponse: + description: |- + AddressBytesToStringResponse is the response type for AddressString rpc method. + + Since: cosmos-sdk 0.46 + type: object + properties: + address_string: + type: string + cosmos.auth.v1beta1.AddressStringToBytesResponse: + description: |- + AddressStringToBytesResponse is the response type for AddressBytes rpc method. + + Since: cosmos-sdk 0.46 + type: object + properties: + address_bytes: + type: string + format: byte + cosmos.auth.v1beta1.BaseAccount: + description: |- + BaseAccount defines a base account type. It contains all the necessary fields + for basic account functionality. Any custom account type should extend this + type for additional functionality (e.g. vesting). + type: object + properties: + account_number: + type: string + format: uint64 + address: + type: string + pub_key: + $ref: '#/definitions/google.protobuf.Any' + sequence: + type: string + format: uint64 + cosmos.auth.v1beta1.Bech32PrefixResponse: + description: |- + Bech32PrefixResponse is the response type for Bech32Prefix rpc method. + + Since: cosmos-sdk 0.46 + type: object + properties: + bech32_prefix: + type: string + cosmos.auth.v1beta1.MsgUpdateParams: + description: |- + MsgUpdateParams is the Msg/UpdateParams request type. + + Since: cosmos-sdk 0.47 + type: object + properties: + authority: + description: authority is the address that controls the module (defaults to x/gov unless overwritten). + type: string + params: + description: |- + params defines the x/auth parameters to update. + + NOTE: All parameters must be supplied. + $ref: '#/definitions/cosmos.auth.v1beta1.Params' + cosmos.auth.v1beta1.MsgUpdateParamsResponse: + description: |- + MsgUpdateParamsResponse defines the response structure for executing a + MsgUpdateParams message. + + Since: cosmos-sdk 0.47 + type: object + cosmos.auth.v1beta1.Params: + description: Params defines the parameters for the auth module. + type: object + properties: + max_memo_characters: + type: string + format: uint64 + sig_verify_cost_ed25519: + type: string + format: uint64 + sig_verify_cost_secp256k1: + type: string + format: uint64 + tx_sig_limit: + type: string + format: uint64 + tx_size_cost_per_byte: + type: string + format: uint64 + cosmos.auth.v1beta1.QueryAccountAddressByIDResponse: + description: 'Since: cosmos-sdk 0.46.2' + type: object + title: QueryAccountAddressByIDResponse is the response type for AccountAddressByID rpc method + properties: + account_address: + type: string + cosmos.auth.v1beta1.QueryAccountInfoResponse: + description: |- + QueryAccountInfoResponse is the Query/AccountInfo response type. + + Since: cosmos-sdk 0.47 + type: object + properties: + info: + description: info is the account info which is represented by BaseAccount. + $ref: '#/definitions/cosmos.auth.v1beta1.BaseAccount' + cosmos.auth.v1beta1.QueryAccountResponse: + description: QueryAccountResponse is the response type for the Query/Account RPC method. + type: object + properties: + account: + description: account defines the account of the corresponding address. + $ref: '#/definitions/google.protobuf.Any' + cosmos.auth.v1beta1.QueryAccountsResponse: + description: |- + QueryAccountsResponse is the response type for the Query/Accounts RPC method. + + Since: cosmos-sdk 0.43 + type: object + properties: + accounts: + type: array + title: accounts are the existing accounts + items: + type: object + $ref: '#/definitions/google.protobuf.Any' + pagination: + description: pagination defines the pagination in the response. + $ref: '#/definitions/cosmos.base.query.v1beta1.PageResponse' + cosmos.auth.v1beta1.QueryModuleAccountByNameResponse: + description: QueryModuleAccountByNameResponse is the response type for the Query/ModuleAccountByName RPC method. + type: object + properties: + account: + $ref: '#/definitions/google.protobuf.Any' + cosmos.auth.v1beta1.QueryModuleAccountsResponse: + description: |- + QueryModuleAccountsResponse is the response type for the Query/ModuleAccounts RPC method. + + Since: cosmos-sdk 0.46 + type: object + properties: + accounts: + type: array + items: + type: object + $ref: '#/definitions/google.protobuf.Any' + cosmos.auth.v1beta1.QueryParamsResponse: + description: QueryParamsResponse is the response type for the Query/Params RPC method. + type: object + properties: + params: + description: params defines the parameters of the module. + $ref: '#/definitions/cosmos.auth.v1beta1.Params' + cosmos.authz.v1beta1.Grant: + description: |- + Grant gives permissions to execute + the provide method with expiration time. + type: object + properties: + authorization: + $ref: '#/definitions/google.protobuf.Any' + expiration: + type: string + format: date-time + title: |- + time when the grant will expire and will be pruned. If null, then the grant + doesn't have a time expiration (other conditions in `authorization` + may apply to invalidate the grant) + cosmos.authz.v1beta1.GrantAuthorization: + type: object + title: |- + GrantAuthorization extends a grant with both the addresses of the grantee and granter. + It is used in genesis.proto and query.proto + properties: + authorization: + $ref: '#/definitions/google.protobuf.Any' + expiration: + type: string + format: date-time + grantee: + type: string + granter: + type: string + cosmos.authz.v1beta1.MsgExec: + description: |- + MsgExec attempts to execute the provided messages using + authorizations granted to the grantee. Each message should have only + one signer corresponding to the granter of the authorization. + type: object + properties: + grantee: + type: string + msgs: + description: |- + Execute Msg. + The x/authz will try to find a grant matching (msg.signers[0], grantee, MsgTypeURL(msg)) + triple and validate it. + type: array + items: + type: object + $ref: '#/definitions/google.protobuf.Any' + cosmos.authz.v1beta1.MsgExecResponse: + description: MsgExecResponse defines the Msg/MsgExecResponse response type. + type: object + properties: + results: + type: array + items: + type: string + format: byte + cosmos.authz.v1beta1.MsgGrant: + description: |- + MsgGrant is a request type for Grant method. It declares authorization to the grantee + on behalf of the granter with the provided expiration time. + type: object + properties: + grant: + $ref: '#/definitions/cosmos.authz.v1beta1.Grant' + grantee: + type: string + granter: + type: string + cosmos.authz.v1beta1.MsgGrantResponse: + description: MsgGrantResponse defines the Msg/MsgGrant response type. + type: object + cosmos.authz.v1beta1.MsgRevoke: + description: |- + MsgRevoke revokes any authorization with the provided sdk.Msg type on the + granter's account with that has been granted to the grantee. + type: object + properties: + grantee: + type: string + granter: + type: string + msg_type_url: + type: string + cosmos.authz.v1beta1.MsgRevokeResponse: + description: MsgRevokeResponse defines the Msg/MsgRevokeResponse response type. + type: object + cosmos.authz.v1beta1.QueryGranteeGrantsResponse: + description: QueryGranteeGrantsResponse is the response type for the Query/GranteeGrants RPC method. + type: object + properties: + grants: + description: grants is a list of grants granted to the grantee. + type: array + items: + type: object + $ref: '#/definitions/cosmos.authz.v1beta1.GrantAuthorization' + pagination: + description: pagination defines an pagination for the response. + $ref: '#/definitions/cosmos.base.query.v1beta1.PageResponse' + cosmos.authz.v1beta1.QueryGranterGrantsResponse: + description: QueryGranterGrantsResponse is the response type for the Query/GranterGrants RPC method. + type: object + properties: + grants: + description: grants is a list of grants granted by the granter. + type: array + items: + type: object + $ref: '#/definitions/cosmos.authz.v1beta1.GrantAuthorization' + pagination: + description: pagination defines an pagination for the response. + $ref: '#/definitions/cosmos.base.query.v1beta1.PageResponse' + cosmos.authz.v1beta1.QueryGrantsResponse: + description: QueryGrantsResponse is the response type for the Query/Authorizations RPC method. + type: object + properties: + grants: + description: authorizations is a list of grants granted for grantee by granter. + type: array + items: + type: object + $ref: '#/definitions/cosmos.authz.v1beta1.Grant' + pagination: + description: pagination defines an pagination for the response. + $ref: '#/definitions/cosmos.base.query.v1beta1.PageResponse' + cosmos.autocli.v1.AppOptionsRequest: + description: AppOptionsRequest is the RemoteInfoService/AppOptions request type. + type: object + cosmos.autocli.v1.AppOptionsResponse: + description: AppOptionsResponse is the RemoteInfoService/AppOptions response type. + type: object + properties: + module_options: + description: module_options is a map of module name to autocli module options. + type: object + additionalProperties: + $ref: '#/definitions/cosmos.autocli.v1.ModuleOptions' + cosmos.autocli.v1.FlagOptions: + description: |- + FlagOptions are options for flags generated from rpc request fields. + By default, all request fields are configured as flags based on the + kebab-case name of the field. Fields can be turned into positional arguments + instead by using RpcCommandOptions.positional_args. + type: object + properties: + default_value: + description: default_value is the default value as text. + type: string + deprecated: + description: deprecated is the usage text to show if this flag is deprecated. + type: string + hidden: + type: boolean + title: hidden hides the flag from help/usage text + name: + description: name is an alternate name to use for the field flag. + type: string + shorthand: + description: shorthand is a one-letter abbreviated flag. + type: string + shorthand_deprecated: + description: shorthand_deprecated is the usage text to show if the shorthand of this flag is deprecated. + type: string + usage: + description: usage is the help message. + type: string + cosmos.autocli.v1.ModuleOptions: + description: ModuleOptions describes the CLI options for a Cosmos SDK module. + type: object + properties: + query: + description: query describes the queries commands for the module. + $ref: '#/definitions/cosmos.autocli.v1.ServiceCommandDescriptor' + tx: + description: tx describes the tx commands for the module. + $ref: '#/definitions/cosmos.autocli.v1.ServiceCommandDescriptor' + cosmos.autocli.v1.PositionalArgDescriptor: + description: PositionalArgDescriptor describes a positional argument. + type: object + properties: + proto_field: + description: |- + proto_field specifies the proto field to use as the positional arg. Any + fields used as positional args will not have a flag generated. + type: string + varargs: + description: |- + varargs makes a positional parameter a varargs parameter. This can only be + applied to last positional parameter and the proto_field must a repeated + field. + type: boolean + cosmos.autocli.v1.RpcCommandOptions: + description: |- + RpcCommandOptions specifies options for commands generated from protobuf + rpc methods. + type: object + properties: + alias: + description: alias is an array of aliases that can be used instead of the first word in Use. + type: array + items: + type: string + deprecated: + description: deprecated defines, if this command is deprecated and should print this string when used. + type: string + example: + description: example is examples of how to use the command. + type: string + flag_options: + description: |- + flag_options are options for flags generated from rpc request fields. + By default all request fields are configured as flags. They can + also be configured as positional args instead using positional_args. + type: object + additionalProperties: + $ref: '#/definitions/cosmos.autocli.v1.FlagOptions' + long: + description: long is the long message shown in the 'help ' output. + type: string + positional_args: + description: positional_args specifies positional arguments for the command. + type: array + items: + type: object + $ref: '#/definitions/cosmos.autocli.v1.PositionalArgDescriptor' + rpc_method: + description: |- + rpc_method is short name of the protobuf rpc method that this command is + generated from. + type: string + short: + description: short is the short description shown in the 'help' output. + type: string + skip: + description: skip specifies whether to skip this rpc method when generating commands. + type: boolean + suggest_for: + description: |- + suggest_for is an array of command names for which this command will be suggested - + similar to aliases but only suggests. + type: array + items: + type: string + use: + description: |- + use is the one-line usage method. It also allows specifying an alternate + name for the command as the first word of the usage text. + + By default the name of an rpc command is the kebab-case short name of the + rpc method. + type: string + version: + description: |- + version defines the version for this command. If this value is non-empty and the command does not + define a "version" flag, a "version" boolean flag will be added to the command and, if specified, + will print content of the "Version" variable. A shorthand "v" flag will also be added if the + command does not define one. + type: string + cosmos.autocli.v1.ServiceCommandDescriptor: + description: ServiceCommandDescriptor describes a CLI command based on a protobuf service. + type: object + properties: + rpc_command_options: + description: |- + rpc_command_options are options for commands generated from rpc methods. + If no options are specified for a given rpc method on the service, a + command will be generated for that method with the default options. + type: array + items: + type: object + $ref: '#/definitions/cosmos.autocli.v1.RpcCommandOptions' + service: + description: |- + service is the fully qualified name of the protobuf service to build + the command from. It can be left empty if sub_commands are used instead + which may be the case if a module provides multiple tx and/or query services. + type: string + sub_commands: + description: |- + sub_commands is a map of optional sub-commands for this command based on + different protobuf services. The map key is used as the name of the + sub-command. + type: object + additionalProperties: + $ref: '#/definitions/cosmos.autocli.v1.ServiceCommandDescriptor' + cosmos.bank.v1beta1.DenomOwner: + description: |- + DenomOwner defines structure representing an account that owns or holds a + particular denominated token. It contains the account address and account + balance of the denominated token. + + Since: cosmos-sdk 0.46 + type: object + properties: + address: + description: address defines the address that owns a particular denomination. + type: string + balance: + description: balance is the balance of the denominated coin for an account. + $ref: '#/definitions/cosmos.base.v1beta1.Coin' + cosmos.bank.v1beta1.DenomUnit: + description: |- + DenomUnit represents a struct that describes a given + denomination unit of the basic token. + type: object + properties: + aliases: + type: array + title: aliases is a list of string aliases for the given denom + items: + type: string + denom: + description: denom represents the string name of the given denom unit (e.g uatom). + type: string + exponent: + description: |- + exponent represents power of 10 exponent that one must + raise the base_denom to in order to equal the given DenomUnit's denom + 1 denom = 10^exponent base_denom + (e.g. with a base_denom of uatom, one can create a DenomUnit of 'atom' with + exponent = 6, thus: 1 atom = 10^6 uatom). + type: integer + format: int64 + cosmos.bank.v1beta1.Input: + description: Input models transaction input. + type: object + properties: + address: + type: string + coins: + type: array + items: + type: object + $ref: '#/definitions/cosmos.base.v1beta1.Coin' + cosmos.bank.v1beta1.Metadata: + description: |- + Metadata represents a struct that describes + a basic token. + type: object + properties: + base: + description: base represents the base denom (should be the DenomUnit with exponent = 0). + type: string + denom_units: + type: array + title: denom_units represents the list of DenomUnit's for a given coin + items: + type: object + $ref: '#/definitions/cosmos.bank.v1beta1.DenomUnit' + description: + type: string + display: + description: |- + display indicates the suggested denom that should be + displayed in clients. + type: string + name: + description: 'Since: cosmos-sdk 0.43' + type: string + title: 'name defines the name of the token (eg: Cosmos Atom)' + symbol: + description: |- + symbol is the token symbol usually shown on exchanges (eg: ATOM). This can + be the same as the display. + + Since: cosmos-sdk 0.43 + type: string + uri: + description: |- + URI to a document (on or off-chain) that contains additional information. Optional. + + Since: cosmos-sdk 0.46 + type: string + uri_hash: + description: |- + URIHash is a sha256 hash of a document pointed by URI. It's used to verify that + the document didn't change. Optional. + + Since: cosmos-sdk 0.46 + type: string + cosmos.bank.v1beta1.MsgMultiSend: + description: MsgMultiSend represents an arbitrary multi-in, multi-out send message. + type: object + properties: + inputs: + description: |- + Inputs, despite being `repeated`, only allows one sender input. This is + checked in MsgMultiSend's ValidateBasic. + type: array + items: + type: object + $ref: '#/definitions/cosmos.bank.v1beta1.Input' + outputs: + type: array + items: + type: object + $ref: '#/definitions/cosmos.bank.v1beta1.Output' + cosmos.bank.v1beta1.MsgMultiSendResponse: + description: MsgMultiSendResponse defines the Msg/MultiSend response type. + type: object + cosmos.bank.v1beta1.MsgSend: + description: MsgSend represents a message to send coins from one account to another. + type: object + properties: + amount: + type: array + items: + type: object + $ref: '#/definitions/cosmos.base.v1beta1.Coin' + from_address: + type: string + to_address: + type: string + cosmos.bank.v1beta1.MsgSendResponse: + description: MsgSendResponse defines the Msg/Send response type. + type: object + cosmos.bank.v1beta1.MsgSetSendEnabled: + description: |- + MsgSetSendEnabled is the Msg/SetSendEnabled request type. + + Only entries to add/update/delete need to be included. + Existing SendEnabled entries that are not included in this + message are left unchanged. + + Since: cosmos-sdk 0.47 + type: object + properties: + authority: + description: authority is the address that controls the module. + type: string + send_enabled: + description: send_enabled is the list of entries to add or update. + type: array + items: + type: object + $ref: '#/definitions/cosmos.bank.v1beta1.SendEnabled' + use_default_for: + description: |- + use_default_for is a list of denoms that should use the params.default_send_enabled value. + Denoms listed here will have their SendEnabled entries deleted. + If a denom is included that doesn't have a SendEnabled entry, + it will be ignored. + type: array + items: + type: string + cosmos.bank.v1beta1.MsgSetSendEnabledResponse: + description: |- + MsgSetSendEnabledResponse defines the Msg/SetSendEnabled response type. + + Since: cosmos-sdk 0.47 + type: object + cosmos.bank.v1beta1.MsgUpdateParams: + description: |- + MsgUpdateParams is the Msg/UpdateParams request type. + + Since: cosmos-sdk 0.47 + type: object + properties: + authority: + description: authority is the address that controls the module (defaults to x/gov unless overwritten). + type: string + params: + description: |- + params defines the x/bank parameters to update. + + NOTE: All parameters must be supplied. + $ref: '#/definitions/cosmos.bank.v1beta1.Params' + cosmos.bank.v1beta1.MsgUpdateParamsResponse: + description: |- + MsgUpdateParamsResponse defines the response structure for executing a + MsgUpdateParams message. + + Since: cosmos-sdk 0.47 + type: object + cosmos.bank.v1beta1.Output: + description: Output models transaction outputs. + type: object + properties: + address: + type: string + coins: + type: array + items: + type: object + $ref: '#/definitions/cosmos.base.v1beta1.Coin' + cosmos.bank.v1beta1.Params: + description: Params defines the parameters for the bank module. + type: object + properties: + default_send_enabled: + type: boolean + send_enabled: + description: |- + Deprecated: Use of SendEnabled in params is deprecated. + For genesis, use the newly added send_enabled field in the genesis object. + Storage, lookup, and manipulation of this information is now in the keeper. + + As of cosmos-sdk 0.47, this only exists for backwards compatibility of genesis files. + type: array + items: + type: object + $ref: '#/definitions/cosmos.bank.v1beta1.SendEnabled' + cosmos.bank.v1beta1.QueryAllBalancesResponse: + description: |- + QueryAllBalancesResponse is the response type for the Query/AllBalances RPC + method. + type: object + properties: + balances: + description: balances is the balances of all the coins. + type: array + items: + type: object + $ref: '#/definitions/cosmos.base.v1beta1.Coin' + pagination: + description: pagination defines the pagination in the response. + $ref: '#/definitions/cosmos.base.query.v1beta1.PageResponse' + cosmos.bank.v1beta1.QueryBalanceResponse: + description: QueryBalanceResponse is the response type for the Query/Balance RPC method. + type: object + properties: + balance: + description: balance is the balance of the coin. + $ref: '#/definitions/cosmos.base.v1beta1.Coin' + cosmos.bank.v1beta1.QueryDenomMetadataByQueryStringResponse: + description: |- + QueryDenomMetadataByQueryStringResponse is the response type for the Query/DenomMetadata RPC + method. Identical with QueryDenomMetadataResponse but receives denom as query string in request. + type: object + properties: + metadata: + description: metadata describes and provides all the client information for the requested token. + $ref: '#/definitions/cosmos.bank.v1beta1.Metadata' + cosmos.bank.v1beta1.QueryDenomMetadataResponse: + description: |- + QueryDenomMetadataResponse is the response type for the Query/DenomMetadata RPC + method. + type: object + properties: + metadata: + description: metadata describes and provides all the client information for the requested token. + $ref: '#/definitions/cosmos.bank.v1beta1.Metadata' + cosmos.bank.v1beta1.QueryDenomOwnersByQueryResponse: + description: |- + QueryDenomOwnersByQueryResponse defines the RPC response of a DenomOwnersByQuery RPC query. + + Since: cosmos-sdk 0.50.3 + type: object + properties: + denom_owners: + type: array + items: + type: object + $ref: '#/definitions/cosmos.bank.v1beta1.DenomOwner' + pagination: + description: pagination defines the pagination in the response. + $ref: '#/definitions/cosmos.base.query.v1beta1.PageResponse' + cosmos.bank.v1beta1.QueryDenomOwnersResponse: + description: |- + QueryDenomOwnersResponse defines the RPC response of a DenomOwners RPC query. + + Since: cosmos-sdk 0.46 + type: object + properties: + denom_owners: + type: array + items: + type: object + $ref: '#/definitions/cosmos.bank.v1beta1.DenomOwner' + pagination: + description: pagination defines the pagination in the response. + $ref: '#/definitions/cosmos.base.query.v1beta1.PageResponse' + cosmos.bank.v1beta1.QueryDenomsMetadataResponse: + description: |- + QueryDenomsMetadataResponse is the response type for the Query/DenomsMetadata RPC + method. + type: object + properties: + metadatas: + description: metadata provides the client information for all the registered tokens. + type: array + items: + type: object + $ref: '#/definitions/cosmos.bank.v1beta1.Metadata' + pagination: + description: pagination defines the pagination in the response. + $ref: '#/definitions/cosmos.base.query.v1beta1.PageResponse' + cosmos.bank.v1beta1.QueryParamsResponse: + description: QueryParamsResponse defines the response type for querying x/bank parameters. + type: object + properties: + params: + description: params provides the parameters of the bank module. + $ref: '#/definitions/cosmos.bank.v1beta1.Params' + cosmos.bank.v1beta1.QuerySendEnabledResponse: + description: |- + QuerySendEnabledResponse defines the RPC response of a SendEnable query. + + Since: cosmos-sdk 0.47 + type: object + properties: + pagination: + description: |- + pagination defines the pagination in the response. This field is only + populated if the denoms field in the request is empty. + $ref: '#/definitions/cosmos.base.query.v1beta1.PageResponse' + send_enabled: + type: array + items: + type: object + $ref: '#/definitions/cosmos.bank.v1beta1.SendEnabled' + cosmos.bank.v1beta1.QuerySpendableBalanceByDenomResponse: + description: |- + QuerySpendableBalanceByDenomResponse defines the gRPC response structure for + querying an account's spendable balance for a specific denom. + + Since: cosmos-sdk 0.47 + type: object + properties: + balance: + description: balance is the balance of the coin. + $ref: '#/definitions/cosmos.base.v1beta1.Coin' + cosmos.bank.v1beta1.QuerySpendableBalancesResponse: + description: |- + QuerySpendableBalancesResponse defines the gRPC response structure for querying + an account's spendable balances. + + Since: cosmos-sdk 0.46 + type: object + properties: + balances: + description: balances is the spendable balances of all the coins. + type: array + items: + type: object + $ref: '#/definitions/cosmos.base.v1beta1.Coin' + pagination: + description: pagination defines the pagination in the response. + $ref: '#/definitions/cosmos.base.query.v1beta1.PageResponse' + cosmos.bank.v1beta1.QuerySupplyOfResponse: + description: QuerySupplyOfResponse is the response type for the Query/SupplyOf RPC method. + type: object + properties: + amount: + description: amount is the supply of the coin. + $ref: '#/definitions/cosmos.base.v1beta1.Coin' + cosmos.bank.v1beta1.QueryTotalSupplyResponse: + type: object + title: |- + QueryTotalSupplyResponse is the response type for the Query/TotalSupply RPC + method + properties: + pagination: + description: |- + pagination defines the pagination in the response. + + Since: cosmos-sdk 0.43 + $ref: '#/definitions/cosmos.base.query.v1beta1.PageResponse' + supply: + type: array + title: supply is the supply of the coins + items: + type: object + $ref: '#/definitions/cosmos.base.v1beta1.Coin' + cosmos.bank.v1beta1.SendEnabled: + description: |- + SendEnabled maps coin denom to a send_enabled status (whether a denom is + sendable). + type: object + properties: + denom: + type: string + enabled: + type: boolean + cosmos.base.abci.v1beta1.ABCIMessageLog: + description: ABCIMessageLog defines a structure containing an indexed tx ABCI message log. + type: object + properties: + events: + description: |- + Events contains a slice of Event objects that were emitted during some + execution. + type: array + items: + type: object + $ref: '#/definitions/cosmos.base.abci.v1beta1.StringEvent' + log: + type: string + msg_index: + type: integer + format: int64 + cosmos.base.abci.v1beta1.Attribute: + description: |- + Attribute defines an attribute wrapper where the key and value are + strings instead of raw bytes. + type: object + properties: + key: + type: string + value: + type: string + cosmos.base.abci.v1beta1.GasInfo: + description: GasInfo defines tx execution gas context. + type: object + properties: + gas_used: + description: GasUsed is the amount of gas actually consumed. + type: string + format: uint64 + gas_wanted: + description: GasWanted is the maximum units of work we allow this tx to perform. + type: string + format: uint64 + cosmos.base.abci.v1beta1.Result: + description: Result is the union of ResponseFormat and ResponseCheckTx. + type: object + properties: + data: + description: |- + Data is any data returned from message or handler execution. It MUST be + length prefixed in order to separate data from multiple message executions. + Deprecated. This field is still populated, but prefer msg_response instead + because it also contains the Msg response typeURL. + type: string + format: byte + events: + description: |- + Events contains a slice of Event objects that were emitted during message + or handler execution. + type: array + items: + type: object + $ref: '#/definitions/tendermint.abci.Event' + log: + description: Log contains the log information from message or handler execution. + type: string + msg_responses: + description: |- + msg_responses contains the Msg handler responses type packed in Anys. + + Since: cosmos-sdk 0.46 + type: array + items: + type: object + $ref: '#/definitions/google.protobuf.Any' + cosmos.base.abci.v1beta1.StringEvent: + description: |- + StringEvent defines en Event object wrapper where all the attributes + contain key/value pairs that are strings instead of raw bytes. + type: object + properties: + attributes: + type: array + items: + type: object + $ref: '#/definitions/cosmos.base.abci.v1beta1.Attribute' + type: + type: string + cosmos.base.abci.v1beta1.TxResponse: + description: |- + TxResponse defines a structure containing relevant tx data and metadata. The + tags are stringified and the log is JSON decoded. + type: object + properties: + code: + description: Response code. + type: integer + format: int64 + codespace: + type: string + title: Namespace for the Code + data: + description: Result bytes, if any. + type: string + events: + description: |- + Events defines all the events emitted by processing a transaction. Note, + these events include those emitted by processing all the messages and those + emitted from the ante. Whereas Logs contains the events, with + additional metadata, emitted only by processing the messages. + + Since: cosmos-sdk 0.42.11, 0.44.5, 0.45 + type: array + items: + type: object + $ref: '#/definitions/tendermint.abci.Event' + gas_used: + description: Amount of gas consumed by transaction. + type: string + format: int64 + gas_wanted: + description: Amount of gas requested for transaction. + type: string + format: int64 + height: + type: string + format: int64 + title: The block height + info: + description: Additional information. May be non-deterministic. + type: string + logs: + description: The output of the application's logger (typed). May be non-deterministic. + type: array + items: + type: object + $ref: '#/definitions/cosmos.base.abci.v1beta1.ABCIMessageLog' + raw_log: + description: |- + The output of the application's logger (raw string). May be + non-deterministic. + type: string + timestamp: + description: |- + Time of the previous block. For heights > 1, it's the weighted median of + the timestamps of the valid votes in the block.LastCommit. For height == 1, + it's genesis time. + type: string + tx: + description: The request transaction bytes. + $ref: '#/definitions/google.protobuf.Any' + txhash: + description: The transaction hash. + type: string + cosmos.base.node.v1beta1.ConfigResponse: + description: ConfigResponse defines the response structure for the Config gRPC query. + type: object + properties: + halt_height: + type: string + format: uint64 + minimum_gas_price: + type: string + pruning_interval: + type: string + pruning_keep_recent: + type: string + cosmos.base.node.v1beta1.StatusResponse: + description: StateResponse defines the response structure for the status of a node. + type: object + properties: + app_hash: + type: string + format: byte + title: app hash of the current block + earliest_store_height: + type: string + format: uint64 + title: earliest block height available in the store + height: + type: string + format: uint64 + title: current block height + timestamp: + type: string + format: date-time + title: block height timestamp + validator_hash: + type: string + format: byte + title: validator hash provided by the consensus header + cosmos.base.query.v1beta1.PageRequest: + description: |- + message SomeRequest { + Foo some_parameter = 1; + PageRequest pagination = 2; + } + type: object + title: |- + PageRequest is to be embedded in gRPC request messages for efficient + pagination. Ex: + properties: + count_total: + description: |- + count_total is set to true to indicate that the result set should include + a count of the total number of items available for pagination in UIs. + count_total is only respected when offset is used. It is ignored when key + is set. + type: boolean + key: + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + type: string + format: byte + limit: + description: |- + limit is the total number of results to be returned in the result page. + If left empty it will default to a value to be set by each app. + type: string + format: uint64 + offset: + description: |- + offset is a numeric offset that can be used when key is unavailable. + It is less efficient than using key. Only one of offset or key should + be set. + type: string + format: uint64 + reverse: + description: |- + reverse is set to true if results are to be returned in the descending order. + + Since: cosmos-sdk 0.43 + type: boolean + cosmos.base.query.v1beta1.PageResponse: + description: |- + PageResponse is to be embedded in gRPC response messages where the + corresponding request message has used PageRequest. + + message SomeResponse { + repeated Bar results = 1; + PageResponse page = 2; + } + type: object + properties: + next_key: + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + type: string + format: byte + total: + type: string + format: uint64 + title: |- + total is total number of results available if PageRequest.count_total + was set, its value is undefined otherwise + cosmos.base.reflection.v1beta1.ListAllInterfacesResponse: + description: ListAllInterfacesResponse is the response type of the ListAllInterfaces RPC. + type: object + properties: + interface_names: + description: interface_names is an array of all the registered interfaces. + type: array + items: + type: string + cosmos.base.reflection.v1beta1.ListImplementationsResponse: + description: |- + ListImplementationsResponse is the response type of the ListImplementations + RPC. + type: object + properties: + implementation_message_names: + type: array + items: + type: string + cosmos.base.reflection.v2alpha1.AuthnDescriptor: + type: object + title: |- + AuthnDescriptor provides information on how to sign transactions without relying + on the online RPCs GetTxMetadata and CombineUnsignedTxAndSignatures + properties: + sign_modes: + type: array + title: sign_modes defines the supported signature algorithm + items: + type: object + $ref: '#/definitions/cosmos.base.reflection.v2alpha1.SigningModeDescriptor' + cosmos.base.reflection.v2alpha1.ChainDescriptor: + type: object + title: ChainDescriptor describes chain information of the application + properties: + id: + type: string + title: id is the chain id + cosmos.base.reflection.v2alpha1.CodecDescriptor: + type: object + title: CodecDescriptor describes the registered interfaces and provides metadata information on the types + properties: + interfaces: + type: array + title: interfaces is a list of the registerted interfaces descriptors + items: + type: object + $ref: '#/definitions/cosmos.base.reflection.v2alpha1.InterfaceDescriptor' + cosmos.base.reflection.v2alpha1.ConfigurationDescriptor: + type: object + title: ConfigurationDescriptor contains metadata information on the sdk.Config + properties: + bech32_account_address_prefix: + type: string + title: bech32_account_address_prefix is the account address prefix + cosmos.base.reflection.v2alpha1.GetAuthnDescriptorResponse: + type: object + title: GetAuthnDescriptorResponse is the response returned by the GetAuthnDescriptor RPC + properties: + authn: + title: authn describes how to authenticate to the application when sending transactions + $ref: '#/definitions/cosmos.base.reflection.v2alpha1.AuthnDescriptor' + cosmos.base.reflection.v2alpha1.GetChainDescriptorResponse: + type: object + title: GetChainDescriptorResponse is the response returned by the GetChainDescriptor RPC + properties: + chain: + title: chain describes application chain information + $ref: '#/definitions/cosmos.base.reflection.v2alpha1.ChainDescriptor' + cosmos.base.reflection.v2alpha1.GetCodecDescriptorResponse: + type: object + title: GetCodecDescriptorResponse is the response returned by the GetCodecDescriptor RPC + properties: + codec: + title: codec describes the application codec such as registered interfaces and implementations + $ref: '#/definitions/cosmos.base.reflection.v2alpha1.CodecDescriptor' + cosmos.base.reflection.v2alpha1.GetConfigurationDescriptorResponse: + type: object + title: GetConfigurationDescriptorResponse is the response returned by the GetConfigurationDescriptor RPC + properties: + config: + title: config describes the application's sdk.Config + $ref: '#/definitions/cosmos.base.reflection.v2alpha1.ConfigurationDescriptor' + cosmos.base.reflection.v2alpha1.GetQueryServicesDescriptorResponse: + type: object + title: GetQueryServicesDescriptorResponse is the response returned by the GetQueryServicesDescriptor RPC + properties: + queries: + title: queries provides information on the available queryable services + $ref: '#/definitions/cosmos.base.reflection.v2alpha1.QueryServicesDescriptor' + cosmos.base.reflection.v2alpha1.GetTxDescriptorResponse: + type: object + title: GetTxDescriptorResponse is the response returned by the GetTxDescriptor RPC + properties: + tx: + title: |- + tx provides information on msgs that can be forwarded to the application + alongside the accepted transaction protobuf type + $ref: '#/definitions/cosmos.base.reflection.v2alpha1.TxDescriptor' + cosmos.base.reflection.v2alpha1.InterfaceAcceptingMessageDescriptor: + type: object + title: |- + InterfaceAcceptingMessageDescriptor describes a protobuf message which contains + an interface represented as a google.protobuf.Any + properties: + field_descriptor_names: + type: array + title: |- + field_descriptor_names is a list of the protobuf name (not fullname) of the field + which contains the interface as google.protobuf.Any (the interface is the same, but + it can be in multiple fields of the same proto message) + items: + type: string + fullname: + type: string + title: fullname is the protobuf fullname of the type containing the interface + cosmos.base.reflection.v2alpha1.InterfaceDescriptor: + type: object + title: InterfaceDescriptor describes the implementation of an interface + properties: + fullname: + type: string + title: fullname is the name of the interface + interface_accepting_messages: + type: array + title: |- + interface_accepting_messages contains information regarding the proto messages which contain the interface as + google.protobuf.Any field + items: + type: object + $ref: '#/definitions/cosmos.base.reflection.v2alpha1.InterfaceAcceptingMessageDescriptor' + interface_implementers: + type: array + title: interface_implementers is a list of the descriptors of the interface implementers + items: + type: object + $ref: '#/definitions/cosmos.base.reflection.v2alpha1.InterfaceImplementerDescriptor' + cosmos.base.reflection.v2alpha1.InterfaceImplementerDescriptor: + type: object + title: InterfaceImplementerDescriptor describes an interface implementer + properties: + fullname: + type: string + title: fullname is the protobuf queryable name of the interface implementer + type_url: + type: string + title: |- + type_url defines the type URL used when marshalling the type as any + this is required so we can provide type safe google.protobuf.Any marshalling and + unmarshalling, making sure that we don't accept just 'any' type + in our interface fields + cosmos.base.reflection.v2alpha1.MsgDescriptor: + type: object + title: MsgDescriptor describes a cosmos-sdk message that can be delivered with a transaction + properties: + msg_type_url: + description: msg_type_url contains the TypeURL of a sdk.Msg. + type: string + cosmos.base.reflection.v2alpha1.QueryMethodDescriptor: + type: object + title: |- + QueryMethodDescriptor describes a queryable method of a query service + no other info is provided beside method name and tendermint queryable path + because it would be redundant with the grpc reflection service + properties: + full_query_path: + type: string + title: |- + full_query_path is the path that can be used to query + this method via tendermint abci.Query + name: + type: string + title: name is the protobuf name (not fullname) of the method + cosmos.base.reflection.v2alpha1.QueryServiceDescriptor: + type: object + title: QueryServiceDescriptor describes a cosmos-sdk queryable service + properties: + fullname: + type: string + title: fullname is the protobuf fullname of the service descriptor + is_module: + type: boolean + title: is_module describes if this service is actually exposed by an application's module + methods: + type: array + title: methods provides a list of query service methods + items: + type: object + $ref: '#/definitions/cosmos.base.reflection.v2alpha1.QueryMethodDescriptor' + cosmos.base.reflection.v2alpha1.QueryServicesDescriptor: + type: object + title: QueryServicesDescriptor contains the list of cosmos-sdk queriable services + properties: + query_services: + type: array + title: query_services is a list of cosmos-sdk QueryServiceDescriptor + items: + type: object + $ref: '#/definitions/cosmos.base.reflection.v2alpha1.QueryServiceDescriptor' + cosmos.base.reflection.v2alpha1.SigningModeDescriptor: + type: object + title: |- + SigningModeDescriptor provides information on a signing flow of the application + NOTE(fdymylja): here we could go as far as providing an entire flow on how + to sign a message given a SigningModeDescriptor, but it's better to think about + this another time + properties: + authn_info_provider_method_fullname: + type: string + title: |- + authn_info_provider_method_fullname defines the fullname of the method to call to get + the metadata required to authenticate using the provided sign_modes + name: + type: string + title: name defines the unique name of the signing mode + number: + type: integer + format: int32 + title: number is the unique int32 identifier for the sign_mode enum + cosmos.base.reflection.v2alpha1.TxDescriptor: + type: object + title: TxDescriptor describes the accepted transaction type + properties: + fullname: + description: |- + fullname is the protobuf fullname of the raw transaction type (for instance the tx.Tx type) + it is not meant to support polymorphism of transaction types, it is supposed to be used by + reflection clients to understand if they can handle a specific transaction type in an application. + type: string + msgs: + type: array + title: msgs lists the accepted application messages (sdk.Msg) + items: + type: object + $ref: '#/definitions/cosmos.base.reflection.v2alpha1.MsgDescriptor' + cosmos.base.tendermint.v1beta1.ABCIQueryResponse: + description: |- + ABCIQueryResponse defines the response structure for the ABCIQuery gRPC query. + + Note: This type is a duplicate of the ResponseQuery proto type defined in + Tendermint. + type: object + properties: + code: + type: integer + format: int64 + codespace: + type: string + height: + type: string + format: int64 + index: + type: string + format: int64 + info: + type: string + title: nondeterministic + key: + type: string + format: byte + log: + type: string + title: nondeterministic + proof_ops: + $ref: '#/definitions/cosmos.base.tendermint.v1beta1.ProofOps' + value: + type: string + format: byte + cosmos.base.tendermint.v1beta1.Block: + description: |- + Block is tendermint type Block, with the Header proposer address + field converted to bech32 string. + type: object + properties: + data: + $ref: '#/definitions/tendermint.types.Data' + evidence: + $ref: '#/definitions/tendermint.types.EvidenceList' + header: + $ref: '#/definitions/cosmos.base.tendermint.v1beta1.Header' + last_commit: + $ref: '#/definitions/tendermint.types.Commit' + cosmos.base.tendermint.v1beta1.GetBlockByHeightResponse: + description: GetBlockByHeightResponse is the response type for the Query/GetBlockByHeight RPC method. + type: object + properties: + block: + title: 'Deprecated: please use `sdk_block` instead' + $ref: '#/definitions/tendermint.types.Block' + block_id: + $ref: '#/definitions/tendermint.types.BlockID' + sdk_block: + title: 'Since: cosmos-sdk 0.47' + $ref: '#/definitions/cosmos.base.tendermint.v1beta1.Block' + cosmos.base.tendermint.v1beta1.GetLatestBlockResponse: + description: GetLatestBlockResponse is the response type for the Query/GetLatestBlock RPC method. + type: object + properties: + block: + title: 'Deprecated: please use `sdk_block` instead' + $ref: '#/definitions/tendermint.types.Block' + block_id: + $ref: '#/definitions/tendermint.types.BlockID' + sdk_block: + title: 'Since: cosmos-sdk 0.47' + $ref: '#/definitions/cosmos.base.tendermint.v1beta1.Block' + cosmos.base.tendermint.v1beta1.GetLatestValidatorSetResponse: + description: GetLatestValidatorSetResponse is the response type for the Query/GetValidatorSetByHeight RPC method. + type: object + properties: + block_height: + type: string + format: int64 + pagination: + description: pagination defines an pagination for the response. + $ref: '#/definitions/cosmos.base.query.v1beta1.PageResponse' + validators: + type: array + items: + type: object + $ref: '#/definitions/cosmos.base.tendermint.v1beta1.Validator' + cosmos.base.tendermint.v1beta1.GetNodeInfoResponse: + description: GetNodeInfoResponse is the response type for the Query/GetNodeInfo RPC method. + type: object + properties: + application_version: + $ref: '#/definitions/cosmos.base.tendermint.v1beta1.VersionInfo' + default_node_info: + $ref: '#/definitions/tendermint.p2p.DefaultNodeInfo' + cosmos.base.tendermint.v1beta1.GetSyncingResponse: + description: GetSyncingResponse is the response type for the Query/GetSyncing RPC method. + type: object + properties: + syncing: + type: boolean + cosmos.base.tendermint.v1beta1.GetValidatorSetByHeightResponse: + description: GetValidatorSetByHeightResponse is the response type for the Query/GetValidatorSetByHeight RPC method. + type: object + properties: + block_height: + type: string + format: int64 + pagination: + description: pagination defines an pagination for the response. + $ref: '#/definitions/cosmos.base.query.v1beta1.PageResponse' + validators: + type: array + items: + type: object + $ref: '#/definitions/cosmos.base.tendermint.v1beta1.Validator' + cosmos.base.tendermint.v1beta1.Header: + description: Header defines the structure of a Tendermint block header. + type: object + properties: + app_hash: + type: string + format: byte + title: state after txs from the previous block + chain_id: + type: string + consensus_hash: + type: string + format: byte + title: consensus params for current block + data_hash: + type: string + format: byte + title: transactions + evidence_hash: + description: evidence included in the block + type: string + format: byte + title: consensus info + height: + type: string + format: int64 + last_block_id: + title: prev block info + $ref: '#/definitions/tendermint.types.BlockID' + last_commit_hash: + description: commit from validators from the last block + type: string + format: byte + title: hashes of block data + last_results_hash: + type: string + format: byte + title: root hash of all results from the txs from the previous block + next_validators_hash: + type: string + format: byte + title: validators for the next block + proposer_address: + description: |- + proposer_address is the original block proposer address, formatted as a Bech32 string. + In Tendermint, this type is `bytes`, but in the SDK, we convert it to a Bech32 string + for better UX. + + original proposer of the block + type: string + time: + type: string + format: date-time + validators_hash: + description: validators for the current block + type: string + format: byte + title: hashes from the app output from the prev block + version: + title: basic block info + $ref: '#/definitions/tendermint.version.Consensus' + cosmos.base.tendermint.v1beta1.Module: + type: object + title: Module is the type for VersionInfo + properties: + path: + type: string + title: module path + sum: + type: string + title: checksum + version: + type: string + title: module version + cosmos.base.tendermint.v1beta1.ProofOp: + description: |- + ProofOp defines an operation used for calculating Merkle root. The data could + be arbitrary format, providing necessary data for example neighbouring node + hash. + + Note: This type is a duplicate of the ProofOp proto type defined in Tendermint. + type: object + properties: + data: + type: string + format: byte + key: + type: string + format: byte + type: + type: string + cosmos.base.tendermint.v1beta1.ProofOps: + description: |- + ProofOps is Merkle proof defined by the list of ProofOps. + + Note: This type is a duplicate of the ProofOps proto type defined in Tendermint. + type: object + properties: + ops: + type: array + items: + type: object + $ref: '#/definitions/cosmos.base.tendermint.v1beta1.ProofOp' + cosmos.base.tendermint.v1beta1.Validator: + description: Validator is the type for the validator-set. + type: object + properties: + address: + type: string + proposer_priority: + type: string + format: int64 + pub_key: + $ref: '#/definitions/google.protobuf.Any' + voting_power: + type: string + format: int64 + cosmos.base.tendermint.v1beta1.VersionInfo: + description: VersionInfo is the type for the GetNodeInfoResponse message. + type: object + properties: + app_name: + type: string + build_deps: + type: array + items: + type: object + $ref: '#/definitions/cosmos.base.tendermint.v1beta1.Module' + build_tags: + type: string + cosmos_sdk_version: + type: string + title: 'Since: cosmos-sdk 0.43' + git_commit: + type: string + go_version: + type: string + name: + type: string + version: + type: string + cosmos.base.v1beta1.Coin: + 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. + type: object + properties: + amount: + type: string + denom: + type: string + cosmos.base.v1beta1.DecCoin: + 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. + type: object + properties: + amount: + type: string + denom: + type: string + cosmos.circuit.v1.AccountResponse: + description: AccountResponse is the response type for the Query/Account RPC method. + type: object + properties: + permission: + $ref: '#/definitions/cosmos.circuit.v1.Permissions' + cosmos.circuit.v1.AccountsResponse: + description: AccountsResponse is the response type for the Query/Accounts RPC method. + type: object + properties: + accounts: + type: array + items: + type: object + $ref: '#/definitions/cosmos.circuit.v1.GenesisAccountPermissions' + pagination: + description: pagination defines the pagination in the response. + $ref: '#/definitions/cosmos.base.query.v1beta1.PageResponse' + cosmos.circuit.v1.DisabledListResponse: + description: DisabledListResponse is the response type for the Query/DisabledList RPC method. + type: object + properties: + disabled_list: + type: array + items: + type: string + cosmos.circuit.v1.GenesisAccountPermissions: + type: object + title: GenesisAccountPermissions is the account permissions for the circuit breaker in genesis + properties: + address: + type: string + permissions: + $ref: '#/definitions/cosmos.circuit.v1.Permissions' + cosmos.circuit.v1.MsgAuthorizeCircuitBreaker: + description: MsgAuthorizeCircuitBreaker defines the Msg/AuthorizeCircuitBreaker request type. + type: object + properties: + grantee: + description: grantee is the account authorized with the provided permissions. + type: string + granter: + description: |- + granter is the granter of the circuit breaker permissions and must have + LEVEL_SUPER_ADMIN. + type: string + permissions: + description: |- + permissions are the circuit breaker permissions that the grantee receives. + These will overwrite any existing permissions. LEVEL_NONE_UNSPECIFIED can + be specified to revoke all permissions. + $ref: '#/definitions/cosmos.circuit.v1.Permissions' + cosmos.circuit.v1.MsgAuthorizeCircuitBreakerResponse: + description: MsgAuthorizeCircuitBreakerResponse defines the Msg/AuthorizeCircuitBreaker response type. + type: object + properties: + success: + type: boolean + cosmos.circuit.v1.MsgResetCircuitBreaker: + description: MsgResetCircuitBreaker defines the Msg/ResetCircuitBreaker request type. + type: object + properties: + authority: + description: authority is the account authorized to trip or reset the circuit breaker. + type: string + msg_type_urls: + description: |- + msg_type_urls specifies a list of Msg type URLs to resume processing. If + it is left empty all Msg processing for type URLs that the account is + authorized to trip will resume. + type: array + items: + type: string + cosmos.circuit.v1.MsgResetCircuitBreakerResponse: + description: MsgResetCircuitBreakerResponse defines the Msg/ResetCircuitBreaker response type. + type: object + properties: + success: + type: boolean + cosmos.circuit.v1.MsgTripCircuitBreaker: + description: MsgTripCircuitBreaker defines the Msg/TripCircuitBreaker request type. + type: object + properties: + authority: + description: authority is the account authorized to trip the circuit breaker. + type: string + msg_type_urls: + description: |- + msg_type_urls specifies a list of type URLs to immediately stop processing. + IF IT IS LEFT EMPTY, ALL MSG PROCESSING WILL STOP IMMEDIATELY. + This value is validated against the authority's permissions and if the + authority does not have permissions to trip the specified msg type URLs + (or all URLs), the operation will fail. + type: array + items: + type: string + cosmos.circuit.v1.MsgTripCircuitBreakerResponse: + description: MsgTripCircuitBreakerResponse defines the Msg/TripCircuitBreaker response type. + type: object + properties: + success: + type: boolean + cosmos.circuit.v1.Permissions: + description: |- + Permissions are the permissions that an account has to trip + or reset the circuit breaker. + type: object + properties: + level: + description: level is the level of permissions granted to this account. + $ref: '#/definitions/cosmos.circuit.v1.Permissions.Level' + limit_type_urls: + description: |- + limit_type_urls is used with LEVEL_SOME_MSGS to limit the lists of Msg type + URLs that the account can trip. It is an error to use limit_type_urls with + a level other than LEVEL_SOME_MSGS. + type: array + items: + type: string + cosmos.circuit.v1.Permissions.Level: + description: |- + Level is the permission level. + + - LEVEL_NONE_UNSPECIFIED: LEVEL_NONE_UNSPECIFIED indicates that the account will have no circuit + breaker permissions. + - LEVEL_SOME_MSGS: LEVEL_SOME_MSGS indicates that the account will have permission to + trip or reset the circuit breaker for some Msg type URLs. If this level + is chosen, a non-empty list of Msg type URLs must be provided in + limit_type_urls. + - LEVEL_ALL_MSGS: LEVEL_ALL_MSGS indicates that the account can trip or reset the circuit + breaker for Msg's of all type URLs. + - LEVEL_SUPER_ADMIN: LEVEL_SUPER_ADMIN indicates that the account can take all circuit breaker + actions and can grant permissions to other accounts. + type: string + default: LEVEL_NONE_UNSPECIFIED + enum: + - LEVEL_NONE_UNSPECIFIED + - LEVEL_SOME_MSGS + - LEVEL_ALL_MSGS + - LEVEL_SUPER_ADMIN + cosmos.consensus.v1.MsgUpdateParams: + description: MsgUpdateParams is the Msg/UpdateParams request type. + type: object + properties: + abci: + title: 'Since: cosmos-sdk 0.50' + $ref: '#/definitions/tendermint.types.ABCIParams' + authority: + description: authority is the address that controls the module (defaults to x/gov unless overwritten). + type: string + block: + description: |- + params defines the x/consensus parameters to update. + VersionsParams is not included in this Msg because it is tracked + separarately in x/upgrade. + + NOTE: All parameters must be supplied. + $ref: '#/definitions/tendermint.types.BlockParams' + evidence: + $ref: '#/definitions/tendermint.types.EvidenceParams' + validator: + $ref: '#/definitions/tendermint.types.ValidatorParams' + cosmos.consensus.v1.MsgUpdateParamsResponse: + description: |- + MsgUpdateParamsResponse defines the response structure for executing a + MsgUpdateParams message. + type: object + cosmos.consensus.v1.QueryParamsResponse: + description: QueryParamsResponse defines the response type for querying x/consensus parameters. + type: object + properties: + params: + description: |- + params are the tendermint consensus params stored in the consensus module. + Please note that `params.version` is not populated in this response, it is + tracked separately in the x/upgrade module. + $ref: '#/definitions/tendermint.types.ConsensusParams' + cosmos.crisis.v1beta1.MsgUpdateParams: + description: |- + MsgUpdateParams is the Msg/UpdateParams request type. + + Since: cosmos-sdk 0.47 + type: object + properties: + authority: + description: authority is the address that controls the module (defaults to x/gov unless overwritten). + type: string + constant_fee: + description: constant_fee defines the x/crisis parameter. + $ref: '#/definitions/cosmos.base.v1beta1.Coin' + cosmos.crisis.v1beta1.MsgUpdateParamsResponse: + description: |- + MsgUpdateParamsResponse defines the response structure for executing a + MsgUpdateParams message. + + Since: cosmos-sdk 0.47 + type: object + cosmos.crisis.v1beta1.MsgVerifyInvariant: + description: MsgVerifyInvariant represents a message to verify a particular invariance. + type: object + properties: + invariant_module_name: + description: name of the invariant module. + type: string + invariant_route: + description: invariant_route is the msg's invariant route. + type: string + sender: + description: sender is the account address of private key to send coins to fee collector account. + type: string + cosmos.crisis.v1beta1.MsgVerifyInvariantResponse: + description: MsgVerifyInvariantResponse defines the Msg/VerifyInvariant response type. + type: object + cosmos.crypto.multisig.v1beta1.CompactBitArray: + description: |- + CompactBitArray is an implementation of a space efficient bit array. + This is used to ensure that the encoded data takes up a minimal amount of + space after proto encoding. + This is not thread safe, and is not intended for concurrent usage. + type: object + properties: + elems: + type: string + format: byte + extra_bits_stored: + type: integer + format: int64 + cosmos.distribution.v1beta1.DelegationDelegatorReward: + description: |- + DelegationDelegatorReward represents the properties + of a delegator's delegation reward. + type: object + properties: + reward: + type: array + items: + type: object + $ref: '#/definitions/cosmos.base.v1beta1.DecCoin' + validator_address: + type: string + cosmos.distribution.v1beta1.MsgCommunityPoolSpend: + description: |- + MsgCommunityPoolSpend defines a message for sending tokens from the community + pool to another account. This message is typically executed via a governance + proposal with the governance module being the executing authority. + + Since: cosmos-sdk 0.47 + type: object + properties: + amount: + type: array + items: + type: object + $ref: '#/definitions/cosmos.base.v1beta1.Coin' + authority: + description: authority is the address that controls the module (defaults to x/gov unless overwritten). + type: string + recipient: + type: string + cosmos.distribution.v1beta1.MsgCommunityPoolSpendResponse: + description: |- + MsgCommunityPoolSpendResponse defines the response to executing a + MsgCommunityPoolSpend message. + + Since: cosmos-sdk 0.47 + type: object + cosmos.distribution.v1beta1.MsgDepositValidatorRewardsPool: + description: |- + DepositValidatorRewardsPool defines the request structure to provide + additional rewards to delegators from a specific validator. + + Since: cosmos-sdk 0.50 + type: object + properties: + amount: + type: array + items: + type: object + $ref: '#/definitions/cosmos.base.v1beta1.Coin' + depositor: + type: string + validator_address: + type: string + cosmos.distribution.v1beta1.MsgDepositValidatorRewardsPoolResponse: + description: |- + MsgDepositValidatorRewardsPoolResponse defines the response to executing a + MsgDepositValidatorRewardsPool message. + + Since: cosmos-sdk 0.50 + type: object + cosmos.distribution.v1beta1.MsgFundCommunityPool: + description: |- + MsgFundCommunityPool allows an account to directly + fund the community pool. + type: object + properties: + amount: + type: array + items: + type: object + $ref: '#/definitions/cosmos.base.v1beta1.Coin' + depositor: + type: string + cosmos.distribution.v1beta1.MsgFundCommunityPoolResponse: + description: MsgFundCommunityPoolResponse defines the Msg/FundCommunityPool response type. + type: object + cosmos.distribution.v1beta1.MsgSetWithdrawAddress: + description: |- + MsgSetWithdrawAddress sets the withdraw address for + a delegator (or validator self-delegation). + type: object + properties: + delegator_address: + type: string + withdraw_address: + type: string + cosmos.distribution.v1beta1.MsgSetWithdrawAddressResponse: + description: |- + MsgSetWithdrawAddressResponse defines the Msg/SetWithdrawAddress response + type. + type: object + cosmos.distribution.v1beta1.MsgUpdateParams: + description: |- + MsgUpdateParams is the Msg/UpdateParams request type. + + Since: cosmos-sdk 0.47 + type: object + properties: + authority: + description: authority is the address that controls the module (defaults to x/gov unless overwritten). + type: string + params: + description: |- + params defines the x/distribution parameters to update. + + NOTE: All parameters must be supplied. + $ref: '#/definitions/cosmos.distribution.v1beta1.Params' + cosmos.distribution.v1beta1.MsgUpdateParamsResponse: + description: |- + MsgUpdateParamsResponse defines the response structure for executing a + MsgUpdateParams message. + + Since: cosmos-sdk 0.47 + type: object + cosmos.distribution.v1beta1.MsgWithdrawDelegatorReward: + description: |- + MsgWithdrawDelegatorReward represents delegation withdrawal to a delegator + from a single validator. + type: object + properties: + delegator_address: + type: string + validator_address: + type: string + cosmos.distribution.v1beta1.MsgWithdrawDelegatorRewardResponse: + description: |- + MsgWithdrawDelegatorRewardResponse defines the Msg/WithdrawDelegatorReward + response type. + type: object + properties: + amount: + type: array + title: 'Since: cosmos-sdk 0.46' + items: + type: object + $ref: '#/definitions/cosmos.base.v1beta1.Coin' + cosmos.distribution.v1beta1.MsgWithdrawValidatorCommission: + description: |- + MsgWithdrawValidatorCommission withdraws the full commission to the validator + address. + type: object + properties: + validator_address: + type: string + cosmos.distribution.v1beta1.MsgWithdrawValidatorCommissionResponse: + description: |- + MsgWithdrawValidatorCommissionResponse defines the + Msg/WithdrawValidatorCommission response type. + type: object + properties: + amount: + type: array + title: 'Since: cosmos-sdk 0.46' + items: + type: object + $ref: '#/definitions/cosmos.base.v1beta1.Coin' + cosmos.distribution.v1beta1.Params: + description: Params defines the set of params for the distribution module. + type: object + properties: + base_proposer_reward: + description: |- + Deprecated: The base_proposer_reward field is deprecated and is no longer used + in the x/distribution module's reward mechanism. + type: string + bonus_proposer_reward: + description: |- + Deprecated: The bonus_proposer_reward field is deprecated and is no longer used + in the x/distribution module's reward mechanism. + type: string + community_tax: + type: string + withdraw_addr_enabled: + type: boolean + cosmos.distribution.v1beta1.QueryCommunityPoolResponse: + description: |- + QueryCommunityPoolResponse is the response type for the Query/CommunityPool + RPC method. + type: object + properties: + pool: + description: pool defines community pool's coins. + type: array + items: + type: object + $ref: '#/definitions/cosmos.base.v1beta1.DecCoin' + cosmos.distribution.v1beta1.QueryDelegationRewardsResponse: + description: |- + QueryDelegationRewardsResponse is the response type for the + Query/DelegationRewards RPC method. + type: object + properties: + rewards: + description: rewards defines the rewards accrued by a delegation. + type: array + items: + type: object + $ref: '#/definitions/cosmos.base.v1beta1.DecCoin' + cosmos.distribution.v1beta1.QueryDelegationTotalRewardsResponse: + description: |- + QueryDelegationTotalRewardsResponse is the response type for the + Query/DelegationTotalRewards RPC method. + type: object + properties: + rewards: + description: rewards defines all the rewards accrued by a delegator. + type: array + items: + type: object + $ref: '#/definitions/cosmos.distribution.v1beta1.DelegationDelegatorReward' + total: + description: total defines the sum of all the rewards. + type: array + items: + type: object + $ref: '#/definitions/cosmos.base.v1beta1.DecCoin' + cosmos.distribution.v1beta1.QueryDelegatorValidatorsResponse: + description: |- + QueryDelegatorValidatorsResponse is the response type for the + Query/DelegatorValidators RPC method. + type: object + properties: + validators: + description: validators defines the validators a delegator is delegating for. + type: array + items: + type: string + cosmos.distribution.v1beta1.QueryDelegatorWithdrawAddressResponse: + description: |- + QueryDelegatorWithdrawAddressResponse is the response type for the + Query/DelegatorWithdrawAddress RPC method. + type: object + properties: + withdraw_address: + description: withdraw_address defines the delegator address to query for. + type: string + cosmos.distribution.v1beta1.QueryParamsResponse: + description: QueryParamsResponse is the response type for the Query/Params RPC method. + type: object + properties: + params: + description: params defines the parameters of the module. + $ref: '#/definitions/cosmos.distribution.v1beta1.Params' + cosmos.distribution.v1beta1.QueryValidatorCommissionResponse: + type: object + title: |- + QueryValidatorCommissionResponse is the response type for the + Query/ValidatorCommission RPC method + properties: + commission: + description: commission defines the commission the validator received. + $ref: '#/definitions/cosmos.distribution.v1beta1.ValidatorAccumulatedCommission' + cosmos.distribution.v1beta1.QueryValidatorDistributionInfoResponse: + description: QueryValidatorDistributionInfoResponse is the response type for the Query/ValidatorDistributionInfo RPC method. + type: object + properties: + commission: + description: commission defines the commission the validator received. + type: array + items: + type: object + $ref: '#/definitions/cosmos.base.v1beta1.DecCoin' + operator_address: + description: operator_address defines the validator operator address. + type: string + self_bond_rewards: + description: self_bond_rewards defines the self delegations rewards. + type: array + items: + type: object + $ref: '#/definitions/cosmos.base.v1beta1.DecCoin' + cosmos.distribution.v1beta1.QueryValidatorOutstandingRewardsResponse: + description: |- + QueryValidatorOutstandingRewardsResponse is the response type for the + Query/ValidatorOutstandingRewards RPC method. + type: object + properties: + rewards: + $ref: '#/definitions/cosmos.distribution.v1beta1.ValidatorOutstandingRewards' + cosmos.distribution.v1beta1.QueryValidatorSlashesResponse: + description: |- + QueryValidatorSlashesResponse is the response type for the + Query/ValidatorSlashes RPC method. + type: object + properties: + pagination: + description: pagination defines the pagination in the response. + $ref: '#/definitions/cosmos.base.query.v1beta1.PageResponse' + slashes: + description: slashes defines the slashes the validator received. + type: array + items: + type: object + $ref: '#/definitions/cosmos.distribution.v1beta1.ValidatorSlashEvent' + cosmos.distribution.v1beta1.ValidatorAccumulatedCommission: + description: |- + ValidatorAccumulatedCommission represents accumulated commission + for a validator kept as a running counter, can be withdrawn at any time. + type: object + properties: + commission: + type: array + items: + type: object + $ref: '#/definitions/cosmos.base.v1beta1.DecCoin' + cosmos.distribution.v1beta1.ValidatorOutstandingRewards: + description: |- + ValidatorOutstandingRewards represents outstanding (un-withdrawn) rewards + for a validator inexpensive to track, allows simple sanity checks. + type: object + properties: + rewards: + type: array + items: + type: object + $ref: '#/definitions/cosmos.base.v1beta1.DecCoin' + cosmos.distribution.v1beta1.ValidatorSlashEvent: + description: |- + ValidatorSlashEvent represents a validator slash event. + Height is implicit within the store key. + This is needed to calculate appropriate amount of staking tokens + for delegations which are withdrawn after a slash has occurred. + type: object + properties: + fraction: + type: string + validator_period: + type: string + format: uint64 + cosmos.evidence.v1beta1.MsgSubmitEvidence: + description: |- + MsgSubmitEvidence represents a message that supports submitting arbitrary + Evidence of misbehavior such as equivocation or counterfactual signing. + type: object + properties: + evidence: + description: evidence defines the evidence of misbehavior. + $ref: '#/definitions/google.protobuf.Any' + submitter: + description: submitter is the signer account address of evidence. + type: string + cosmos.evidence.v1beta1.MsgSubmitEvidenceResponse: + description: MsgSubmitEvidenceResponse defines the Msg/SubmitEvidence response type. + type: object + properties: + hash: + description: hash defines the hash of the evidence. + type: string + format: byte + cosmos.evidence.v1beta1.QueryAllEvidenceResponse: + description: |- + QueryAllEvidenceResponse is the response type for the Query/AllEvidence RPC + method. + type: object + properties: + evidence: + description: evidence returns all evidences. + type: array + items: + type: object + $ref: '#/definitions/google.protobuf.Any' + pagination: + description: pagination defines the pagination in the response. + $ref: '#/definitions/cosmos.base.query.v1beta1.PageResponse' + cosmos.evidence.v1beta1.QueryEvidenceResponse: + description: QueryEvidenceResponse is the response type for the Query/Evidence RPC method. + type: object + properties: + evidence: + description: evidence returns the requested evidence. + $ref: '#/definitions/google.protobuf.Any' + cosmos.feegrant.v1beta1.Grant: + type: object + title: Grant is stored in the KVStore to record a grant with full context + properties: + allowance: + description: allowance can be any of basic, periodic, allowed fee allowance. + $ref: '#/definitions/google.protobuf.Any' + grantee: + description: grantee is the address of the user being granted an allowance of another user's funds. + type: string + granter: + description: granter is the address of the user granting an allowance of their funds. + type: string + cosmos.feegrant.v1beta1.MsgGrantAllowance: + description: |- + MsgGrantAllowance adds permission for Grantee to spend up to Allowance + of fees from the account of Granter. + type: object + properties: + allowance: + description: allowance can be any of basic, periodic, allowed fee allowance. + $ref: '#/definitions/google.protobuf.Any' + grantee: + description: grantee is the address of the user being granted an allowance of another user's funds. + type: string + granter: + description: granter is the address of the user granting an allowance of their funds. + type: string + cosmos.feegrant.v1beta1.MsgGrantAllowanceResponse: + description: MsgGrantAllowanceResponse defines the Msg/GrantAllowanceResponse response type. + type: object + cosmos.feegrant.v1beta1.MsgPruneAllowances: + description: |- + MsgPruneAllowances prunes expired fee allowances. + + Since cosmos-sdk 0.50 + type: object + properties: + pruner: + description: pruner is the address of the user pruning expired allowances. + type: string + cosmos.feegrant.v1beta1.MsgPruneAllowancesResponse: + description: |- + MsgPruneAllowancesResponse defines the Msg/PruneAllowancesResponse response type. + + Since cosmos-sdk 0.50 + type: object + cosmos.feegrant.v1beta1.MsgRevokeAllowance: + description: MsgRevokeAllowance removes any existing Allowance from Granter to Grantee. + type: object + properties: + grantee: + description: grantee is the address of the user being granted an allowance of another user's funds. + type: string + granter: + description: granter is the address of the user granting an allowance of their funds. + type: string + cosmos.feegrant.v1beta1.MsgRevokeAllowanceResponse: + description: MsgRevokeAllowanceResponse defines the Msg/RevokeAllowanceResponse response type. + type: object + cosmos.feegrant.v1beta1.QueryAllowanceResponse: + description: QueryAllowanceResponse is the response type for the Query/Allowance RPC method. + type: object + properties: + allowance: + description: allowance is a allowance granted for grantee by granter. + $ref: '#/definitions/cosmos.feegrant.v1beta1.Grant' + cosmos.feegrant.v1beta1.QueryAllowancesByGranterResponse: + description: |- + QueryAllowancesByGranterResponse is the response type for the Query/AllowancesByGranter RPC method. + + Since: cosmos-sdk 0.46 + type: object + properties: + allowances: + description: allowances that have been issued by the granter. + type: array + items: + type: object + $ref: '#/definitions/cosmos.feegrant.v1beta1.Grant' + pagination: + description: pagination defines an pagination for the response. + $ref: '#/definitions/cosmos.base.query.v1beta1.PageResponse' + cosmos.feegrant.v1beta1.QueryAllowancesResponse: + description: QueryAllowancesResponse is the response type for the Query/Allowances RPC method. + type: object + properties: + allowances: + description: allowances are allowance's granted for grantee by granter. + type: array + items: + type: object + $ref: '#/definitions/cosmos.feegrant.v1beta1.Grant' + pagination: + description: pagination defines an pagination for the response. + $ref: '#/definitions/cosmos.base.query.v1beta1.PageResponse' + cosmos.gov.v1.Deposit: + description: |- + Deposit defines an amount deposited by an account address to an active + proposal. + type: object + properties: + amount: + description: amount to be deposited by depositor. + type: array + items: + type: object + $ref: '#/definitions/cosmos.base.v1beta1.Coin' + depositor: + description: depositor defines the deposit addresses from the proposals. + type: string + proposal_id: + description: proposal_id defines the unique id of the proposal. + type: string + format: uint64 + cosmos.gov.v1.DepositParams: + description: DepositParams defines the params for deposits on governance proposals. + type: object + properties: + max_deposit_period: + description: |- + Maximum period for Atom holders to deposit on a proposal. Initial value: 2 + months. + type: string + min_deposit: + description: Minimum deposit for a proposal to enter voting period. + type: array + items: + type: object + $ref: '#/definitions/cosmos.base.v1beta1.Coin' + cosmos.gov.v1.MsgCancelProposal: + description: |- + MsgCancelProposal is the Msg/CancelProposal request type. + + Since: cosmos-sdk 0.50 + type: object + properties: + proposal_id: + description: proposal_id defines the unique id of the proposal. + type: string + format: uint64 + proposer: + description: proposer is the account address of the proposer. + type: string + cosmos.gov.v1.MsgCancelProposalResponse: + description: |- + MsgCancelProposalResponse defines the response structure for executing a + MsgCancelProposal message. + + Since: cosmos-sdk 0.50 + type: object + properties: + canceled_height: + description: canceled_height defines the block height at which the proposal is canceled. + type: string + format: uint64 + canceled_time: + description: canceled_time is the time when proposal is canceled. + type: string + format: date-time + proposal_id: + description: proposal_id defines the unique id of the proposal. + type: string + format: uint64 + cosmos.gov.v1.MsgDeposit: + description: MsgDeposit defines a message to submit a deposit to an existing proposal. + type: object + properties: + amount: + description: amount to be deposited by depositor. + type: array + items: + type: object + $ref: '#/definitions/cosmos.base.v1beta1.Coin' + depositor: + description: depositor defines the deposit addresses from the proposals. + type: string + proposal_id: + description: proposal_id defines the unique id of the proposal. + type: string + format: uint64 + cosmos.gov.v1.MsgDepositResponse: + description: MsgDepositResponse defines the Msg/Deposit response type. + type: object + cosmos.gov.v1.MsgExecLegacyContent: + description: |- + MsgExecLegacyContent is used to wrap the legacy content field into a message. + This ensures backwards compatibility with v1beta1.MsgSubmitProposal. + type: object + properties: + authority: + description: authority must be the gov module address. + type: string + content: + description: content is the proposal's content. + $ref: '#/definitions/google.protobuf.Any' + cosmos.gov.v1.MsgExecLegacyContentResponse: + description: MsgExecLegacyContentResponse defines the Msg/ExecLegacyContent response type. + type: object + cosmos.gov.v1.MsgSubmitProposal: + description: |- + MsgSubmitProposal defines an sdk.Msg type that supports submitting arbitrary + proposal Content. + type: object + properties: + expedited: + description: 'Since: cosmos-sdk 0.50' + type: boolean + title: expedited defines if the proposal is expedited or not + initial_deposit: + description: initial_deposit is the deposit value that must be paid at proposal submission. + type: array + items: + type: object + $ref: '#/definitions/cosmos.base.v1beta1.Coin' + messages: + description: messages are the arbitrary messages to be executed if proposal passes. + type: array + items: + type: object + $ref: '#/definitions/google.protobuf.Any' + metadata: + description: metadata is any arbitrary metadata attached to the proposal. + type: string + proposer: + description: proposer is the account address of the proposer. + type: string + summary: + description: 'Since: cosmos-sdk 0.47' + type: string + title: summary is the summary of the proposal + title: + description: |- + title is the title of the proposal. + + Since: cosmos-sdk 0.47 + type: string + cosmos.gov.v1.MsgSubmitProposalResponse: + description: MsgSubmitProposalResponse defines the Msg/SubmitProposal response type. + type: object + properties: + proposal_id: + description: proposal_id defines the unique id of the proposal. + type: string + format: uint64 + cosmos.gov.v1.MsgUpdateParams: + description: |- + MsgUpdateParams is the Msg/UpdateParams request type. + + Since: cosmos-sdk 0.47 + type: object + properties: + authority: + description: authority is the address that controls the module (defaults to x/gov unless overwritten). + type: string + params: + description: |- + params defines the x/gov parameters to update. + + NOTE: All parameters must be supplied. + $ref: '#/definitions/cosmos.gov.v1.Params' + cosmos.gov.v1.MsgUpdateParamsResponse: + description: |- + MsgUpdateParamsResponse defines the response structure for executing a + MsgUpdateParams message. + + Since: cosmos-sdk 0.47 + type: object + cosmos.gov.v1.MsgVote: + description: MsgVote defines a message to cast a vote. + type: object + properties: + metadata: + description: metadata is any arbitrary metadata attached to the Vote. + type: string + option: + description: option defines the vote option. + $ref: '#/definitions/cosmos.gov.v1.VoteOption' + proposal_id: + description: proposal_id defines the unique id of the proposal. + type: string + format: uint64 + voter: + description: voter is the voter address for the proposal. + type: string + cosmos.gov.v1.MsgVoteResponse: + description: MsgVoteResponse defines the Msg/Vote response type. + type: object + cosmos.gov.v1.MsgVoteWeighted: + description: MsgVoteWeighted defines a message to cast a vote. + type: object + properties: + metadata: + description: metadata is any arbitrary metadata attached to the VoteWeighted. + type: string + options: + description: options defines the weighted vote options. + type: array + items: + type: object + $ref: '#/definitions/cosmos.gov.v1.WeightedVoteOption' + proposal_id: + description: proposal_id defines the unique id of the proposal. + type: string + format: uint64 + voter: + description: voter is the voter address for the proposal. + type: string + cosmos.gov.v1.MsgVoteWeightedResponse: + description: MsgVoteWeightedResponse defines the Msg/VoteWeighted response type. + type: object + cosmos.gov.v1.Params: + description: |- + Params defines the parameters for the x/gov module. + + Since: cosmos-sdk 0.47 + type: object + properties: + burn_proposal_deposit_prevote: + type: boolean + title: burn deposits if the proposal does not enter voting period + burn_vote_quorum: + type: boolean + title: burn deposits if a proposal does not meet quorum + burn_vote_veto: + type: boolean + title: burn deposits if quorum with vote type no_veto is met + expedited_min_deposit: + description: Minimum expedited deposit for a proposal to enter voting period. + type: array + items: + type: object + $ref: '#/definitions/cosmos.base.v1beta1.Coin' + expedited_threshold: + description: |- + Minimum proportion of Yes votes for proposal to pass. Default value: 0.67. + + Since: cosmos-sdk 0.50 + type: string + expedited_voting_period: + description: |- + Duration of the voting period of an expedited proposal. + + Since: cosmos-sdk 0.50 + type: string + max_deposit_period: + description: |- + Maximum period for Atom holders to deposit on a proposal. Initial value: 2 + months. + type: string + min_deposit: + description: Minimum deposit for a proposal to enter voting period. + type: array + items: + type: object + $ref: '#/definitions/cosmos.base.v1beta1.Coin' + min_deposit_ratio: + description: |- + The ratio representing the proportion of the deposit value minimum that must be met when making a deposit. + Default value: 0.01. Meaning that for a chain with a min_deposit of 100stake, a deposit of 1stake would be + required. + + Since: cosmos-sdk 0.50 + type: string + min_initial_deposit_ratio: + description: The ratio representing the proportion of the deposit value that must be paid at proposal submission. + type: string + proposal_cancel_dest: + description: |- + The address which will receive (proposal_cancel_ratio * deposit) proposal deposits. + If empty, the (proposal_cancel_ratio * deposit) proposal deposits will be burned. + + Since: cosmos-sdk 0.50 + type: string + proposal_cancel_ratio: + description: |- + The cancel ratio which will not be returned back to the depositors when a proposal is cancelled. + + Since: cosmos-sdk 0.50 + type: string + quorum: + description: |- + Minimum percentage of total stake needed to vote for a result to be + considered valid. + type: string + threshold: + description: 'Minimum proportion of Yes votes for proposal to pass. Default value: 0.5.' + type: string + veto_threshold: + description: |- + Minimum value of Veto votes to Total votes ratio for proposal to be + vetoed. Default value: 1/3. + type: string + voting_period: + description: Duration of the voting period. + type: string + cosmos.gov.v1.Proposal: + description: Proposal defines the core field members of a governance proposal. + type: object + properties: + deposit_end_time: + description: deposit_end_time is the end time for deposition. + type: string + format: date-time + expedited: + description: 'Since: cosmos-sdk 0.50' + type: boolean + title: expedited defines if the proposal is expedited + failed_reason: + description: 'Since: cosmos-sdk 0.50' + type: string + title: failed_reason defines the reason why the proposal failed + final_tally_result: + description: |- + final_tally_result is the final tally result of the proposal. When + querying a proposal via gRPC, this field is not populated until the + proposal's voting period has ended. + $ref: '#/definitions/cosmos.gov.v1.TallyResult' + id: + description: id defines the unique id of the proposal. + type: string + format: uint64 + messages: + description: messages are the arbitrary messages to be executed if the proposal passes. + type: array + items: + type: object + $ref: '#/definitions/google.protobuf.Any' + metadata: + type: string + title: |- + metadata is any arbitrary metadata attached to the proposal. + the recommended format of the metadata is to be found here: + https://docs.cosmos.network/v0.47/modules/gov#proposal-3 + proposer: + description: 'Since: cosmos-sdk 0.47' + type: string + title: proposer is the address of the proposal sumbitter + status: + description: status defines the proposal status. + $ref: '#/definitions/cosmos.gov.v1.ProposalStatus' + submit_time: + description: submit_time is the time of proposal submission. + type: string + format: date-time + summary: + description: 'Since: cosmos-sdk 0.47' + type: string + title: summary is a short summary of the proposal + title: + description: 'Since: cosmos-sdk 0.47' + type: string + title: title is the title of the proposal + total_deposit: + description: total_deposit is the total deposit on the proposal. + type: array + items: + type: object + $ref: '#/definitions/cosmos.base.v1beta1.Coin' + voting_end_time: + description: voting_end_time is the end time of voting on a proposal. + type: string + format: date-time + voting_start_time: + description: voting_start_time is the starting time to vote on a proposal. + type: string + format: date-time + cosmos.gov.v1.ProposalStatus: + description: |- + ProposalStatus enumerates the valid statuses of a proposal. + + - PROPOSAL_STATUS_UNSPECIFIED: PROPOSAL_STATUS_UNSPECIFIED defines the default proposal status. + - PROPOSAL_STATUS_DEPOSIT_PERIOD: PROPOSAL_STATUS_DEPOSIT_PERIOD defines a proposal status during the deposit + period. + - PROPOSAL_STATUS_VOTING_PERIOD: PROPOSAL_STATUS_VOTING_PERIOD defines a proposal status during the voting + period. + - PROPOSAL_STATUS_PASSED: PROPOSAL_STATUS_PASSED defines a proposal status of a proposal that has + passed. + - PROPOSAL_STATUS_REJECTED: PROPOSAL_STATUS_REJECTED defines a proposal status of a proposal that has + been rejected. + - PROPOSAL_STATUS_FAILED: PROPOSAL_STATUS_FAILED defines a proposal status of a proposal that has + failed. + type: string + default: PROPOSAL_STATUS_UNSPECIFIED + enum: + - PROPOSAL_STATUS_UNSPECIFIED + - PROPOSAL_STATUS_DEPOSIT_PERIOD + - PROPOSAL_STATUS_VOTING_PERIOD + - PROPOSAL_STATUS_PASSED + - PROPOSAL_STATUS_REJECTED + - PROPOSAL_STATUS_FAILED + cosmos.gov.v1.QueryConstitutionResponse: + type: object + title: QueryConstitutionResponse is the response type for the Query/Constitution RPC method + properties: + constitution: + type: string + cosmos.gov.v1.QueryDepositResponse: + description: QueryDepositResponse is the response type for the Query/Deposit RPC method. + type: object + properties: + deposit: + description: deposit defines the requested deposit. + $ref: '#/definitions/cosmos.gov.v1.Deposit' + cosmos.gov.v1.QueryDepositsResponse: + description: QueryDepositsResponse is the response type for the Query/Deposits RPC method. + type: object + properties: + deposits: + description: deposits defines the requested deposits. + type: array + items: + type: object + $ref: '#/definitions/cosmos.gov.v1.Deposit' + pagination: + description: pagination defines the pagination in the response. + $ref: '#/definitions/cosmos.base.query.v1beta1.PageResponse' + cosmos.gov.v1.QueryParamsResponse: + description: QueryParamsResponse is the response type for the Query/Params RPC method. + type: object + properties: + deposit_params: + description: |- + Deprecated: Prefer to use `params` instead. + deposit_params defines the parameters related to deposit. + $ref: '#/definitions/cosmos.gov.v1.DepositParams' + params: + description: |- + params defines all the paramaters of x/gov module. + + Since: cosmos-sdk 0.47 + $ref: '#/definitions/cosmos.gov.v1.Params' + tally_params: + description: |- + Deprecated: Prefer to use `params` instead. + tally_params defines the parameters related to tally. + $ref: '#/definitions/cosmos.gov.v1.TallyParams' + voting_params: + description: |- + Deprecated: Prefer to use `params` instead. + voting_params defines the parameters related to voting. + $ref: '#/definitions/cosmos.gov.v1.VotingParams' + cosmos.gov.v1.QueryProposalResponse: + description: QueryProposalResponse is the response type for the Query/Proposal RPC method. + type: object + properties: + proposal: + description: proposal is the requested governance proposal. + $ref: '#/definitions/cosmos.gov.v1.Proposal' + cosmos.gov.v1.QueryProposalsResponse: + description: |- + QueryProposalsResponse is the response type for the Query/Proposals RPC + method. + type: object + properties: + pagination: + description: pagination defines the pagination in the response. + $ref: '#/definitions/cosmos.base.query.v1beta1.PageResponse' + proposals: + description: proposals defines all the requested governance proposals. + type: array + items: + type: object + $ref: '#/definitions/cosmos.gov.v1.Proposal' + cosmos.gov.v1.QueryTallyResultResponse: + description: QueryTallyResultResponse is the response type for the Query/Tally RPC method. + type: object + properties: + tally: + description: tally defines the requested tally. + $ref: '#/definitions/cosmos.gov.v1.TallyResult' + cosmos.gov.v1.QueryVoteResponse: + description: QueryVoteResponse is the response type for the Query/Vote RPC method. + type: object + properties: + vote: + description: vote defines the queried vote. + $ref: '#/definitions/cosmos.gov.v1.Vote' + cosmos.gov.v1.QueryVotesResponse: + description: QueryVotesResponse is the response type for the Query/Votes RPC method. + type: object + properties: + pagination: + description: pagination defines the pagination in the response. + $ref: '#/definitions/cosmos.base.query.v1beta1.PageResponse' + votes: + description: votes defines the queried votes. + type: array + items: + type: object + $ref: '#/definitions/cosmos.gov.v1.Vote' + cosmos.gov.v1.TallyParams: + description: TallyParams defines the params for tallying votes on governance proposals. + type: object + properties: + quorum: + description: |- + Minimum percentage of total stake needed to vote for a result to be + considered valid. + type: string + threshold: + description: 'Minimum proportion of Yes votes for proposal to pass. Default value: 0.5.' + type: string + veto_threshold: + description: |- + Minimum value of Veto votes to Total votes ratio for proposal to be + vetoed. Default value: 1/3. + type: string + cosmos.gov.v1.TallyResult: + description: TallyResult defines a standard tally for a governance proposal. + type: object + properties: + abstain_count: + description: abstain_count is the number of abstain votes on a proposal. + type: string + no_count: + description: no_count is the number of no votes on a proposal. + type: string + no_with_veto_count: + description: no_with_veto_count is the number of no with veto votes on a proposal. + type: string + yes_count: + description: yes_count is the number of yes votes on a proposal. + type: string + cosmos.gov.v1.Vote: + description: |- + Vote defines a vote on a governance proposal. + A Vote consists of a proposal ID, the voter, and the vote option. + type: object + properties: + metadata: + type: string + title: |- + metadata is any arbitrary metadata attached to the vote. + the recommended format of the metadata is to be found here: https://docs.cosmos.network/v0.47/modules/gov#vote-5 + options: + description: options is the weighted vote options. + type: array + items: + type: object + $ref: '#/definitions/cosmos.gov.v1.WeightedVoteOption' + proposal_id: + description: proposal_id defines the unique id of the proposal. + type: string + format: uint64 + voter: + description: voter is the voter address of the proposal. + type: string + cosmos.gov.v1.VoteOption: + description: |- + VoteOption enumerates the valid vote options for a given governance proposal. + + - VOTE_OPTION_UNSPECIFIED: VOTE_OPTION_UNSPECIFIED defines a no-op vote option. + - VOTE_OPTION_YES: VOTE_OPTION_YES defines a yes vote option. + - VOTE_OPTION_ABSTAIN: VOTE_OPTION_ABSTAIN defines an abstain vote option. + - VOTE_OPTION_NO: VOTE_OPTION_NO defines a no vote option. + - VOTE_OPTION_NO_WITH_VETO: VOTE_OPTION_NO_WITH_VETO defines a no with veto vote option. + type: string + default: VOTE_OPTION_UNSPECIFIED + enum: + - VOTE_OPTION_UNSPECIFIED + - VOTE_OPTION_YES + - VOTE_OPTION_ABSTAIN + - VOTE_OPTION_NO + - VOTE_OPTION_NO_WITH_VETO + cosmos.gov.v1.VotingParams: + description: VotingParams defines the params for voting on governance proposals. + type: object + properties: + voting_period: + description: Duration of the voting period. + type: string + cosmos.gov.v1.WeightedVoteOption: + description: WeightedVoteOption defines a unit of vote for vote split. + type: object + properties: + option: + description: option defines the valid vote options, it must not contain duplicate vote options. + $ref: '#/definitions/cosmos.gov.v1.VoteOption' + weight: + description: weight is the vote weight associated with the vote option. + type: string + cosmos.gov.v1beta1.Deposit: + description: |- + Deposit defines an amount deposited by an account address to an active + proposal. + type: object + properties: + amount: + description: amount to be deposited by depositor. + type: array + items: + type: object + $ref: '#/definitions/cosmos.base.v1beta1.Coin' + depositor: + description: depositor defines the deposit addresses from the proposals. + type: string + proposal_id: + description: proposal_id defines the unique id of the proposal. + type: string + format: uint64 + cosmos.gov.v1beta1.DepositParams: + description: DepositParams defines the params for deposits on governance proposals. + type: object + properties: + max_deposit_period: + description: |- + Maximum period for Atom holders to deposit on a proposal. Initial value: 2 + months. + type: string + min_deposit: + description: Minimum deposit for a proposal to enter voting period. + type: array + items: + type: object + $ref: '#/definitions/cosmos.base.v1beta1.Coin' + cosmos.gov.v1beta1.MsgDeposit: + description: MsgDeposit defines a message to submit a deposit to an existing proposal. + type: object + properties: + amount: + description: amount to be deposited by depositor. + type: array + items: + type: object + $ref: '#/definitions/cosmos.base.v1beta1.Coin' + depositor: + description: depositor defines the deposit addresses from the proposals. + type: string + proposal_id: + description: proposal_id defines the unique id of the proposal. + type: string + format: uint64 + cosmos.gov.v1beta1.MsgDepositResponse: + description: MsgDepositResponse defines the Msg/Deposit response type. + type: object + cosmos.gov.v1beta1.MsgSubmitProposal: + description: |- + MsgSubmitProposal defines an sdk.Msg type that supports submitting arbitrary + proposal Content. + type: object + properties: + content: + description: content is the proposal's content. + $ref: '#/definitions/google.protobuf.Any' + initial_deposit: + description: initial_deposit is the deposit value that must be paid at proposal submission. + type: array + items: + type: object + $ref: '#/definitions/cosmos.base.v1beta1.Coin' + proposer: + description: proposer is the account address of the proposer. + type: string + cosmos.gov.v1beta1.MsgSubmitProposalResponse: + description: MsgSubmitProposalResponse defines the Msg/SubmitProposal response type. + type: object + properties: + proposal_id: + description: proposal_id defines the unique id of the proposal. + type: string + format: uint64 + cosmos.gov.v1beta1.MsgVote: + description: MsgVote defines a message to cast a vote. + type: object + properties: + option: + description: option defines the vote option. + $ref: '#/definitions/cosmos.gov.v1beta1.VoteOption' + proposal_id: + description: proposal_id defines the unique id of the proposal. + type: string + format: uint64 + voter: + description: voter is the voter address for the proposal. + type: string + cosmos.gov.v1beta1.MsgVoteResponse: + description: MsgVoteResponse defines the Msg/Vote response type. + type: object + cosmos.gov.v1beta1.MsgVoteWeighted: + description: |- + MsgVoteWeighted defines a message to cast a vote. + + Since: cosmos-sdk 0.43 + type: object + properties: + options: + description: options defines the weighted vote options. + type: array + items: + type: object + $ref: '#/definitions/cosmos.gov.v1beta1.WeightedVoteOption' + proposal_id: + description: proposal_id defines the unique id of the proposal. + type: string + format: uint64 + voter: + description: voter is the voter address for the proposal. + type: string + cosmos.gov.v1beta1.MsgVoteWeightedResponse: + description: |- + MsgVoteWeightedResponse defines the Msg/VoteWeighted response type. + + Since: cosmos-sdk 0.43 + type: object + cosmos.gov.v1beta1.Proposal: + description: Proposal defines the core field members of a governance proposal. + type: object + properties: + content: + description: content is the proposal's content. + $ref: '#/definitions/google.protobuf.Any' + deposit_end_time: + description: deposit_end_time is the end time for deposition. + type: string + format: date-time + final_tally_result: + description: |- + final_tally_result is the final tally result of the proposal. When + querying a proposal via gRPC, this field is not populated until the + proposal's voting period has ended. + $ref: '#/definitions/cosmos.gov.v1beta1.TallyResult' + proposal_id: + description: proposal_id defines the unique id of the proposal. + type: string + format: uint64 + status: + description: status defines the proposal status. + $ref: '#/definitions/cosmos.gov.v1beta1.ProposalStatus' + submit_time: + description: submit_time is the time of proposal submission. + type: string + format: date-time + total_deposit: + description: total_deposit is the total deposit on the proposal. + type: array + items: + type: object + $ref: '#/definitions/cosmos.base.v1beta1.Coin' + voting_end_time: + description: voting_end_time is the end time of voting on a proposal. + type: string + format: date-time + voting_start_time: + description: voting_start_time is the starting time to vote on a proposal. + type: string + format: date-time + cosmos.gov.v1beta1.ProposalStatus: + description: |- + ProposalStatus enumerates the valid statuses of a proposal. + + - PROPOSAL_STATUS_UNSPECIFIED: PROPOSAL_STATUS_UNSPECIFIED defines the default proposal status. + - PROPOSAL_STATUS_DEPOSIT_PERIOD: PROPOSAL_STATUS_DEPOSIT_PERIOD defines a proposal status during the deposit + period. + - PROPOSAL_STATUS_VOTING_PERIOD: PROPOSAL_STATUS_VOTING_PERIOD defines a proposal status during the voting + period. + - PROPOSAL_STATUS_PASSED: PROPOSAL_STATUS_PASSED defines a proposal status of a proposal that has + passed. + - PROPOSAL_STATUS_REJECTED: PROPOSAL_STATUS_REJECTED defines a proposal status of a proposal that has + been rejected. + - PROPOSAL_STATUS_FAILED: PROPOSAL_STATUS_FAILED defines a proposal status of a proposal that has + failed. + type: string + default: PROPOSAL_STATUS_UNSPECIFIED + enum: + - PROPOSAL_STATUS_UNSPECIFIED + - PROPOSAL_STATUS_DEPOSIT_PERIOD + - PROPOSAL_STATUS_VOTING_PERIOD + - PROPOSAL_STATUS_PASSED + - PROPOSAL_STATUS_REJECTED + - PROPOSAL_STATUS_FAILED + cosmos.gov.v1beta1.QueryDepositResponse: + description: QueryDepositResponse is the response type for the Query/Deposit RPC method. + type: object + properties: + deposit: + description: deposit defines the requested deposit. + $ref: '#/definitions/cosmos.gov.v1beta1.Deposit' + cosmos.gov.v1beta1.QueryDepositsResponse: + description: QueryDepositsResponse is the response type for the Query/Deposits RPC method. + type: object + properties: + deposits: + description: deposits defines the requested deposits. + type: array + items: + type: object + $ref: '#/definitions/cosmos.gov.v1beta1.Deposit' + pagination: + description: pagination defines the pagination in the response. + $ref: '#/definitions/cosmos.base.query.v1beta1.PageResponse' + cosmos.gov.v1beta1.QueryParamsResponse: + description: QueryParamsResponse is the response type for the Query/Params RPC method. + type: object + properties: + deposit_params: + description: deposit_params defines the parameters related to deposit. + $ref: '#/definitions/cosmos.gov.v1beta1.DepositParams' + tally_params: + description: tally_params defines the parameters related to tally. + $ref: '#/definitions/cosmos.gov.v1beta1.TallyParams' + voting_params: + description: voting_params defines the parameters related to voting. + $ref: '#/definitions/cosmos.gov.v1beta1.VotingParams' + cosmos.gov.v1beta1.QueryProposalResponse: + description: QueryProposalResponse is the response type for the Query/Proposal RPC method. + type: object + properties: + proposal: + $ref: '#/definitions/cosmos.gov.v1beta1.Proposal' + cosmos.gov.v1beta1.QueryProposalsResponse: + description: |- + QueryProposalsResponse is the response type for the Query/Proposals RPC + method. + type: object + properties: + pagination: + description: pagination defines the pagination in the response. + $ref: '#/definitions/cosmos.base.query.v1beta1.PageResponse' + proposals: + description: proposals defines all the requested governance proposals. + type: array + items: + type: object + $ref: '#/definitions/cosmos.gov.v1beta1.Proposal' + cosmos.gov.v1beta1.QueryTallyResultResponse: + description: QueryTallyResultResponse is the response type for the Query/Tally RPC method. + type: object + properties: + tally: + description: tally defines the requested tally. + $ref: '#/definitions/cosmos.gov.v1beta1.TallyResult' + cosmos.gov.v1beta1.QueryVoteResponse: + description: QueryVoteResponse is the response type for the Query/Vote RPC method. + type: object + properties: + vote: + description: vote defines the queried vote. + $ref: '#/definitions/cosmos.gov.v1beta1.Vote' + cosmos.gov.v1beta1.QueryVotesResponse: + description: QueryVotesResponse is the response type for the Query/Votes RPC method. + type: object + properties: + pagination: + description: pagination defines the pagination in the response. + $ref: '#/definitions/cosmos.base.query.v1beta1.PageResponse' + votes: + description: votes defines the queried votes. + type: array + items: + type: object + $ref: '#/definitions/cosmos.gov.v1beta1.Vote' + cosmos.gov.v1beta1.TallyParams: + description: TallyParams defines the params for tallying votes on governance proposals. + type: object + properties: + quorum: + description: |- + Minimum percentage of total stake needed to vote for a result to be + considered valid. + type: string + format: byte + threshold: + description: 'Minimum proportion of Yes votes for proposal to pass. Default value: 0.5.' + type: string + format: byte + veto_threshold: + description: |- + Minimum value of Veto votes to Total votes ratio for proposal to be + vetoed. Default value: 1/3. + type: string + format: byte + cosmos.gov.v1beta1.TallyResult: + description: TallyResult defines a standard tally for a governance proposal. + type: object + properties: + abstain: + description: abstain is the number of abstain votes on a proposal. + type: string + no: + description: no is the number of no votes on a proposal. + type: string + no_with_veto: + description: no_with_veto is the number of no with veto votes on a proposal. + type: string + yes: + description: yes is the number of yes votes on a proposal. + type: string + cosmos.gov.v1beta1.Vote: + description: |- + Vote defines a vote on a governance proposal. + A Vote consists of a proposal ID, the voter, and the vote option. + type: object + properties: + option: + description: |- + Deprecated: Prefer to use `options` instead. This field is set in queries + if and only if `len(options) == 1` and that option has weight 1. In all + other cases, this field will default to VOTE_OPTION_UNSPECIFIED. + $ref: '#/definitions/cosmos.gov.v1beta1.VoteOption' + options: + description: |- + options is the weighted vote options. + + Since: cosmos-sdk 0.43 + type: array + items: + type: object + $ref: '#/definitions/cosmos.gov.v1beta1.WeightedVoteOption' + proposal_id: + description: proposal_id defines the unique id of the proposal. + type: string + format: uint64 + voter: + description: voter is the voter address of the proposal. + type: string + cosmos.gov.v1beta1.VoteOption: + description: |- + VoteOption enumerates the valid vote options for a given governance proposal. + + - VOTE_OPTION_UNSPECIFIED: VOTE_OPTION_UNSPECIFIED defines a no-op vote option. + - VOTE_OPTION_YES: VOTE_OPTION_YES defines a yes vote option. + - VOTE_OPTION_ABSTAIN: VOTE_OPTION_ABSTAIN defines an abstain vote option. + - VOTE_OPTION_NO: VOTE_OPTION_NO defines a no vote option. + - VOTE_OPTION_NO_WITH_VETO: VOTE_OPTION_NO_WITH_VETO defines a no with veto vote option. + type: string + default: VOTE_OPTION_UNSPECIFIED + enum: + - VOTE_OPTION_UNSPECIFIED + - VOTE_OPTION_YES + - VOTE_OPTION_ABSTAIN + - VOTE_OPTION_NO + - VOTE_OPTION_NO_WITH_VETO + cosmos.gov.v1beta1.VotingParams: + description: VotingParams defines the params for voting on governance proposals. + type: object + properties: + voting_period: + description: Duration of the voting period. + type: string + cosmos.gov.v1beta1.WeightedVoteOption: + description: |- + WeightedVoteOption defines a unit of vote for vote split. + + Since: cosmos-sdk 0.43 + type: object + properties: + option: + description: option defines the valid vote options, it must not contain duplicate vote options. + $ref: '#/definitions/cosmos.gov.v1beta1.VoteOption' + weight: + description: weight is the vote weight associated with the vote option. + type: string + cosmos.group.v1.Exec: + description: |- + Exec defines modes of execution of a proposal on creation or on new vote. + + - EXEC_UNSPECIFIED: An empty value means that there should be a separate + MsgExec request for the proposal to execute. + - EXEC_TRY: Try to execute the proposal immediately. + If the proposal is not allowed per the DecisionPolicy, + the proposal will still be open and could + be executed at a later point. + type: string + default: EXEC_UNSPECIFIED + enum: + - EXEC_UNSPECIFIED + - EXEC_TRY + cosmos.group.v1.GroupInfo: + description: GroupInfo represents the high-level on-chain information for a group. + type: object + properties: + admin: + description: admin is the account address of the group's admin. + type: string + created_at: + description: created_at is a timestamp specifying when a group was created. + type: string + format: date-time + id: + description: id is the unique ID of the group. + type: string + format: uint64 + metadata: + type: string + title: |- + metadata is any arbitrary metadata to attached to the group. + the recommended format of the metadata is to be found here: https://docs.cosmos.network/v0.47/modules/group#group-1 + total_weight: + description: total_weight is the sum of the group members' weights. + type: string + version: + type: string + format: uint64 + title: |- + version is used to track changes to a group's membership structure that + would break existing proposals. Whenever any members weight is changed, + or any member is added or removed this version is incremented and will + cause proposals based on older versions of this group to fail + cosmos.group.v1.GroupMember: + description: GroupMember represents the relationship between a group and a member. + type: object + properties: + group_id: + description: group_id is the unique ID of the group. + type: string + format: uint64 + member: + description: member is the member data. + $ref: '#/definitions/cosmos.group.v1.Member' + cosmos.group.v1.GroupPolicyInfo: + description: GroupPolicyInfo represents the high-level on-chain information for a group policy. + type: object + properties: + address: + description: address is the account address of group policy. + type: string + admin: + description: admin is the account address of the group admin. + type: string + created_at: + description: created_at is a timestamp specifying when a group policy was created. + type: string + format: date-time + decision_policy: + description: decision_policy specifies the group policy's decision policy. + $ref: '#/definitions/google.protobuf.Any' + group_id: + description: group_id is the unique ID of the group. + type: string + format: uint64 + metadata: + type: string + title: |- + metadata is any arbitrary metadata attached to the group policy. + the recommended format of the metadata is to be found here: + https://docs.cosmos.network/v0.47/modules/group#decision-policy-1 + version: + description: |- + version is used to track changes to a group's GroupPolicyInfo structure that + would create a different result on a running proposal. + type: string + format: uint64 + cosmos.group.v1.Member: + description: |- + Member represents a group member with an account address, + non-zero weight, metadata and added_at timestamp. + type: object + properties: + added_at: + description: added_at is a timestamp specifying when a member was added. + type: string + format: date-time + address: + description: address is the member's account address. + type: string + metadata: + description: metadata is any arbitrary metadata attached to the member. + type: string + weight: + description: weight is the member's voting weight that should be greater than 0. + type: string + cosmos.group.v1.MemberRequest: + description: |- + MemberRequest represents a group member to be used in Msg server requests. + Contrary to `Member`, it doesn't have any `added_at` field + since this field cannot be set as part of requests. + type: object + properties: + address: + description: address is the member's account address. + type: string + metadata: + description: metadata is any arbitrary metadata attached to the member. + type: string + weight: + description: weight is the member's voting weight that should be greater than 0. + type: string + cosmos.group.v1.MsgCreateGroup: + description: MsgCreateGroup is the Msg/CreateGroup request type. + type: object + properties: + admin: + description: admin is the account address of the group admin. + type: string + members: + description: members defines the group members. + type: array + items: + type: object + $ref: '#/definitions/cosmos.group.v1.MemberRequest' + metadata: + description: metadata is any arbitrary metadata to attached to the group. + type: string + cosmos.group.v1.MsgCreateGroupPolicy: + description: MsgCreateGroupPolicy is the Msg/CreateGroupPolicy request type. + type: object + properties: + admin: + description: admin is the account address of the group admin. + type: string + decision_policy: + description: decision_policy specifies the group policy's decision policy. + $ref: '#/definitions/google.protobuf.Any' + group_id: + description: group_id is the unique ID of the group. + type: string + format: uint64 + metadata: + description: metadata is any arbitrary metadata attached to the group policy. + type: string + cosmos.group.v1.MsgCreateGroupPolicyResponse: + description: MsgCreateGroupPolicyResponse is the Msg/CreateGroupPolicy response type. + type: object + properties: + address: + description: address is the account address of the newly created group policy. + type: string + cosmos.group.v1.MsgCreateGroupResponse: + description: MsgCreateGroupResponse is the Msg/CreateGroup response type. + type: object + properties: + group_id: + description: group_id is the unique ID of the newly created group. + type: string + format: uint64 + cosmos.group.v1.MsgCreateGroupWithPolicy: + description: MsgCreateGroupWithPolicy is the Msg/CreateGroupWithPolicy request type. + type: object + properties: + admin: + description: admin is the account address of the group and group policy admin. + type: string + decision_policy: + description: decision_policy specifies the group policy's decision policy. + $ref: '#/definitions/google.protobuf.Any' + group_metadata: + description: group_metadata is any arbitrary metadata attached to the group. + type: string + group_policy_as_admin: + description: |- + group_policy_as_admin is a boolean field, if set to true, the group policy account address will be used as group + and group policy admin. + type: boolean + group_policy_metadata: + description: group_policy_metadata is any arbitrary metadata attached to the group policy. + type: string + members: + description: members defines the group members. + type: array + items: + type: object + $ref: '#/definitions/cosmos.group.v1.MemberRequest' + cosmos.group.v1.MsgCreateGroupWithPolicyResponse: + description: MsgCreateGroupWithPolicyResponse is the Msg/CreateGroupWithPolicy response type. + type: object + properties: + group_id: + description: group_id is the unique ID of the newly created group with policy. + type: string + format: uint64 + group_policy_address: + description: group_policy_address is the account address of the newly created group policy. + type: string + cosmos.group.v1.MsgExec: + description: MsgExec is the Msg/Exec request type. + type: object + properties: + executor: + description: executor is the account address used to execute the proposal. + type: string + proposal_id: + description: proposal is the unique ID of the proposal. + type: string + format: uint64 + cosmos.group.v1.MsgExecResponse: + description: MsgExecResponse is the Msg/Exec request type. + type: object + properties: + result: + description: result is the final result of the proposal execution. + $ref: '#/definitions/cosmos.group.v1.ProposalExecutorResult' + cosmos.group.v1.MsgLeaveGroup: + description: MsgLeaveGroup is the Msg/LeaveGroup request type. + type: object + properties: + address: + description: address is the account address of the group member. + type: string + group_id: + description: group_id is the unique ID of the group. + type: string + format: uint64 + cosmos.group.v1.MsgLeaveGroupResponse: + description: MsgLeaveGroupResponse is the Msg/LeaveGroup response type. + type: object + cosmos.group.v1.MsgSubmitProposal: + description: MsgSubmitProposal is the Msg/SubmitProposal request type. + type: object + properties: + exec: + description: |- + exec defines the mode of execution of the proposal, + whether it should be executed immediately on creation or not. + If so, proposers signatures are considered as Yes votes. + $ref: '#/definitions/cosmos.group.v1.Exec' + group_policy_address: + description: group_policy_address is the account address of group policy. + type: string + messages: + description: messages is a list of `sdk.Msg`s that will be executed if the proposal passes. + type: array + items: + type: object + $ref: '#/definitions/google.protobuf.Any' + metadata: + description: metadata is any arbitrary metadata attached to the proposal. + type: string + proposers: + description: |- + proposers are the account addresses of the proposers. + Proposers signatures will be counted as yes votes. + type: array + items: + type: string + summary: + description: |- + summary is the summary of the proposal. + + Since: cosmos-sdk 0.47 + type: string + title: + description: |- + title is the title of the proposal. + + Since: cosmos-sdk 0.47 + type: string + cosmos.group.v1.MsgSubmitProposalResponse: + description: MsgSubmitProposalResponse is the Msg/SubmitProposal response type. + type: object + properties: + proposal_id: + description: proposal is the unique ID of the proposal. + type: string + format: uint64 + cosmos.group.v1.MsgUpdateGroupAdmin: + description: MsgUpdateGroupAdmin is the Msg/UpdateGroupAdmin request type. + type: object + properties: + admin: + description: admin is the current account address of the group admin. + type: string + group_id: + description: group_id is the unique ID of the group. + type: string + format: uint64 + new_admin: + description: new_admin is the group new admin account address. + type: string + cosmos.group.v1.MsgUpdateGroupAdminResponse: + description: MsgUpdateGroupAdminResponse is the Msg/UpdateGroupAdmin response type. + type: object + cosmos.group.v1.MsgUpdateGroupMembers: + description: MsgUpdateGroupMembers is the Msg/UpdateGroupMembers request type. + type: object + properties: + admin: + description: admin is the account address of the group admin. + type: string + group_id: + description: group_id is the unique ID of the group. + type: string + format: uint64 + member_updates: + description: |- + member_updates is the list of members to update, + set weight to 0 to remove a member. + type: array + items: + type: object + $ref: '#/definitions/cosmos.group.v1.MemberRequest' + cosmos.group.v1.MsgUpdateGroupMembersResponse: + description: MsgUpdateGroupMembersResponse is the Msg/UpdateGroupMembers response type. + type: object + cosmos.group.v1.MsgUpdateGroupMetadata: + description: MsgUpdateGroupMetadata is the Msg/UpdateGroupMetadata request type. + type: object + properties: + admin: + description: admin is the account address of the group admin. + type: string + group_id: + description: group_id is the unique ID of the group. + type: string + format: uint64 + metadata: + description: metadata is the updated group's metadata. + type: string + cosmos.group.v1.MsgUpdateGroupMetadataResponse: + description: MsgUpdateGroupMetadataResponse is the Msg/UpdateGroupMetadata response type. + type: object + cosmos.group.v1.MsgUpdateGroupPolicyAdmin: + description: MsgUpdateGroupPolicyAdmin is the Msg/UpdateGroupPolicyAdmin request type. + type: object + properties: + admin: + description: admin is the account address of the group admin. + type: string + group_policy_address: + description: group_policy_address is the account address of the group policy. + type: string + new_admin: + description: new_admin is the new group policy admin. + type: string + cosmos.group.v1.MsgUpdateGroupPolicyAdminResponse: + description: MsgUpdateGroupPolicyAdminResponse is the Msg/UpdateGroupPolicyAdmin response type. + type: object + cosmos.group.v1.MsgUpdateGroupPolicyDecisionPolicy: + description: MsgUpdateGroupPolicyDecisionPolicy is the Msg/UpdateGroupPolicyDecisionPolicy request type. + type: object + properties: + admin: + description: admin is the account address of the group admin. + type: string + decision_policy: + description: decision_policy is the updated group policy's decision policy. + $ref: '#/definitions/google.protobuf.Any' + group_policy_address: + description: group_policy_address is the account address of group policy. + type: string + cosmos.group.v1.MsgUpdateGroupPolicyDecisionPolicyResponse: + description: MsgUpdateGroupPolicyDecisionPolicyResponse is the Msg/UpdateGroupPolicyDecisionPolicy response type. + type: object + cosmos.group.v1.MsgUpdateGroupPolicyMetadata: + description: MsgUpdateGroupPolicyMetadata is the Msg/UpdateGroupPolicyMetadata request type. + type: object + properties: + admin: + description: admin is the account address of the group admin. + type: string + group_policy_address: + description: group_policy_address is the account address of group policy. + type: string + metadata: + description: metadata is the group policy metadata to be updated. + type: string + cosmos.group.v1.MsgUpdateGroupPolicyMetadataResponse: + description: MsgUpdateGroupPolicyMetadataResponse is the Msg/UpdateGroupPolicyMetadata response type. + type: object + cosmos.group.v1.MsgVote: + description: MsgVote is the Msg/Vote request type. + type: object + properties: + exec: + description: |- + exec defines whether the proposal should be executed + immediately after voting or not. + $ref: '#/definitions/cosmos.group.v1.Exec' + metadata: + description: metadata is any arbitrary metadata attached to the vote. + type: string + option: + description: option is the voter's choice on the proposal. + $ref: '#/definitions/cosmos.group.v1.VoteOption' + proposal_id: + description: proposal is the unique ID of the proposal. + type: string + format: uint64 + voter: + description: voter is the voter account address. + type: string + cosmos.group.v1.MsgVoteResponse: + description: MsgVoteResponse is the Msg/Vote response type. + type: object + cosmos.group.v1.MsgWithdrawProposal: + description: MsgWithdrawProposal is the Msg/WithdrawProposal request type. + type: object + properties: + address: + description: address is the admin of the group policy or one of the proposer of the proposal. + type: string + proposal_id: + description: proposal is the unique ID of the proposal. + type: string + format: uint64 + cosmos.group.v1.MsgWithdrawProposalResponse: + description: MsgWithdrawProposalResponse is the Msg/WithdrawProposal response type. + type: object + cosmos.group.v1.Proposal: + description: |- + Proposal defines a group proposal. Any member of a group can submit a proposal + for a group policy to decide upon. + A proposal consists of a set of `sdk.Msg`s that will be executed if the proposal + passes as well as some optional metadata associated with the proposal. + type: object + properties: + executor_result: + description: executor_result is the final result of the proposal execution. Initial value is NotRun. + $ref: '#/definitions/cosmos.group.v1.ProposalExecutorResult' + final_tally_result: + description: |- + final_tally_result contains the sums of all weighted votes for this + proposal for each vote option. It is empty at submission, and only + populated after tallying, at voting period end or at proposal execution, + whichever happens first. + $ref: '#/definitions/cosmos.group.v1.TallyResult' + group_policy_address: + description: group_policy_address is the account address of group policy. + type: string + group_policy_version: + description: |- + group_policy_version tracks the version of the group policy at proposal submission. + When a decision policy is changed, existing proposals from previous policy + versions will become invalid with the `ABORTED` status. + This field is here for informational purposes only. + type: string + format: uint64 + group_version: + description: |- + group_version tracks the version of the group at proposal submission. + This field is here for informational purposes only. + type: string + format: uint64 + id: + description: id is the unique id of the proposal. + type: string + format: uint64 + messages: + description: messages is a list of `sdk.Msg`s that will be executed if the proposal passes. + type: array + items: + type: object + $ref: '#/definitions/google.protobuf.Any' + metadata: + type: string + title: |- + metadata is any arbitrary metadata attached to the proposal. + the recommended format of the metadata is to be found here: + https://docs.cosmos.network/v0.47/modules/group#proposal-4 + proposers: + description: proposers are the account addresses of the proposers. + type: array + items: + type: string + status: + description: status represents the high level position in the life cycle of the proposal. Initial value is Submitted. + $ref: '#/definitions/cosmos.group.v1.ProposalStatus' + submit_time: + description: submit_time is a timestamp specifying when a proposal was submitted. + type: string + format: date-time + summary: + description: 'Since: cosmos-sdk 0.47' + type: string + title: summary is a short summary of the proposal + title: + description: 'Since: cosmos-sdk 0.47' + type: string + title: title is the title of the proposal + voting_period_end: + description: |- + voting_period_end is the timestamp before which voting must be done. + Unless a successful MsgExec is called before (to execute a proposal whose + tally is successful before the voting period ends), tallying will be done + at this point, and the `final_tally_result`and `status` fields will be + accordingly updated. + type: string + format: date-time + cosmos.group.v1.ProposalExecutorResult: + description: |- + ProposalExecutorResult defines types of proposal executor results. + + - PROPOSAL_EXECUTOR_RESULT_UNSPECIFIED: An empty value is not allowed. + - PROPOSAL_EXECUTOR_RESULT_NOT_RUN: We have not yet run the executor. + - PROPOSAL_EXECUTOR_RESULT_SUCCESS: The executor was successful and proposed action updated state. + - PROPOSAL_EXECUTOR_RESULT_FAILURE: The executor returned an error and proposed action didn't update state. + type: string + default: PROPOSAL_EXECUTOR_RESULT_UNSPECIFIED + enum: + - PROPOSAL_EXECUTOR_RESULT_UNSPECIFIED + - PROPOSAL_EXECUTOR_RESULT_NOT_RUN + - PROPOSAL_EXECUTOR_RESULT_SUCCESS + - PROPOSAL_EXECUTOR_RESULT_FAILURE + cosmos.group.v1.ProposalStatus: + description: |- + ProposalStatus defines proposal statuses. + + - PROPOSAL_STATUS_UNSPECIFIED: An empty value is invalid and not allowed. + - PROPOSAL_STATUS_SUBMITTED: Initial status of a proposal when submitted. + - PROPOSAL_STATUS_ACCEPTED: Final status of a proposal when the final tally is done and the outcome + passes the group policy's decision policy. + - PROPOSAL_STATUS_REJECTED: Final status of a proposal when the final tally is done and the outcome + is rejected by the group policy's decision policy. + - PROPOSAL_STATUS_ABORTED: Final status of a proposal when the group policy is modified before the + final tally. + - PROPOSAL_STATUS_WITHDRAWN: A proposal can be withdrawn before the voting start time by the owner. + When this happens the final status is Withdrawn. + type: string + default: PROPOSAL_STATUS_UNSPECIFIED + enum: + - PROPOSAL_STATUS_UNSPECIFIED + - PROPOSAL_STATUS_SUBMITTED + - PROPOSAL_STATUS_ACCEPTED + - PROPOSAL_STATUS_REJECTED + - PROPOSAL_STATUS_ABORTED + - PROPOSAL_STATUS_WITHDRAWN + cosmos.group.v1.QueryGroupInfoResponse: + description: QueryGroupInfoResponse is the Query/GroupInfo response type. + type: object + properties: + info: + description: info is the GroupInfo of the group. + $ref: '#/definitions/cosmos.group.v1.GroupInfo' + cosmos.group.v1.QueryGroupMembersResponse: + description: QueryGroupMembersResponse is the Query/GroupMembersResponse response type. + type: object + properties: + members: + description: members are the members of the group with given group_id. + type: array + items: + type: object + $ref: '#/definitions/cosmos.group.v1.GroupMember' + pagination: + description: pagination defines the pagination in the response. + $ref: '#/definitions/cosmos.base.query.v1beta1.PageResponse' + cosmos.group.v1.QueryGroupPoliciesByAdminResponse: + description: QueryGroupPoliciesByAdminResponse is the Query/GroupPoliciesByAdmin response type. + type: object + properties: + group_policies: + description: group_policies are the group policies info with provided admin. + type: array + items: + type: object + $ref: '#/definitions/cosmos.group.v1.GroupPolicyInfo' + pagination: + description: pagination defines the pagination in the response. + $ref: '#/definitions/cosmos.base.query.v1beta1.PageResponse' + cosmos.group.v1.QueryGroupPoliciesByGroupResponse: + description: QueryGroupPoliciesByGroupResponse is the Query/GroupPoliciesByGroup response type. + type: object + properties: + group_policies: + description: group_policies are the group policies info associated with the provided group. + type: array + items: + type: object + $ref: '#/definitions/cosmos.group.v1.GroupPolicyInfo' + pagination: + description: pagination defines the pagination in the response. + $ref: '#/definitions/cosmos.base.query.v1beta1.PageResponse' + cosmos.group.v1.QueryGroupPolicyInfoResponse: + description: QueryGroupPolicyInfoResponse is the Query/GroupPolicyInfo response type. + type: object + properties: + info: + description: info is the GroupPolicyInfo of the group policy. + $ref: '#/definitions/cosmos.group.v1.GroupPolicyInfo' + cosmos.group.v1.QueryGroupsByAdminResponse: + description: QueryGroupsByAdminResponse is the Query/GroupsByAdminResponse response type. + type: object + properties: + groups: + description: groups are the groups info with the provided admin. + type: array + items: + type: object + $ref: '#/definitions/cosmos.group.v1.GroupInfo' + pagination: + description: pagination defines the pagination in the response. + $ref: '#/definitions/cosmos.base.query.v1beta1.PageResponse' + cosmos.group.v1.QueryGroupsByMemberResponse: + description: QueryGroupsByMemberResponse is the Query/GroupsByMember response type. + type: object + properties: + groups: + description: groups are the groups info with the provided group member. + type: array + items: + type: object + $ref: '#/definitions/cosmos.group.v1.GroupInfo' + pagination: + description: pagination defines the pagination in the response. + $ref: '#/definitions/cosmos.base.query.v1beta1.PageResponse' + cosmos.group.v1.QueryGroupsResponse: + description: |- + QueryGroupsResponse is the Query/Groups response type. + + Since: cosmos-sdk 0.47.1 + type: object + properties: + groups: + description: '`groups` is all the groups present in state.' + type: array + items: + type: object + $ref: '#/definitions/cosmos.group.v1.GroupInfo' + pagination: + description: pagination defines the pagination in the response. + $ref: '#/definitions/cosmos.base.query.v1beta1.PageResponse' + cosmos.group.v1.QueryProposalResponse: + description: QueryProposalResponse is the Query/Proposal response type. + type: object + properties: + proposal: + description: proposal is the proposal info. + $ref: '#/definitions/cosmos.group.v1.Proposal' + cosmos.group.v1.QueryProposalsByGroupPolicyResponse: + description: QueryProposalsByGroupPolicyResponse is the Query/ProposalByGroupPolicy response type. + type: object + properties: + pagination: + description: pagination defines the pagination in the response. + $ref: '#/definitions/cosmos.base.query.v1beta1.PageResponse' + proposals: + description: proposals are the proposals with given group policy. + type: array + items: + type: object + $ref: '#/definitions/cosmos.group.v1.Proposal' + cosmos.group.v1.QueryTallyResultResponse: + description: QueryTallyResultResponse is the Query/TallyResult response type. + type: object + properties: + tally: + description: tally defines the requested tally. + $ref: '#/definitions/cosmos.group.v1.TallyResult' + cosmos.group.v1.QueryVoteByProposalVoterResponse: + description: QueryVoteByProposalVoterResponse is the Query/VoteByProposalVoter response type. + type: object + properties: + vote: + description: vote is the vote with given proposal_id and voter. + $ref: '#/definitions/cosmos.group.v1.Vote' + cosmos.group.v1.QueryVotesByProposalResponse: + description: QueryVotesByProposalResponse is the Query/VotesByProposal response type. + type: object + properties: + pagination: + description: pagination defines the pagination in the response. + $ref: '#/definitions/cosmos.base.query.v1beta1.PageResponse' + votes: + description: votes are the list of votes for given proposal_id. + type: array + items: + type: object + $ref: '#/definitions/cosmos.group.v1.Vote' + cosmos.group.v1.QueryVotesByVoterResponse: + description: QueryVotesByVoterResponse is the Query/VotesByVoter response type. + type: object + properties: + pagination: + description: pagination defines the pagination in the response. + $ref: '#/definitions/cosmos.base.query.v1beta1.PageResponse' + votes: + description: votes are the list of votes by given voter. + type: array + items: + type: object + $ref: '#/definitions/cosmos.group.v1.Vote' + cosmos.group.v1.TallyResult: + description: TallyResult represents the sum of weighted votes for each vote option. + type: object + properties: + abstain_count: + description: abstain_count is the weighted sum of abstainers. + type: string + no_count: + description: no_count is the weighted sum of no votes. + type: string + no_with_veto_count: + description: no_with_veto_count is the weighted sum of veto. + type: string + yes_count: + description: yes_count is the weighted sum of yes votes. + type: string + cosmos.group.v1.Vote: + type: object + title: Vote represents a vote for a proposal.string metadata + properties: + metadata: + type: string + title: |- + metadata is any arbitrary metadata attached to the vote. + the recommended format of the metadata is to be found here: https://docs.cosmos.network/v0.47/modules/group#vote-2 + option: + description: option is the voter's choice on the proposal. + $ref: '#/definitions/cosmos.group.v1.VoteOption' + proposal_id: + description: proposal is the unique ID of the proposal. + type: string + format: uint64 + submit_time: + description: submit_time is the timestamp when the vote was submitted. + type: string + format: date-time + voter: + description: voter is the account address of the voter. + type: string + cosmos.group.v1.VoteOption: + description: |- + VoteOption enumerates the valid vote options for a given proposal. + + - VOTE_OPTION_UNSPECIFIED: VOTE_OPTION_UNSPECIFIED defines an unspecified vote option which will + return an error. + - VOTE_OPTION_YES: VOTE_OPTION_YES defines a yes vote option. + - VOTE_OPTION_ABSTAIN: VOTE_OPTION_ABSTAIN defines an abstain vote option. + - VOTE_OPTION_NO: VOTE_OPTION_NO defines a no vote option. + - VOTE_OPTION_NO_WITH_VETO: VOTE_OPTION_NO_WITH_VETO defines a no with veto vote option. + type: string + default: VOTE_OPTION_UNSPECIFIED + enum: + - VOTE_OPTION_UNSPECIFIED + - VOTE_OPTION_YES + - VOTE_OPTION_ABSTAIN + - VOTE_OPTION_NO + - VOTE_OPTION_NO_WITH_VETO + cosmos.mint.v1beta1.MsgUpdateParams: + description: |- + MsgUpdateParams is the Msg/UpdateParams request type. + + Since: cosmos-sdk 0.47 + type: object + properties: + authority: + description: authority is the address that controls the module (defaults to x/gov unless overwritten). + type: string + params: + description: |- + params defines the x/mint parameters to update. + + NOTE: All parameters must be supplied. + $ref: '#/definitions/cosmos.mint.v1beta1.Params' + cosmos.mint.v1beta1.MsgUpdateParamsResponse: + description: |- + MsgUpdateParamsResponse defines the response structure for executing a + MsgUpdateParams message. + + Since: cosmos-sdk 0.47 + type: object + cosmos.mint.v1beta1.Params: + description: Params defines the parameters for the x/mint module. + type: object + properties: + blocks_per_year: + type: string + format: uint64 + title: expected blocks per year + goal_bonded: + type: string + title: goal of percent bonded atoms + inflation_max: + type: string + title: maximum inflation rate + inflation_min: + type: string + title: minimum inflation rate + inflation_rate_change: + type: string + title: maximum annual change in inflation rate + mint_denom: + type: string + title: type of coin to mint + cosmos.mint.v1beta1.QueryAnnualProvisionsResponse: + description: |- + QueryAnnualProvisionsResponse is the response type for the + Query/AnnualProvisions RPC method. + type: object + properties: + annual_provisions: + description: annual_provisions is the current minting annual provisions value. + type: string + format: byte + cosmos.mint.v1beta1.QueryInflationResponse: + description: |- + QueryInflationResponse is the response type for the Query/Inflation RPC + method. + type: object + properties: + inflation: + description: inflation is the current minting inflation value. + type: string + format: byte + cosmos.mint.v1beta1.QueryParamsResponse: + description: QueryParamsResponse is the response type for the Query/Params RPC method. + type: object + properties: + params: + description: params defines the parameters of the module. + $ref: '#/definitions/cosmos.mint.v1beta1.Params' + cosmos.nft.v1beta1.Class: + description: Class defines the class of the nft type. + type: object + properties: + data: + title: data is the app specific metadata of the NFT class. Optional + $ref: '#/definitions/google.protobuf.Any' + description: + type: string + title: description is a brief description of nft classification. Optional + id: + type: string + title: id defines the unique identifier of the NFT classification, similar to the contract address of ERC721 + name: + type: string + title: name defines the human-readable name of the NFT classification. Optional + symbol: + type: string + title: symbol is an abbreviated name for nft classification. Optional + uri: + type: string + title: uri for the class metadata stored off chain. It can define schema for Class and NFT `Data` attributes. Optional + uri_hash: + type: string + title: uri_hash is a hash of the document pointed by uri. Optional + cosmos.nft.v1beta1.MsgSend: + description: MsgSend represents a message to send a nft from one account to another account. + type: object + properties: + class_id: + type: string + title: class_id defines the unique identifier of the nft classification, similar to the contract address of ERC721 + id: + type: string + title: id defines the unique identification of nft + receiver: + type: string + title: receiver is the receiver address of nft + sender: + type: string + title: sender is the address of the owner of nft + cosmos.nft.v1beta1.MsgSendResponse: + description: MsgSendResponse defines the Msg/Send response type. + type: object + cosmos.nft.v1beta1.NFT: + description: NFT defines the NFT. + type: object + properties: + class_id: + type: string + title: class_id associated with the NFT, similar to the contract address of ERC721 + data: + title: data is an app specific data of the NFT. Optional + $ref: '#/definitions/google.protobuf.Any' + id: + type: string + title: id is a unique identifier of the NFT + uri: + type: string + title: uri for the NFT metadata stored off chain + uri_hash: + type: string + title: uri_hash is a hash of the document pointed by uri + cosmos.nft.v1beta1.QueryBalanceResponse: + type: object + title: QueryBalanceResponse is the response type for the Query/Balance RPC method + properties: + amount: + type: string + format: uint64 + title: amount is the number of all NFTs of a given class owned by the owner + cosmos.nft.v1beta1.QueryClassResponse: + type: object + title: QueryClassResponse is the response type for the Query/Class RPC method + properties: + class: + description: class defines the class of the nft type. + $ref: '#/definitions/cosmos.nft.v1beta1.Class' + cosmos.nft.v1beta1.QueryClassesResponse: + type: object + title: QueryClassesResponse is the response type for the Query/Classes RPC method + properties: + classes: + description: class defines the class of the nft type. + type: array + items: + type: object + $ref: '#/definitions/cosmos.nft.v1beta1.Class' + pagination: + description: pagination defines the pagination in the response. + $ref: '#/definitions/cosmos.base.query.v1beta1.PageResponse' + cosmos.nft.v1beta1.QueryNFTResponse: + type: object + title: QueryNFTResponse is the response type for the Query/NFT RPC method + properties: + nft: + title: owner is the owner address of the nft + $ref: '#/definitions/cosmos.nft.v1beta1.NFT' + cosmos.nft.v1beta1.QueryNFTsResponse: + type: object + title: QueryNFTsResponse is the response type for the Query/NFTs RPC methods + properties: + nfts: + type: array + title: NFT defines the NFT + items: + type: object + $ref: '#/definitions/cosmos.nft.v1beta1.NFT' + pagination: + description: pagination defines the pagination in the response. + $ref: '#/definitions/cosmos.base.query.v1beta1.PageResponse' + cosmos.nft.v1beta1.QueryOwnerResponse: + type: object + title: QueryOwnerResponse is the response type for the Query/Owner RPC method + properties: + owner: + type: string + title: owner is the owner address of the nft + cosmos.nft.v1beta1.QuerySupplyResponse: + type: object + title: QuerySupplyResponse is the response type for the Query/Supply RPC method + properties: + amount: + type: string + format: uint64 + title: amount is the number of all NFTs from the given class + cosmos.params.v1beta1.ParamChange: + description: |- + ParamChange defines an individual parameter change, for use in + ParameterChangeProposal. + type: object + properties: + key: + type: string + subspace: + type: string + value: + type: string + cosmos.params.v1beta1.QueryParamsResponse: + description: QueryParamsResponse is response type for the Query/Params RPC method. + type: object + properties: + param: + description: param defines the queried parameter. + $ref: '#/definitions/cosmos.params.v1beta1.ParamChange' + cosmos.params.v1beta1.QuerySubspacesResponse: + description: |- + QuerySubspacesResponse defines the response types for querying for all + registered subspaces and all keys for a subspace. + + Since: cosmos-sdk 0.46 + type: object + properties: + subspaces: + type: array + items: + type: object + $ref: '#/definitions/cosmos.params.v1beta1.Subspace' + cosmos.params.v1beta1.Subspace: + description: |- + Subspace defines a parameter subspace name and all the keys that exist for + the subspace. + + Since: cosmos-sdk 0.46 + type: object + properties: + keys: + type: array + items: + type: string + subspace: + type: string + cosmos.slashing.v1beta1.MsgUnjail: + type: object + title: MsgUnjail defines the Msg/Unjail request type + properties: + validator_addr: + type: string + cosmos.slashing.v1beta1.MsgUnjailResponse: + type: object + title: MsgUnjailResponse defines the Msg/Unjail response type + cosmos.slashing.v1beta1.MsgUpdateParams: + description: |- + MsgUpdateParams is the Msg/UpdateParams request type. + + Since: cosmos-sdk 0.47 + type: object + properties: + authority: + description: authority is the address that controls the module (defaults to x/gov unless overwritten). + type: string + params: + description: |- + params defines the x/slashing parameters to update. + + NOTE: All parameters must be supplied. + $ref: '#/definitions/cosmos.slashing.v1beta1.Params' + cosmos.slashing.v1beta1.MsgUpdateParamsResponse: + description: |- + MsgUpdateParamsResponse defines the response structure for executing a + MsgUpdateParams message. + + Since: cosmos-sdk 0.47 + type: object + cosmos.slashing.v1beta1.Params: + description: Params represents the parameters used for by the slashing module. + type: object + properties: + downtime_jail_duration: + type: string + min_signed_per_window: + type: string + format: byte + signed_blocks_window: + type: string + format: int64 + slash_fraction_double_sign: + type: string + format: byte + slash_fraction_downtime: + type: string + format: byte + cosmos.slashing.v1beta1.QueryParamsResponse: + type: object + title: QueryParamsResponse is the response type for the Query/Params RPC method + properties: + params: + $ref: '#/definitions/cosmos.slashing.v1beta1.Params' + cosmos.slashing.v1beta1.QuerySigningInfoResponse: + type: object + title: |- + QuerySigningInfoResponse is the response type for the Query/SigningInfo RPC + method + properties: + val_signing_info: + title: val_signing_info is the signing info of requested val cons address + $ref: '#/definitions/cosmos.slashing.v1beta1.ValidatorSigningInfo' + cosmos.slashing.v1beta1.QuerySigningInfosResponse: + type: object + title: |- + QuerySigningInfosResponse is the response type for the Query/SigningInfos RPC + method + properties: + info: + type: array + title: info is the signing info of all validators + items: + type: object + $ref: '#/definitions/cosmos.slashing.v1beta1.ValidatorSigningInfo' + pagination: + $ref: '#/definitions/cosmos.base.query.v1beta1.PageResponse' + cosmos.slashing.v1beta1.ValidatorSigningInfo: + description: |- + ValidatorSigningInfo defines a validator's signing info for monitoring their + liveness activity. + type: object + properties: + address: + type: string + index_offset: + description: |- + Index which is incremented every time a validator is bonded in a block and + _may_ have signed a pre-commit or not. This in conjunction with the + signed_blocks_window param determines the index in the missed block bitmap. + type: string + format: int64 + jailed_until: + description: Timestamp until which the validator is jailed due to liveness downtime. + type: string + format: date-time + missed_blocks_counter: + description: |- + A counter of missed (unsigned) blocks. It is used to avoid unnecessary + reads in the missed block bitmap. + type: string + format: int64 + start_height: + type: string + format: int64 + title: Height at which validator was first a candidate OR was un-jailed + tombstoned: + description: |- + Whether or not a validator has been tombstoned (killed out of validator + set). It is set once the validator commits an equivocation or for any other + configured misbehavior. + type: boolean + cosmos.staking.v1beta1.BondStatus: + description: |- + BondStatus is the status of a validator. + + - BOND_STATUS_UNSPECIFIED: UNSPECIFIED defines an invalid validator status. + - BOND_STATUS_UNBONDED: UNBONDED defines a validator that is not bonded. + - BOND_STATUS_UNBONDING: UNBONDING defines a validator that is unbonding. + - BOND_STATUS_BONDED: BONDED defines a validator that is bonded. + type: string + default: BOND_STATUS_UNSPECIFIED + enum: + - BOND_STATUS_UNSPECIFIED + - BOND_STATUS_UNBONDED + - BOND_STATUS_UNBONDING + - BOND_STATUS_BONDED + cosmos.staking.v1beta1.Commission: + description: Commission defines commission parameters for a given validator. + type: object + properties: + commission_rates: + description: commission_rates defines the initial commission rates to be used for creating a validator. + $ref: '#/definitions/cosmos.staking.v1beta1.CommissionRates' + update_time: + description: update_time is the last time the commission rate was changed. + type: string + format: date-time + cosmos.staking.v1beta1.CommissionRates: + description: |- + CommissionRates defines the initial commission rates to be used for creating + a validator. + type: object + properties: + max_change_rate: + description: max_change_rate defines the maximum daily increase of the validator commission, as a fraction. + type: string + max_rate: + description: max_rate defines the maximum commission rate which validator can ever charge, as a fraction. + type: string + rate: + description: rate is the commission rate charged to delegators, as a fraction. + type: string + cosmos.staking.v1beta1.Delegation: + description: |- + Delegation represents the bond with tokens held by an account. It is + owned by one delegator, and is associated with the voting power of one + validator. + type: object + properties: + delegator_address: + description: delegator_address is the encoded address of the delegator. + type: string + shares: + description: shares define the delegation shares received. + type: string + validator_address: + description: validator_address is the encoded address of the validator. + type: string + cosmos.staking.v1beta1.DelegationResponse: + description: |- + DelegationResponse is equivalent to Delegation except that it contains a + balance in addition to shares which is more suitable for client responses. + type: object + properties: + balance: + $ref: '#/definitions/cosmos.base.v1beta1.Coin' + delegation: + $ref: '#/definitions/cosmos.staking.v1beta1.Delegation' + cosmos.staking.v1beta1.Description: + description: Description defines a validator description. + type: object + properties: + details: + description: details define other optional details. + type: string + identity: + description: identity defines an optional identity signature (ex. UPort or Keybase). + type: string + moniker: + description: moniker defines a human-readable name for the validator. + type: string + security_contact: + description: security_contact defines an optional email for security contact. + type: string + website: + description: website defines an optional website link. + type: string + cosmos.staking.v1beta1.HistoricalInfo: + description: |- + HistoricalInfo contains header and validator information for a given block. + It is stored as part of staking module's state, which persists the `n` most + recent HistoricalInfo + (`n` is set by the staking module's `historical_entries` parameter). + type: object + properties: + header: + $ref: '#/definitions/tendermint.types.Header' + valset: + type: array + items: + type: object + $ref: '#/definitions/cosmos.staking.v1beta1.Validator' + cosmos.staking.v1beta1.MsgBeginRedelegate: + description: |- + MsgBeginRedelegate defines a SDK message for performing a redelegation + of coins from a delegator and source validator to a destination validator. + type: object + properties: + amount: + $ref: '#/definitions/cosmos.base.v1beta1.Coin' + delegator_address: + type: string + validator_dst_address: + type: string + validator_src_address: + type: string + cosmos.staking.v1beta1.MsgBeginRedelegateResponse: + description: MsgBeginRedelegateResponse defines the Msg/BeginRedelegate response type. + type: object + properties: + completion_time: + type: string + format: date-time + cosmos.staking.v1beta1.MsgCancelUnbondingDelegation: + description: 'Since: cosmos-sdk 0.46' + type: object + title: MsgCancelUnbondingDelegation defines the SDK message for performing a cancel unbonding delegation for delegator + properties: + amount: + title: amount is always less than or equal to unbonding delegation entry balance + $ref: '#/definitions/cosmos.base.v1beta1.Coin' + creation_height: + description: creation_height is the height which the unbonding took place. + type: string + format: int64 + delegator_address: + type: string + validator_address: + type: string + cosmos.staking.v1beta1.MsgCancelUnbondingDelegationResponse: + description: 'Since: cosmos-sdk 0.46' + type: object + title: MsgCancelUnbondingDelegationResponse + cosmos.staking.v1beta1.MsgCreateValidator: + description: MsgCreateValidator defines a SDK message for creating a new validator. + type: object + properties: + commission: + $ref: '#/definitions/cosmos.staking.v1beta1.CommissionRates' + delegator_address: + description: |- + Deprecated: Use of Delegator Address in MsgCreateValidator is deprecated. + The validator address bytes and delegator address bytes refer to the same account while creating validator (defer + only in bech32 notation). + type: string + description: + $ref: '#/definitions/cosmos.staking.v1beta1.Description' + min_self_delegation: + type: string + pubkey: + $ref: '#/definitions/google.protobuf.Any' + validator_address: + type: string + value: + $ref: '#/definitions/cosmos.base.v1beta1.Coin' + cosmos.staking.v1beta1.MsgCreateValidatorResponse: + description: MsgCreateValidatorResponse defines the Msg/CreateValidator response type. + type: object + cosmos.staking.v1beta1.MsgDelegate: + description: |- + MsgDelegate defines a SDK message for performing a delegation of coins + from a delegator to a validator. + type: object + properties: + amount: + $ref: '#/definitions/cosmos.base.v1beta1.Coin' + delegator_address: + type: string + validator_address: + type: string + cosmos.staking.v1beta1.MsgDelegateResponse: + description: MsgDelegateResponse defines the Msg/Delegate response type. + type: object + cosmos.staking.v1beta1.MsgEditValidator: + description: MsgEditValidator defines a SDK message for editing an existing validator. + type: object + properties: + commission_rate: + type: string + title: |- + We pass a reference to the new commission rate and min self delegation as + it's not mandatory to update. If not updated, the deserialized rate will be + zero with no way to distinguish if an update was intended. + REF: #2373 + description: + $ref: '#/definitions/cosmos.staking.v1beta1.Description' + min_self_delegation: + type: string + validator_address: + type: string + cosmos.staking.v1beta1.MsgEditValidatorResponse: + description: MsgEditValidatorResponse defines the Msg/EditValidator response type. + type: object + cosmos.staking.v1beta1.MsgUndelegate: + description: |- + MsgUndelegate defines a SDK message for performing an undelegation from a + delegate and a validator. + type: object + properties: + amount: + $ref: '#/definitions/cosmos.base.v1beta1.Coin' + delegator_address: + type: string + validator_address: + type: string + cosmos.staking.v1beta1.MsgUndelegateResponse: + description: MsgUndelegateResponse defines the Msg/Undelegate response type. + type: object + properties: + amount: + description: 'Since: cosmos-sdk 0.50' + title: amount returns the amount of undelegated coins + $ref: '#/definitions/cosmos.base.v1beta1.Coin' + completion_time: + type: string + format: date-time + cosmos.staking.v1beta1.MsgUpdateParams: + description: |- + MsgUpdateParams is the Msg/UpdateParams request type. + + Since: cosmos-sdk 0.47 + type: object + properties: + authority: + description: authority is the address that controls the module (defaults to x/gov unless overwritten). + type: string + params: + description: |- + params defines the x/staking parameters to update. + + NOTE: All parameters must be supplied. + $ref: '#/definitions/cosmos.staking.v1beta1.Params' + cosmos.staking.v1beta1.MsgUpdateParamsResponse: + description: |- + MsgUpdateParamsResponse defines the response structure for executing a + MsgUpdateParams message. + + Since: cosmos-sdk 0.47 + type: object + cosmos.staking.v1beta1.Params: + description: Params defines the parameters for the x/staking module. + type: object + properties: + bond_denom: + description: bond_denom defines the bondable coin denomination. + type: string + historical_entries: + description: historical_entries is the number of historical entries to persist. + type: integer + format: int64 + max_entries: + description: max_entries is the max entries for either unbonding delegation or redelegation (per pair/trio). + type: integer + format: int64 + max_validators: + description: max_validators is the maximum number of validators. + type: integer + format: int64 + min_commission_rate: + type: string + title: min_commission_rate is the chain-wide minimum commission rate that a validator can charge their delegators + unbonding_time: + description: unbonding_time is the time duration of unbonding. + type: string + cosmos.staking.v1beta1.Pool: + description: |- + Pool is used for tracking bonded and not-bonded token supply of the bond + denomination. + type: object + properties: + bonded_tokens: + type: string + not_bonded_tokens: + type: string + cosmos.staking.v1beta1.QueryDelegationResponse: + description: QueryDelegationResponse is response type for the Query/Delegation RPC method. + type: object + properties: + delegation_response: + description: delegation_responses defines the delegation info of a delegation. + $ref: '#/definitions/cosmos.staking.v1beta1.DelegationResponse' + cosmos.staking.v1beta1.QueryDelegatorDelegationsResponse: + description: |- + QueryDelegatorDelegationsResponse is response type for the + Query/DelegatorDelegations RPC method. + type: object + properties: + delegation_responses: + description: delegation_responses defines all the delegations' info of a delegator. + type: array + items: + type: object + $ref: '#/definitions/cosmos.staking.v1beta1.DelegationResponse' + pagination: + description: pagination defines the pagination in the response. + $ref: '#/definitions/cosmos.base.query.v1beta1.PageResponse' + cosmos.staking.v1beta1.QueryDelegatorUnbondingDelegationsResponse: + description: |- + QueryUnbondingDelegatorDelegationsResponse is response type for the + Query/UnbondingDelegatorDelegations RPC method. + type: object + properties: + pagination: + description: pagination defines the pagination in the response. + $ref: '#/definitions/cosmos.base.query.v1beta1.PageResponse' + unbonding_responses: + type: array + items: + type: object + $ref: '#/definitions/cosmos.staking.v1beta1.UnbondingDelegation' + cosmos.staking.v1beta1.QueryDelegatorValidatorResponse: + description: |- + QueryDelegatorValidatorResponse response type for the + Query/DelegatorValidator RPC method. + type: object + properties: + validator: + description: validator defines the validator info. + $ref: '#/definitions/cosmos.staking.v1beta1.Validator' + cosmos.staking.v1beta1.QueryDelegatorValidatorsResponse: + description: |- + QueryDelegatorValidatorsResponse is response type for the + Query/DelegatorValidators RPC method. + type: object + properties: + pagination: + description: pagination defines the pagination in the response. + $ref: '#/definitions/cosmos.base.query.v1beta1.PageResponse' + validators: + description: validators defines the validators' info of a delegator. + type: array + items: + type: object + $ref: '#/definitions/cosmos.staking.v1beta1.Validator' + cosmos.staking.v1beta1.QueryHistoricalInfoResponse: + description: |- + QueryHistoricalInfoResponse is response type for the Query/HistoricalInfo RPC + method. + type: object + properties: + hist: + description: hist defines the historical info at the given height. + $ref: '#/definitions/cosmos.staking.v1beta1.HistoricalInfo' + cosmos.staking.v1beta1.QueryParamsResponse: + description: QueryParamsResponse is response type for the Query/Params RPC method. + type: object + properties: + params: + description: params holds all the parameters of this module. + $ref: '#/definitions/cosmos.staking.v1beta1.Params' + cosmos.staking.v1beta1.QueryPoolResponse: + description: QueryPoolResponse is response type for the Query/Pool RPC method. + type: object + properties: + pool: + description: pool defines the pool info. + $ref: '#/definitions/cosmos.staking.v1beta1.Pool' + cosmos.staking.v1beta1.QueryRedelegationsResponse: + description: |- + QueryRedelegationsResponse is response type for the Query/Redelegations RPC + method. + type: object + properties: + pagination: + description: pagination defines the pagination in the response. + $ref: '#/definitions/cosmos.base.query.v1beta1.PageResponse' + redelegation_responses: + type: array + items: + type: object + $ref: '#/definitions/cosmos.staking.v1beta1.RedelegationResponse' + cosmos.staking.v1beta1.QueryUnbondingDelegationResponse: + description: |- + QueryDelegationResponse is response type for the Query/UnbondingDelegation + RPC method. + type: object + properties: + unbond: + description: unbond defines the unbonding information of a delegation. + $ref: '#/definitions/cosmos.staking.v1beta1.UnbondingDelegation' + cosmos.staking.v1beta1.QueryValidatorDelegationsResponse: + type: object + title: |- + QueryValidatorDelegationsResponse is response type for the + Query/ValidatorDelegations RPC method + properties: + delegation_responses: + type: array + items: + type: object + $ref: '#/definitions/cosmos.staking.v1beta1.DelegationResponse' + pagination: + description: pagination defines the pagination in the response. + $ref: '#/definitions/cosmos.base.query.v1beta1.PageResponse' + cosmos.staking.v1beta1.QueryValidatorResponse: + type: object + title: QueryValidatorResponse is response type for the Query/Validator RPC method + properties: + validator: + description: validator defines the validator info. + $ref: '#/definitions/cosmos.staking.v1beta1.Validator' + cosmos.staking.v1beta1.QueryValidatorUnbondingDelegationsResponse: + description: |- + QueryValidatorUnbondingDelegationsResponse is response type for the + Query/ValidatorUnbondingDelegations RPC method. + type: object + properties: + pagination: + description: pagination defines the pagination in the response. + $ref: '#/definitions/cosmos.base.query.v1beta1.PageResponse' + unbonding_responses: + type: array + items: + type: object + $ref: '#/definitions/cosmos.staking.v1beta1.UnbondingDelegation' + cosmos.staking.v1beta1.QueryValidatorsResponse: + type: object + title: QueryValidatorsResponse is response type for the Query/Validators RPC method + properties: + pagination: + description: pagination defines the pagination in the response. + $ref: '#/definitions/cosmos.base.query.v1beta1.PageResponse' + validators: + description: validators contains all the queried validators. + type: array + items: + type: object + $ref: '#/definitions/cosmos.staking.v1beta1.Validator' + cosmos.staking.v1beta1.Redelegation: + description: |- + Redelegation contains the list of a particular delegator's redelegating bonds + from a particular source validator to a particular destination validator. + type: object + properties: + delegator_address: + description: delegator_address is the bech32-encoded address of the delegator. + type: string + entries: + description: |- + entries are the redelegation entries. + + redelegation entries + type: array + items: + type: object + $ref: '#/definitions/cosmos.staking.v1beta1.RedelegationEntry' + validator_dst_address: + description: validator_dst_address is the validator redelegation destination operator address. + type: string + validator_src_address: + description: validator_src_address is the validator redelegation source operator address. + type: string + cosmos.staking.v1beta1.RedelegationEntry: + description: RedelegationEntry defines a redelegation object with relevant metadata. + type: object + properties: + completion_time: + description: completion_time defines the unix time for redelegation completion. + type: string + format: date-time + creation_height: + description: creation_height defines the height which the redelegation took place. + type: string + format: int64 + initial_balance: + description: initial_balance defines the initial balance when redelegation started. + type: string + shares_dst: + description: shares_dst is the amount of destination-validator shares created by redelegation. + type: string + unbonding_id: + type: string + format: uint64 + title: Incrementing id that uniquely identifies this entry + unbonding_on_hold_ref_count: + type: string + format: int64 + title: Strictly positive if this entry's unbonding has been stopped by external modules + cosmos.staking.v1beta1.RedelegationEntryResponse: + description: |- + RedelegationEntryResponse is equivalent to a RedelegationEntry except that it + contains a balance in addition to shares which is more suitable for client + responses. + type: object + properties: + balance: + type: string + redelegation_entry: + $ref: '#/definitions/cosmos.staking.v1beta1.RedelegationEntry' + cosmos.staking.v1beta1.RedelegationResponse: + description: |- + RedelegationResponse is equivalent to a Redelegation except that its entries + contain a balance in addition to shares which is more suitable for client + responses. + type: object + properties: + entries: + type: array + items: + type: object + $ref: '#/definitions/cosmos.staking.v1beta1.RedelegationEntryResponse' + redelegation: + $ref: '#/definitions/cosmos.staking.v1beta1.Redelegation' + cosmos.staking.v1beta1.UnbondingDelegation: + description: |- + UnbondingDelegation stores all of a single delegator's unbonding bonds + for a single validator in an time-ordered list. + type: object + properties: + delegator_address: + description: delegator_address is the encoded address of the delegator. + type: string + entries: + description: |- + entries are the unbonding delegation entries. + + unbonding delegation entries + type: array + items: + type: object + $ref: '#/definitions/cosmos.staking.v1beta1.UnbondingDelegationEntry' + validator_address: + description: validator_address is the encoded address of the validator. + type: string + cosmos.staking.v1beta1.UnbondingDelegationEntry: + description: UnbondingDelegationEntry defines an unbonding object with relevant metadata. + type: object + properties: + balance: + description: balance defines the tokens to receive at completion. + type: string + completion_time: + description: completion_time is the unix time for unbonding completion. + type: string + format: date-time + creation_height: + description: creation_height is the height which the unbonding took place. + type: string + format: int64 + initial_balance: + description: initial_balance defines the tokens initially scheduled to receive at completion. + type: string + unbonding_id: + type: string + format: uint64 + title: Incrementing id that uniquely identifies this entry + unbonding_on_hold_ref_count: + type: string + format: int64 + title: Strictly positive if this entry's unbonding has been stopped by external modules + cosmos.staking.v1beta1.Validator: + description: |- + Validator defines a validator, together with the total amount of the + Validator's bond shares and their exchange rate to coins. Slashing results in + a decrease in the exchange rate, allowing correct calculation of future + undelegations without iterating over delegators. When coins are delegated to + this validator, the validator is credited with a delegation whose number of + bond shares is based on the amount of coins delegated divided by the current + exchange rate. Voting power can be calculated as total bonded shares + multiplied by exchange rate. + type: object + properties: + commission: + description: commission defines the commission parameters. + $ref: '#/definitions/cosmos.staking.v1beta1.Commission' + consensus_pubkey: + description: consensus_pubkey is the consensus public key of the validator, as a Protobuf Any. + $ref: '#/definitions/google.protobuf.Any' + delegator_shares: + description: delegator_shares defines total shares issued to a validator's delegators. + type: string + description: + description: description defines the description terms for the validator. + $ref: '#/definitions/cosmos.staking.v1beta1.Description' + jailed: + description: jailed defined whether the validator has been jailed from bonded status or not. + type: boolean + min_self_delegation: + description: |- + min_self_delegation is the validator's self declared minimum self delegation. + + Since: cosmos-sdk 0.46 + type: string + operator_address: + description: operator_address defines the address of the validator's operator; bech encoded in JSON. + type: string + status: + description: status is the validator status (bonded/unbonding/unbonded). + $ref: '#/definitions/cosmos.staking.v1beta1.BondStatus' + tokens: + description: tokens define the delegated tokens (incl. self-delegation). + type: string + unbonding_height: + description: unbonding_height defines, if unbonding, the height at which this validator has begun unbonding. + type: string + format: int64 + unbonding_ids: + type: array + title: list of unbonding ids, each uniquely identifing an unbonding of this validator + items: + type: string + format: uint64 + unbonding_on_hold_ref_count: + type: string + format: int64 + title: strictly positive if this validator's unbonding has been stopped by external modules + unbonding_time: + description: unbonding_time defines, if unbonding, the min time for the validator to complete unbonding. + type: string + format: date-time + cosmos.store.streaming.abci.ListenCommitRequest: + type: object + title: ListenCommitRequest is the request type for the ListenCommit RPC method + properties: + block_height: + type: string + format: int64 + title: explicitly pass in block height as ResponseCommit does not contain this info + change_set: + type: array + items: + type: object + $ref: '#/definitions/cosmos.store.v1beta1.StoreKVPair' + res: + $ref: '#/definitions/tendermint.abci.ResponseCommit' + cosmos.store.streaming.abci.ListenCommitResponse: + type: object + title: ListenCommitResponse is the response type for the ListenCommit RPC method + cosmos.store.streaming.abci.ListenFinalizeBlockRequest: + type: object + title: ListenEndBlockRequest is the request type for the ListenEndBlock RPC method + properties: + req: + $ref: '#/definitions/tendermint.abci.RequestFinalizeBlock' + res: + $ref: '#/definitions/tendermint.abci.ResponseFinalizeBlock' + cosmos.store.streaming.abci.ListenFinalizeBlockResponse: + type: object + title: ListenEndBlockResponse is the response type for the ListenEndBlock RPC method + cosmos.store.v1beta1.StoreKVPair: + description: 'Since: cosmos-sdk 0.43' + type: object + title: |- + StoreKVPair is a KVStore KVPair used for listening to state changes (Sets and Deletes) + It optionally includes the StoreKey for the originating KVStore and a Boolean flag to distinguish between Sets and + Deletes + properties: + delete: + type: boolean + title: true indicates a delete operation, false indicates a set operation + key: + type: string + format: byte + store_key: + type: string + title: the store key for the KVStore this pair originates from + value: + type: string + format: byte + cosmos.tx.signing.v1beta1.SignMode: + description: |- + SignMode represents a signing mode with its own security guarantees. + + This enum should be considered a registry of all known sign modes + in the Cosmos ecosystem. Apps are not expected to support all known + sign modes. Apps that would like to support custom sign modes are + encouraged to open a small PR against this file to add a new case + to this SignMode enum describing their sign mode so that different + apps have a consistent version of this enum. + + - SIGN_MODE_UNSPECIFIED: SIGN_MODE_UNSPECIFIED specifies an unknown signing mode and will be + rejected. + - SIGN_MODE_DIRECT: SIGN_MODE_DIRECT specifies a signing mode which uses SignDoc and is + verified with raw bytes from Tx. + - SIGN_MODE_TEXTUAL: SIGN_MODE_TEXTUAL is a future signing mode that will verify some + human-readable textual representation on top of the binary representation + from SIGN_MODE_DIRECT. + + Since: cosmos-sdk 0.50 + - SIGN_MODE_DIRECT_AUX: SIGN_MODE_DIRECT_AUX specifies a signing mode which uses + SignDocDirectAux. As opposed to SIGN_MODE_DIRECT, this sign mode does not + require signers signing over other signers' `signer_info`. + + Since: cosmos-sdk 0.46 + - SIGN_MODE_LEGACY_AMINO_JSON: SIGN_MODE_LEGACY_AMINO_JSON is a backwards compatibility mode which uses + Amino JSON and will be removed in the future. + - SIGN_MODE_EIP_191: SIGN_MODE_EIP_191 specifies the sign mode for EIP 191 signing on the Cosmos + SDK. Ref: https://eips.ethereum.org/EIPS/eip-191 + + Currently, SIGN_MODE_EIP_191 is registered as a SignMode enum variant, + but is not implemented on the SDK by default. To enable EIP-191, you need + to pass a custom `TxConfig` that has an implementation of + `SignModeHandler` for EIP-191. The SDK may decide to fully support + EIP-191 in the future. + + Since: cosmos-sdk 0.45.2 + type: string + default: SIGN_MODE_UNSPECIFIED + enum: + - SIGN_MODE_UNSPECIFIED + - SIGN_MODE_DIRECT + - SIGN_MODE_TEXTUAL + - SIGN_MODE_DIRECT_AUX + - SIGN_MODE_LEGACY_AMINO_JSON + - SIGN_MODE_EIP_191 + cosmos.tx.v1beta1.AuthInfo: + description: |- + AuthInfo describes the fee and signer modes that are used to sign a + transaction. + type: object + properties: + fee: + description: |- + Fee is the fee and gas limit for the transaction. The first signer is the + primary signer and the one which pays the fee. The fee can be calculated + based on the cost of evaluating the body and doing signature verification + of the signers. This can be estimated via simulation. + $ref: '#/definitions/cosmos.tx.v1beta1.Fee' + signer_infos: + description: |- + signer_infos defines the signing modes for the required signers. The number + and order of elements must match the required signers from TxBody's + messages. The first element is the primary signer and the one which pays + the fee. + type: array + items: + type: object + $ref: '#/definitions/cosmos.tx.v1beta1.SignerInfo' + tip: + description: |- + Tip is the optional tip used for transactions fees paid in another denom. + + This field is ignored if the chain didn't enable tips, i.e. didn't add the + `TipDecorator` in its posthandler. + + Since: cosmos-sdk 0.46 + $ref: '#/definitions/cosmos.tx.v1beta1.Tip' + cosmos.tx.v1beta1.BroadcastMode: + description: |- + BroadcastMode specifies the broadcast mode for the TxService.Broadcast RPC + method. + + - BROADCAST_MODE_UNSPECIFIED: zero-value for mode ordering + - BROADCAST_MODE_BLOCK: DEPRECATED: use BROADCAST_MODE_SYNC instead, + BROADCAST_MODE_BLOCK is not supported by the SDK from v0.47.x onwards. + - BROADCAST_MODE_SYNC: BROADCAST_MODE_SYNC defines a tx broadcasting mode where the client waits + for a CheckTx execution response only. + - BROADCAST_MODE_ASYNC: BROADCAST_MODE_ASYNC defines a tx broadcasting mode where the client + returns immediately. + type: string + default: BROADCAST_MODE_UNSPECIFIED + enum: + - BROADCAST_MODE_UNSPECIFIED + - BROADCAST_MODE_BLOCK + - BROADCAST_MODE_SYNC + - BROADCAST_MODE_ASYNC + cosmos.tx.v1beta1.BroadcastTxRequest: + description: |- + BroadcastTxRequest is the request type for the Service.BroadcastTxRequest + RPC method. + type: object + properties: + mode: + $ref: '#/definitions/cosmos.tx.v1beta1.BroadcastMode' + tx_bytes: + description: tx_bytes is the raw transaction. + type: string + format: byte + cosmos.tx.v1beta1.BroadcastTxResponse: + description: |- + BroadcastTxResponse is the response type for the + Service.BroadcastTx method. + type: object + properties: + tx_response: + description: tx_response is the queried TxResponses. + $ref: '#/definitions/cosmos.base.abci.v1beta1.TxResponse' + cosmos.tx.v1beta1.Fee: + description: |- + Fee includes the amount of coins paid in fees and the maximum + gas to be used by the transaction. The ratio yields an effective "gasprice", + which must be above some miminum to be accepted into the mempool. + type: object + properties: + amount: + type: array + title: amount is the amount of coins to be paid as a fee + items: + type: object + $ref: '#/definitions/cosmos.base.v1beta1.Coin' + gas_limit: + type: string + format: uint64 + title: |- + gas_limit is the maximum gas that can be used in transaction processing + before an out of gas error occurs + granter: + type: string + title: |- + if set, the fee payer (either the first signer or the value of the payer field) requests that a fee grant be used + to pay fees instead of the fee payer's own balance. If an appropriate fee grant does not exist or the chain does + not support fee grants, this will fail + payer: + description: |- + if unset, the first signer is responsible for paying the fees. If set, the specified account must pay the fees. + the payer must be a tx signer (and thus have signed this field in AuthInfo). + setting this field does *not* change the ordering of required signers for the transaction. + type: string + cosmos.tx.v1beta1.GetBlockWithTxsResponse: + description: |- + GetBlockWithTxsResponse is the response type for the Service.GetBlockWithTxs + method. + + Since: cosmos-sdk 0.45.2 + type: object + properties: + block: + $ref: '#/definitions/tendermint.types.Block' + block_id: + $ref: '#/definitions/tendermint.types.BlockID' + pagination: + description: pagination defines a pagination for the response. + $ref: '#/definitions/cosmos.base.query.v1beta1.PageResponse' + txs: + description: txs are the transactions in the block. + type: array + items: + type: object + $ref: '#/definitions/cosmos.tx.v1beta1.Tx' + cosmos.tx.v1beta1.GetTxResponse: + description: GetTxResponse is the response type for the Service.GetTx method. + type: object + properties: + tx: + description: tx is the queried transaction. + $ref: '#/definitions/cosmos.tx.v1beta1.Tx' + tx_response: + description: tx_response is the queried TxResponses. + $ref: '#/definitions/cosmos.base.abci.v1beta1.TxResponse' + cosmos.tx.v1beta1.GetTxsEventResponse: + description: |- + GetTxsEventResponse is the response type for the Service.TxsByEvents + RPC method. + type: object + properties: + pagination: + description: |- + pagination defines a pagination for the response. + Deprecated post v0.46.x: use total instead. + $ref: '#/definitions/cosmos.base.query.v1beta1.PageResponse' + total: + type: string + format: uint64 + title: total is total number of results available + tx_responses: + description: tx_responses is the list of queried TxResponses. + type: array + items: + type: object + $ref: '#/definitions/cosmos.base.abci.v1beta1.TxResponse' + txs: + description: txs is the list of queried transactions. + type: array + items: + type: object + $ref: '#/definitions/cosmos.tx.v1beta1.Tx' + cosmos.tx.v1beta1.ModeInfo: + description: ModeInfo describes the signing mode of a single or nested multisig signer. + type: object + properties: + multi: + title: multi represents a nested multisig signer + $ref: '#/definitions/cosmos.tx.v1beta1.ModeInfo.Multi' + single: + title: single represents a single signer + $ref: '#/definitions/cosmos.tx.v1beta1.ModeInfo.Single' + cosmos.tx.v1beta1.ModeInfo.Multi: + type: object + title: Multi is the mode info for a multisig public key + properties: + bitarray: + title: bitarray specifies which keys within the multisig are signing + $ref: '#/definitions/cosmos.crypto.multisig.v1beta1.CompactBitArray' + mode_infos: + type: array + title: |- + mode_infos is the corresponding modes of the signers of the multisig + which could include nested multisig public keys + items: + type: object + $ref: '#/definitions/cosmos.tx.v1beta1.ModeInfo' + cosmos.tx.v1beta1.ModeInfo.Single: + type: object + title: |- + Single is the mode info for a single signer. It is structured as a message + to allow for additional fields such as locale for SIGN_MODE_TEXTUAL in the + future + properties: + mode: + title: mode is the signing mode of the single signer + $ref: '#/definitions/cosmos.tx.signing.v1beta1.SignMode' + cosmos.tx.v1beta1.OrderBy: + description: |- + - ORDER_BY_UNSPECIFIED: ORDER_BY_UNSPECIFIED specifies an unknown sorting order. OrderBy defaults + to ASC in this case. + - ORDER_BY_ASC: ORDER_BY_ASC defines ascending order + - ORDER_BY_DESC: ORDER_BY_DESC defines descending order + type: string + title: OrderBy defines the sorting order + default: ORDER_BY_UNSPECIFIED + enum: + - ORDER_BY_UNSPECIFIED + - ORDER_BY_ASC + - ORDER_BY_DESC + cosmos.tx.v1beta1.SignerInfo: + description: |- + SignerInfo describes the public key and signing mode of a single top-level + signer. + type: object + properties: + mode_info: + title: |- + mode_info describes the signing mode of the signer and is a nested + structure to support nested multisig pubkey's + $ref: '#/definitions/cosmos.tx.v1beta1.ModeInfo' + public_key: + description: |- + public_key is the public key of the signer. It is optional for accounts + that already exist in state. If unset, the verifier can use the required \ + signer address for this position and lookup the public key. + $ref: '#/definitions/google.protobuf.Any' + sequence: + description: |- + sequence is the sequence of the account, which describes the + number of committed transactions signed by a given address. It is used to + prevent replay attacks. + type: string + format: uint64 + cosmos.tx.v1beta1.SimulateRequest: + description: |- + SimulateRequest is the request type for the Service.Simulate + RPC method. + type: object + properties: + tx: + description: |- + tx is the transaction to simulate. + Deprecated. Send raw tx bytes instead. + $ref: '#/definitions/cosmos.tx.v1beta1.Tx' + tx_bytes: + description: |- + tx_bytes is the raw transaction. + + Since: cosmos-sdk 0.43 + type: string + format: byte + cosmos.tx.v1beta1.SimulateResponse: + description: |- + SimulateResponse is the response type for the + Service.SimulateRPC method. + type: object + properties: + gas_info: + description: gas_info is the information about gas used in the simulation. + $ref: '#/definitions/cosmos.base.abci.v1beta1.GasInfo' + result: + description: result is the result of the simulation. + $ref: '#/definitions/cosmos.base.abci.v1beta1.Result' + cosmos.tx.v1beta1.Tip: + description: |- + Tip is the tip used for meta-transactions. + + Since: cosmos-sdk 0.46 + type: object + properties: + amount: + type: array + title: amount is the amount of the tip + items: + type: object + $ref: '#/definitions/cosmos.base.v1beta1.Coin' + tipper: + type: string + title: tipper is the address of the account paying for the tip + cosmos.tx.v1beta1.Tx: + description: Tx is the standard type used for broadcasting transactions. + type: object + properties: + auth_info: + title: |- + auth_info is the authorization related content of the transaction, + specifically signers, signer modes and fee + $ref: '#/definitions/cosmos.tx.v1beta1.AuthInfo' + body: + title: body is the processable content of the transaction + $ref: '#/definitions/cosmos.tx.v1beta1.TxBody' + signatures: + description: |- + signatures is a list of signatures that matches the length and order of + AuthInfo's signer_infos to allow connecting signature meta information like + public key and signing mode by position. + type: array + items: + type: string + format: byte + cosmos.tx.v1beta1.TxBody: + description: TxBody is the body of a transaction that all signers sign over. + type: object + properties: + extension_options: + type: array + title: |- + extension_options are arbitrary options that can be added by chains + when the default options are not sufficient. If any of these are present + and can't be handled, the transaction will be rejected + items: + type: object + $ref: '#/definitions/google.protobuf.Any' + memo: + description: |- + memo is any arbitrary note/comment to be added to the transaction. + WARNING: in clients, any publicly exposed text should not be called memo, + but should be called `note` instead (see https://github.com/cosmos/cosmos-sdk/issues/9122). + type: string + messages: + description: |- + messages is a list of messages to be executed. The required signers of + those messages define the number and order of elements in AuthInfo's + signer_infos and Tx's signatures. Each required signer address is added to + the list only the first time it occurs. + By convention, the first required signer (usually from the first message) + is referred to as the primary signer and pays the fee for the whole + transaction. + type: array + items: + type: object + $ref: '#/definitions/google.protobuf.Any' + non_critical_extension_options: + type: array + title: |- + extension_options are arbitrary options that can be added by chains + when the default options are not sufficient. If any of these are present + and can't be handled, they will be ignored + items: + type: object + $ref: '#/definitions/google.protobuf.Any' + timeout_height: + type: string + format: uint64 + title: |- + timeout is the block height after which this transaction will not + be processed by the chain + cosmos.tx.v1beta1.TxDecodeAminoRequest: + description: |- + TxDecodeAminoRequest is the request type for the Service.TxDecodeAmino + RPC method. + + Since: cosmos-sdk 0.47 + type: object + properties: + amino_binary: + type: string + format: byte + cosmos.tx.v1beta1.TxDecodeAminoResponse: + description: |- + TxDecodeAminoResponse is the response type for the Service.TxDecodeAmino + RPC method. + + Since: cosmos-sdk 0.47 + type: object + properties: + amino_json: + type: string + cosmos.tx.v1beta1.TxDecodeRequest: + description: |- + TxDecodeRequest is the request type for the Service.TxDecode + RPC method. + + Since: cosmos-sdk 0.47 + type: object + properties: + tx_bytes: + description: tx_bytes is the raw transaction. + type: string + format: byte + cosmos.tx.v1beta1.TxDecodeResponse: + description: |- + TxDecodeResponse is the response type for the + Service.TxDecode method. + + Since: cosmos-sdk 0.47 + type: object + properties: + tx: + description: tx is the decoded transaction. + $ref: '#/definitions/cosmos.tx.v1beta1.Tx' + cosmos.tx.v1beta1.TxEncodeAminoRequest: + description: |- + TxEncodeAminoRequest is the request type for the Service.TxEncodeAmino + RPC method. + + Since: cosmos-sdk 0.47 + type: object + properties: + amino_json: + type: string + cosmos.tx.v1beta1.TxEncodeAminoResponse: + description: |- + TxEncodeAminoResponse is the response type for the Service.TxEncodeAmino + RPC method. + + Since: cosmos-sdk 0.47 + type: object + properties: + amino_binary: + type: string + format: byte + cosmos.tx.v1beta1.TxEncodeRequest: + description: |- + TxEncodeRequest is the request type for the Service.TxEncode + RPC method. + + Since: cosmos-sdk 0.47 + type: object + properties: + tx: + description: tx is the transaction to encode. + $ref: '#/definitions/cosmos.tx.v1beta1.Tx' + cosmos.tx.v1beta1.TxEncodeResponse: + description: |- + TxEncodeResponse is the response type for the + Service.TxEncode method. + + Since: cosmos-sdk 0.47 + type: object + properties: + tx_bytes: + description: tx_bytes is the encoded transaction bytes. + type: string + format: byte + cosmos.upgrade.v1beta1.ModuleVersion: + description: |- + ModuleVersion specifies a module and its consensus version. + + Since: cosmos-sdk 0.43 + type: object + properties: + name: + type: string + title: name of the app module + version: + type: string + format: uint64 + title: consensus version of the app module + cosmos.upgrade.v1beta1.MsgCancelUpgrade: + description: |- + MsgCancelUpgrade is the Msg/CancelUpgrade request type. + + Since: cosmos-sdk 0.46 + type: object + properties: + authority: + description: authority is the address that controls the module (defaults to x/gov unless overwritten). + type: string + cosmos.upgrade.v1beta1.MsgCancelUpgradeResponse: + description: |- + MsgCancelUpgradeResponse is the Msg/CancelUpgrade response type. + + Since: cosmos-sdk 0.46 + type: object + cosmos.upgrade.v1beta1.MsgSoftwareUpgrade: + description: |- + MsgSoftwareUpgrade is the Msg/SoftwareUpgrade request type. + + Since: cosmos-sdk 0.46 + type: object + properties: + authority: + description: authority is the address that controls the module (defaults to x/gov unless overwritten). + type: string + plan: + description: plan is the upgrade plan. + $ref: '#/definitions/cosmos.upgrade.v1beta1.Plan' + cosmos.upgrade.v1beta1.MsgSoftwareUpgradeResponse: + description: |- + MsgSoftwareUpgradeResponse is the Msg/SoftwareUpgrade response type. + + Since: cosmos-sdk 0.46 + type: object + cosmos.upgrade.v1beta1.Plan: + description: Plan specifies information about a planned upgrade and when it should occur. + type: object + properties: + height: + description: The height at which the upgrade must be performed. + type: string + format: int64 + info: + type: string + title: |- + Any application specific upgrade info to be included on-chain + such as a git commit that validators could automatically upgrade to + name: + description: |- + Sets the name for the upgrade. This name will be used by the upgraded + version of the software to apply any special "on-upgrade" commands during + the first BeginBlock method after the upgrade is applied. It is also used + to detect whether a software version can handle a given upgrade. If no + upgrade handler with this name has been set in the software, it will be + assumed that the software is out-of-date when the upgrade Time or Height is + reached and the software will exit. + type: string + time: + description: |- + Deprecated: Time based upgrades have been deprecated. Time based upgrade logic + has been removed from the SDK. + If this field is not empty, an error will be thrown. + type: string + format: date-time + upgraded_client_state: + description: |- + Deprecated: UpgradedClientState field has been deprecated. IBC upgrade logic has been + moved to the IBC module in the sub module 02-client. + If this field is not empty, an error will be thrown. + $ref: '#/definitions/google.protobuf.Any' + cosmos.upgrade.v1beta1.QueryAppliedPlanResponse: + description: |- + QueryAppliedPlanResponse is the response type for the Query/AppliedPlan RPC + method. + type: object + properties: + height: + description: height is the block height at which the plan was applied. + type: string + format: int64 + cosmos.upgrade.v1beta1.QueryAuthorityResponse: + description: 'Since: cosmos-sdk 0.46' + type: object + title: QueryAuthorityResponse is the response type for Query/Authority + properties: + address: + type: string + cosmos.upgrade.v1beta1.QueryCurrentPlanResponse: + description: |- + QueryCurrentPlanResponse is the response type for the Query/CurrentPlan RPC + method. + type: object + properties: + plan: + description: plan is the current upgrade plan. + $ref: '#/definitions/cosmos.upgrade.v1beta1.Plan' + cosmos.upgrade.v1beta1.QueryModuleVersionsResponse: + description: |- + QueryModuleVersionsResponse is the response type for the Query/ModuleVersions + RPC method. + + Since: cosmos-sdk 0.43 + type: object + properties: + module_versions: + description: module_versions is a list of module names with their consensus versions. + type: array + items: + type: object + $ref: '#/definitions/cosmos.upgrade.v1beta1.ModuleVersion' + cosmos.upgrade.v1beta1.QueryUpgradedConsensusStateResponse: + description: |- + QueryUpgradedConsensusStateResponse is the response type for the Query/UpgradedConsensusState + RPC method. + type: object + properties: + upgraded_consensus_state: + type: string + format: byte + title: 'Since: cosmos-sdk 0.43' + cosmos.vesting.v1beta1.MsgCreatePeriodicVestingAccount: + description: |- + MsgCreateVestingAccount defines a message that enables creating a vesting + account. + + Since: cosmos-sdk 0.46 + type: object + properties: + from_address: + type: string + start_time: + description: start of vesting as unix time (in seconds). + type: string + format: int64 + to_address: + type: string + vesting_periods: + type: array + items: + type: object + $ref: '#/definitions/cosmos.vesting.v1beta1.Period' + cosmos.vesting.v1beta1.MsgCreatePeriodicVestingAccountResponse: + description: |- + MsgCreateVestingAccountResponse defines the Msg/CreatePeriodicVestingAccount + response type. + + Since: cosmos-sdk 0.46 + type: object + cosmos.vesting.v1beta1.MsgCreatePermanentLockedAccount: + description: |- + MsgCreatePermanentLockedAccount defines a message that enables creating a permanent + locked account. + + Since: cosmos-sdk 0.46 + type: object + properties: + amount: + type: array + items: + type: object + $ref: '#/definitions/cosmos.base.v1beta1.Coin' + from_address: + type: string + to_address: + type: string + cosmos.vesting.v1beta1.MsgCreatePermanentLockedAccountResponse: + description: |- + MsgCreatePermanentLockedAccountResponse defines the Msg/CreatePermanentLockedAccount response type. + + Since: cosmos-sdk 0.46 + type: object + cosmos.vesting.v1beta1.MsgCreateVestingAccount: + description: |- + MsgCreateVestingAccount defines a message that enables creating a vesting + account. + type: object + properties: + amount: + type: array + items: + type: object + $ref: '#/definitions/cosmos.base.v1beta1.Coin' + delayed: + type: boolean + end_time: + description: end of vesting as unix time (in seconds). + type: string + format: int64 + from_address: + type: string + to_address: + type: string + cosmos.vesting.v1beta1.MsgCreateVestingAccountResponse: + description: MsgCreateVestingAccountResponse defines the Msg/CreateVestingAccount response type. + type: object + cosmos.vesting.v1beta1.Period: + description: Period defines a length of time and amount of coins that will vest. + type: object + properties: + amount: + type: array + items: + type: object + $ref: '#/definitions/cosmos.base.v1beta1.Coin' + length: + description: Period duration in seconds. + type: string + format: int64 + google.protobuf.Any: + type: object + properties: + '@type': + type: string + additionalProperties: {} + google.rpc.Status: + type: object + properties: + code: + type: integer + format: int32 + details: + type: array + items: + type: object + $ref: '#/definitions/google.protobuf.Any' + message: + type: string + ibc.applications.fee.v1.Fee: + type: object + title: Fee defines the ICS29 receive, acknowledgement and timeout fees + properties: + ack_fee: + type: array + title: the packet acknowledgement fee + items: + type: object + $ref: '#/definitions/cosmos.base.v1beta1.Coin' + recv_fee: + type: array + title: the packet receive fee + items: + type: object + $ref: '#/definitions/cosmos.base.v1beta1.Coin' + timeout_fee: + type: array + title: the packet timeout fee + items: + type: object + $ref: '#/definitions/cosmos.base.v1beta1.Coin' + ibc.applications.fee.v1.FeeEnabledChannel: + type: object + title: FeeEnabledChannel contains the PortID & ChannelID for a fee enabled channel + properties: + channel_id: + type: string + title: unique channel identifier + port_id: + type: string + title: unique port identifier + ibc.applications.fee.v1.IdentifiedPacketFees: + type: object + title: IdentifiedPacketFees contains a list of type PacketFee and associated PacketId + properties: + packet_fees: + type: array + title: list of packet fees + items: + type: object + $ref: '#/definitions/ibc.applications.fee.v1.PacketFee' + packet_id: + title: unique packet identifier comprised of the channel ID, port ID and sequence + $ref: '#/definitions/ibc.core.channel.v1.PacketId' + ibc.applications.fee.v1.MsgPayPacketFee: + type: object + title: |- + MsgPayPacketFee defines the request type for the PayPacketFee rpc + This Msg can be used to pay for a packet at the next sequence send & should be combined with the Msg that will be + paid for + properties: + fee: + title: fee encapsulates the recv, ack and timeout fees associated with an IBC packet + $ref: '#/definitions/ibc.applications.fee.v1.Fee' + relayers: + type: array + title: optional list of relayers permitted to the receive packet fees + items: + type: string + signer: + type: string + title: account address to refund fee if necessary + source_channel_id: + type: string + title: the source channel unique identifer + source_port_id: + type: string + title: the source port unique identifier + ibc.applications.fee.v1.MsgPayPacketFeeAsync: + type: object + title: |- + MsgPayPacketFeeAsync defines the request type for the PayPacketFeeAsync rpc + This Msg can be used to pay for a packet at a specified sequence (instead of the next sequence send) + properties: + packet_fee: + title: the packet fee associated with a particular IBC packet + $ref: '#/definitions/ibc.applications.fee.v1.PacketFee' + packet_id: + title: unique packet identifier comprised of the channel ID, port ID and sequence + $ref: '#/definitions/ibc.core.channel.v1.PacketId' + ibc.applications.fee.v1.MsgPayPacketFeeAsyncResponse: + type: object + title: MsgPayPacketFeeAsyncResponse defines the response type for the PayPacketFeeAsync rpc + ibc.applications.fee.v1.MsgPayPacketFeeResponse: + type: object + title: MsgPayPacketFeeResponse defines the response type for the PayPacketFee rpc + ibc.applications.fee.v1.MsgRegisterCounterpartyPayee: + type: object + title: MsgRegisterCounterpartyPayee defines the request type for the RegisterCounterpartyPayee rpc + properties: + channel_id: + type: string + title: unique channel identifier + counterparty_payee: + type: string + title: the counterparty payee address + port_id: + type: string + title: unique port identifier + relayer: + type: string + title: the relayer address + ibc.applications.fee.v1.MsgRegisterCounterpartyPayeeResponse: + type: object + title: MsgRegisterCounterpartyPayeeResponse defines the response type for the RegisterCounterpartyPayee rpc + ibc.applications.fee.v1.MsgRegisterPayee: + type: object + title: MsgRegisterPayee defines the request type for the RegisterPayee rpc + properties: + channel_id: + type: string + title: unique channel identifier + payee: + type: string + title: the payee address + port_id: + type: string + title: unique port identifier + relayer: + type: string + title: the relayer address + ibc.applications.fee.v1.MsgRegisterPayeeResponse: + type: object + title: MsgRegisterPayeeResponse defines the response type for the RegisterPayee rpc + ibc.applications.fee.v1.PacketFee: + type: object + title: PacketFee contains ICS29 relayer fees, refund address and optional list of permitted relayers + properties: + fee: + title: fee encapsulates the recv, ack and timeout fees associated with an IBC packet + $ref: '#/definitions/ibc.applications.fee.v1.Fee' + refund_address: + type: string + title: the refund address for unspent fees + relayers: + type: array + title: optional list of relayers permitted to receive fees + items: + type: string + ibc.applications.fee.v1.QueryCounterpartyPayeeResponse: + type: object + title: QueryCounterpartyPayeeResponse defines the response type for the CounterpartyPayee rpc + properties: + counterparty_payee: + type: string + title: the counterparty payee address used to compensate forward relaying + ibc.applications.fee.v1.QueryFeeEnabledChannelResponse: + type: object + title: QueryFeeEnabledChannelResponse defines the response type for the FeeEnabledChannel rpc + properties: + fee_enabled: + type: boolean + title: boolean flag representing the fee enabled channel status + ibc.applications.fee.v1.QueryFeeEnabledChannelsResponse: + type: object + title: QueryFeeEnabledChannelsResponse defines the response type for the FeeEnabledChannels rpc + properties: + fee_enabled_channels: + type: array + title: list of fee enabled channels + items: + type: object + $ref: '#/definitions/ibc.applications.fee.v1.FeeEnabledChannel' + pagination: + description: pagination defines the pagination in the response. + $ref: '#/definitions/cosmos.base.query.v1beta1.PageResponse' + ibc.applications.fee.v1.QueryIncentivizedPacketResponse: + type: object + title: QueryIncentivizedPacketsResponse defines the response type for the IncentivizedPacket rpc + properties: + incentivized_packet: + title: the identified fees for the incentivized packet + $ref: '#/definitions/ibc.applications.fee.v1.IdentifiedPacketFees' + ibc.applications.fee.v1.QueryIncentivizedPacketsForChannelResponse: + type: object + title: QueryIncentivizedPacketsResponse defines the response type for the incentivized packets RPC + properties: + incentivized_packets: + type: array + title: Map of all incentivized_packets + items: + type: object + $ref: '#/definitions/ibc.applications.fee.v1.IdentifiedPacketFees' + pagination: + description: pagination defines the pagination in the response. + $ref: '#/definitions/cosmos.base.query.v1beta1.PageResponse' + ibc.applications.fee.v1.QueryIncentivizedPacketsResponse: + type: object + title: QueryIncentivizedPacketsResponse defines the response type for the IncentivizedPackets rpc + properties: + incentivized_packets: + type: array + title: list of identified fees for incentivized packets + items: + type: object + $ref: '#/definitions/ibc.applications.fee.v1.IdentifiedPacketFees' + pagination: + description: pagination defines the pagination in the response. + $ref: '#/definitions/cosmos.base.query.v1beta1.PageResponse' + ibc.applications.fee.v1.QueryPayeeResponse: + type: object + title: QueryPayeeResponse defines the response type for the Payee rpc + properties: + payee_address: + type: string + title: the payee address to which packet fees are paid out + ibc.applications.fee.v1.QueryTotalAckFeesResponse: + type: object + title: QueryTotalAckFeesResponse defines the response type for the TotalAckFees rpc + properties: + ack_fees: + type: array + title: the total packet acknowledgement fees + items: + type: object + $ref: '#/definitions/cosmos.base.v1beta1.Coin' + ibc.applications.fee.v1.QueryTotalRecvFeesResponse: + type: object + title: QueryTotalRecvFeesResponse defines the response type for the TotalRecvFees rpc + properties: + recv_fees: + type: array + title: the total packet receive fees + items: + type: object + $ref: '#/definitions/cosmos.base.v1beta1.Coin' + ibc.applications.fee.v1.QueryTotalTimeoutFeesResponse: + type: object + title: QueryTotalTimeoutFeesResponse defines the response type for the TotalTimeoutFees rpc + properties: + timeout_fees: + type: array + title: the total packet timeout fees + items: + type: object + $ref: '#/definitions/cosmos.base.v1beta1.Coin' + ibc.applications.interchain_accounts.controller.v1.MsgRegisterInterchainAccount: + type: object + title: MsgRegisterInterchainAccount defines the payload for Msg/RegisterAccount + properties: + connection_id: + type: string + ordering: + $ref: '#/definitions/ibc.core.channel.v1.Order' + owner: + type: string + version: + type: string + ibc.applications.interchain_accounts.controller.v1.MsgRegisterInterchainAccountResponse: + type: object + title: MsgRegisterInterchainAccountResponse defines the response for Msg/RegisterAccount + properties: + channel_id: + type: string + port_id: + type: string + ibc.applications.interchain_accounts.controller.v1.MsgSendTx: + type: object + title: MsgSendTx defines the payload for Msg/SendTx + properties: + connection_id: + type: string + owner: + type: string + packet_data: + $ref: '#/definitions/ibc.applications.interchain_accounts.v1.InterchainAccountPacketData' + relative_timeout: + description: |- + Relative timeout timestamp provided will be added to the current block time during transaction execution. + The timeout timestamp must be non-zero. + type: string + format: uint64 + ibc.applications.interchain_accounts.controller.v1.MsgSendTxResponse: + type: object + title: MsgSendTxResponse defines the response for MsgSendTx + properties: + sequence: + type: string + format: uint64 + ibc.applications.interchain_accounts.controller.v1.MsgUpdateParams: + type: object + title: MsgUpdateParams defines the payload for Msg/UpdateParams + properties: + params: + description: |- + params defines the 27-interchain-accounts/controller parameters to update. + + NOTE: All parameters must be supplied. + $ref: '#/definitions/ibc.applications.interchain_accounts.controller.v1.Params' + signer: + type: string + title: signer address + ibc.applications.interchain_accounts.controller.v1.MsgUpdateParamsResponse: + type: object + title: MsgUpdateParamsResponse defines the response for Msg/UpdateParams + ibc.applications.interchain_accounts.controller.v1.Params: + description: |- + Params defines the set of on-chain interchain accounts parameters. + The following parameters may be used to disable the controller submodule. + type: object + properties: + controller_enabled: + description: controller_enabled enables or disables the controller submodule. + type: boolean + ibc.applications.interchain_accounts.controller.v1.QueryInterchainAccountResponse: + description: QueryInterchainAccountResponse the response type for the Query/InterchainAccount RPC method. + type: object + properties: + address: + type: string + ibc.applications.interchain_accounts.controller.v1.QueryParamsResponse: + description: QueryParamsResponse is the response type for the Query/Params RPC method. + type: object + properties: + params: + description: params defines the parameters of the module. + $ref: '#/definitions/ibc.applications.interchain_accounts.controller.v1.Params' + ibc.applications.interchain_accounts.host.v1.MsgUpdateParams: + type: object + title: MsgUpdateParams defines the payload for Msg/UpdateParams + properties: + params: + description: |- + params defines the 27-interchain-accounts/host parameters to update. + + NOTE: All parameters must be supplied. + $ref: '#/definitions/ibc.applications.interchain_accounts.host.v1.Params' + signer: + type: string + title: signer address + ibc.applications.interchain_accounts.host.v1.MsgUpdateParamsResponse: + type: object + title: MsgUpdateParamsResponse defines the response for Msg/UpdateParams + ibc.applications.interchain_accounts.host.v1.Params: + description: |- + Params defines the set of on-chain interchain accounts parameters. + The following parameters may be used to disable the host submodule. + type: object + properties: + allow_messages: + description: allow_messages defines a list of sdk message typeURLs allowed to be executed on a host chain. + type: array + items: + type: string + host_enabled: + description: host_enabled enables or disables the host submodule. + type: boolean + ibc.applications.interchain_accounts.host.v1.QueryParamsResponse: + description: QueryParamsResponse is the response type for the Query/Params RPC method. + type: object + properties: + params: + description: params defines the parameters of the module. + $ref: '#/definitions/ibc.applications.interchain_accounts.host.v1.Params' + ibc.applications.interchain_accounts.v1.InterchainAccountPacketData: + description: InterchainAccountPacketData is comprised of a raw transaction, type of transaction and optional memo field. + type: object + properties: + data: + type: string + format: byte + memo: + type: string + type: + $ref: '#/definitions/ibc.applications.interchain_accounts.v1.Type' + ibc.applications.interchain_accounts.v1.Type: + description: |- + - TYPE_UNSPECIFIED: Default zero value enumeration + - TYPE_EXECUTE_TX: Execute a transaction on an interchain accounts host chain + type: string + title: |- + Type defines a classification of message issued from a controller chain to its associated interchain accounts + host + default: TYPE_UNSPECIFIED + enum: + - TYPE_UNSPECIFIED + - TYPE_EXECUTE_TX + ibc.applications.transfer.v1.DenomTrace: + description: |- + DenomTrace contains the base denomination for ICS20 fungible tokens and the + source tracing information path. + type: object + properties: + base_denom: + description: base denomination of the relayed fungible token. + type: string + path: + description: |- + path defines the chain of port/channel identifiers used for tracing the + source of the fungible token. + type: string + ibc.applications.transfer.v1.MsgTransfer: + type: object + title: |- + MsgTransfer defines a msg to transfer fungible tokens (i.e Coins) between + ICS20 enabled chains. See ICS Spec here: + https://github.com/cosmos/ibc/tree/master/spec/app/ics-020-fungible-token-transfer#data-structures + properties: + memo: + type: string + title: optional memo + receiver: + type: string + title: the recipient address on the destination chain + sender: + type: string + title: the sender address + source_channel: + type: string + title: the channel by which the packet will be sent + source_port: + type: string + title: the port on which the packet will be sent + timeout_height: + description: |- + Timeout height relative to the current block height. + The timeout is disabled when set to 0. + $ref: '#/definitions/ibc.core.client.v1.Height' + timeout_timestamp: + description: |- + Timeout timestamp in absolute nanoseconds since unix epoch. + The timeout is disabled when set to 0. + type: string + format: uint64 + token: + title: the tokens to be transferred + $ref: '#/definitions/cosmos.base.v1beta1.Coin' + ibc.applications.transfer.v1.MsgTransferResponse: + description: MsgTransferResponse defines the Msg/Transfer response type. + type: object + properties: + sequence: + type: string + format: uint64 + title: sequence number of the transfer packet sent + ibc.applications.transfer.v1.MsgUpdateParams: + description: MsgUpdateParams is the Msg/UpdateParams request type. + type: object + properties: + params: + description: |- + params defines the transfer parameters to update. + + NOTE: All parameters must be supplied. + $ref: '#/definitions/ibc.applications.transfer.v1.Params' + signer: + type: string + title: signer address + ibc.applications.transfer.v1.MsgUpdateParamsResponse: + description: |- + MsgUpdateParamsResponse defines the response structure for executing a + MsgUpdateParams message. + type: object + ibc.applications.transfer.v1.Params: + description: |- + Params defines the set of IBC transfer parameters. + NOTE: To prevent a single token from being transferred, set the + TransfersEnabled parameter to true and then set the bank module's SendEnabled + parameter for the denomination to false. + type: object + properties: + receive_enabled: + description: |- + receive_enabled enables or disables all cross-chain token transfers to this + chain. + type: boolean + send_enabled: + description: |- + send_enabled enables or disables all cross-chain token transfers from this + chain. + type: boolean + ibc.applications.transfer.v1.QueryDenomHashResponse: + description: |- + QueryDenomHashResponse is the response type for the Query/DenomHash RPC + method. + type: object + properties: + hash: + description: hash (in hex format) of the denomination trace information. + type: string + ibc.applications.transfer.v1.QueryDenomTraceResponse: + description: |- + QueryDenomTraceResponse is the response type for the Query/DenomTrace RPC + method. + type: object + properties: + denom_trace: + description: denom_trace returns the requested denomination trace information. + $ref: '#/definitions/ibc.applications.transfer.v1.DenomTrace' + ibc.applications.transfer.v1.QueryDenomTracesResponse: + description: |- + QueryConnectionsResponse is the response type for the Query/DenomTraces RPC + method. + type: object + properties: + denom_traces: + description: denom_traces returns all denominations trace information. + type: array + items: + type: object + $ref: '#/definitions/ibc.applications.transfer.v1.DenomTrace' + pagination: + description: pagination defines the pagination in the response. + $ref: '#/definitions/cosmos.base.query.v1beta1.PageResponse' + ibc.applications.transfer.v1.QueryEscrowAddressResponse: + description: QueryEscrowAddressResponse is the response type of the EscrowAddress RPC method. + type: object + properties: + escrow_address: + type: string + title: the escrow account address + ibc.applications.transfer.v1.QueryParamsResponse: + description: QueryParamsResponse is the response type for the Query/Params RPC method. + type: object + properties: + params: + description: params defines the parameters of the module. + $ref: '#/definitions/ibc.applications.transfer.v1.Params' + ibc.applications.transfer.v1.QueryTotalEscrowForDenomResponse: + description: QueryTotalEscrowForDenomResponse is the response type for TotalEscrowForDenom RPC method. + type: object + properties: + amount: + $ref: '#/definitions/cosmos.base.v1beta1.Coin' + ibc.core.channel.v1.Channel: + description: |- + Channel defines pipeline for exactly-once packet delivery between specific + modules on separate blockchains, which has at least one end capable of + sending packets and one end capable of receiving packets. + type: object + properties: + connection_hops: + type: array + title: |- + list of connection identifiers, in order, along which packets sent on + this channel will travel + items: + type: string + counterparty: + title: counterparty channel end + $ref: '#/definitions/ibc.core.channel.v1.Counterparty' + ordering: + title: whether the channel is ordered or unordered + $ref: '#/definitions/ibc.core.channel.v1.Order' + state: + title: current state of the channel end + $ref: '#/definitions/ibc.core.channel.v1.State' + upgrade_sequence: + type: string + format: uint64 + title: |- + upgrade sequence indicates the latest upgrade attempt performed by this channel + the value of 0 indicates the channel has never been upgraded + version: + type: string + title: opaque channel version, which is agreed upon during the handshake + ibc.core.channel.v1.Counterparty: + type: object + title: Counterparty defines a channel end counterparty + properties: + channel_id: + type: string + title: channel end on the counterparty chain + port_id: + description: port on the counterparty chain which owns the other end of the channel. + type: string + ibc.core.channel.v1.ErrorReceipt: + description: |- + ErrorReceipt defines a type which encapsulates the upgrade sequence and error associated with the + upgrade handshake failure. When a channel upgrade handshake is aborted both chains are expected to increment to the + next sequence. + type: object + properties: + message: + type: string + title: the error message detailing the cause of failure + sequence: + type: string + format: uint64 + title: the channel upgrade sequence + ibc.core.channel.v1.IdentifiedChannel: + description: |- + IdentifiedChannel defines a channel with additional port and channel + identifier fields. + type: object + properties: + channel_id: + type: string + title: channel identifier + connection_hops: + type: array + title: |- + list of connection identifiers, in order, along which packets sent on + this channel will travel + items: + type: string + counterparty: + title: counterparty channel end + $ref: '#/definitions/ibc.core.channel.v1.Counterparty' + ordering: + title: whether the channel is ordered or unordered + $ref: '#/definitions/ibc.core.channel.v1.Order' + port_id: + type: string + title: port identifier + state: + title: current state of the channel end + $ref: '#/definitions/ibc.core.channel.v1.State' + upgrade_sequence: + type: string + format: uint64 + title: |- + upgrade sequence indicates the latest upgrade attempt performed by this channel + the value of 0 indicates the channel has never been upgraded + version: + type: string + title: opaque channel version, which is agreed upon during the handshake + ibc.core.channel.v1.MsgAcknowledgement: + type: object + title: MsgAcknowledgement receives incoming IBC acknowledgement + properties: + acknowledgement: + type: string + format: byte + packet: + $ref: '#/definitions/ibc.core.channel.v1.Packet' + proof_acked: + type: string + format: byte + proof_height: + $ref: '#/definitions/ibc.core.client.v1.Height' + signer: + type: string + ibc.core.channel.v1.MsgAcknowledgementResponse: + description: MsgAcknowledgementResponse defines the Msg/Acknowledgement response type. + type: object + properties: + result: + $ref: '#/definitions/ibc.core.channel.v1.ResponseResultType' + ibc.core.channel.v1.MsgChannelCloseConfirm: + description: |- + MsgChannelCloseConfirm defines a msg sent by a Relayer to Chain B + to acknowledge the change of channel state to CLOSED on Chain A. + type: object + properties: + channel_id: + type: string + counterparty_upgrade_sequence: + type: string + format: uint64 + port_id: + type: string + proof_height: + $ref: '#/definitions/ibc.core.client.v1.Height' + proof_init: + type: string + format: byte + signer: + type: string + ibc.core.channel.v1.MsgChannelCloseConfirmResponse: + description: |- + MsgChannelCloseConfirmResponse defines the Msg/ChannelCloseConfirm response + type. + type: object + ibc.core.channel.v1.MsgChannelCloseInit: + description: |- + MsgChannelCloseInit defines a msg sent by a Relayer to Chain A + to close a channel with Chain B. + type: object + properties: + channel_id: + type: string + port_id: + type: string + signer: + type: string + ibc.core.channel.v1.MsgChannelCloseInitResponse: + description: MsgChannelCloseInitResponse defines the Msg/ChannelCloseInit response type. + type: object + ibc.core.channel.v1.MsgChannelOpenAck: + description: |- + MsgChannelOpenAck defines a msg sent by a Relayer to Chain A to acknowledge + the change of channel state to TRYOPEN on Chain B. + WARNING: a channel upgrade MUST NOT initialize an upgrade for this channel + in the same block as executing this message otherwise the counterparty will + be incapable of opening. + type: object + properties: + channel_id: + type: string + counterparty_channel_id: + type: string + counterparty_version: + type: string + port_id: + type: string + proof_height: + $ref: '#/definitions/ibc.core.client.v1.Height' + proof_try: + type: string + format: byte + signer: + type: string + ibc.core.channel.v1.MsgChannelOpenAckResponse: + description: MsgChannelOpenAckResponse defines the Msg/ChannelOpenAck response type. + type: object + ibc.core.channel.v1.MsgChannelOpenConfirm: + description: |- + MsgChannelOpenConfirm defines a msg sent by a Relayer to Chain B to + acknowledge the change of channel state to OPEN on Chain A. + type: object + properties: + channel_id: + type: string + port_id: + type: string + proof_ack: + type: string + format: byte + proof_height: + $ref: '#/definitions/ibc.core.client.v1.Height' + signer: + type: string + ibc.core.channel.v1.MsgChannelOpenConfirmResponse: + description: |- + MsgChannelOpenConfirmResponse defines the Msg/ChannelOpenConfirm response + type. + type: object + ibc.core.channel.v1.MsgChannelOpenInit: + description: |- + MsgChannelOpenInit defines an sdk.Msg to initialize a channel handshake. It + is called by a relayer on Chain A. + type: object + properties: + channel: + $ref: '#/definitions/ibc.core.channel.v1.Channel' + port_id: + type: string + signer: + type: string + ibc.core.channel.v1.MsgChannelOpenInitResponse: + description: MsgChannelOpenInitResponse defines the Msg/ChannelOpenInit response type. + type: object + properties: + channel_id: + type: string + version: + type: string + ibc.core.channel.v1.MsgChannelOpenTry: + description: |- + MsgChannelOpenInit defines a msg sent by a Relayer to try to open a channel + on Chain B. The version field within the Channel field has been deprecated. Its + value will be ignored by core IBC. + type: object + properties: + channel: + description: 'NOTE: the version field within the channel has been deprecated. Its value will be ignored by core IBC.' + $ref: '#/definitions/ibc.core.channel.v1.Channel' + counterparty_version: + type: string + port_id: + type: string + previous_channel_id: + description: 'Deprecated: this field is unused. Crossing hello''s are no longer supported in core IBC.' + type: string + proof_height: + $ref: '#/definitions/ibc.core.client.v1.Height' + proof_init: + type: string + format: byte + signer: + type: string + ibc.core.channel.v1.MsgChannelOpenTryResponse: + description: MsgChannelOpenTryResponse defines the Msg/ChannelOpenTry response type. + type: object + properties: + channel_id: + type: string + version: + type: string + ibc.core.channel.v1.MsgChannelUpgradeAck: + type: object + title: MsgChannelUpgradeAck defines the request type for the ChannelUpgradeAck rpc + properties: + channel_id: + type: string + counterparty_upgrade: + $ref: '#/definitions/ibc.core.channel.v1.Upgrade' + port_id: + type: string + proof_channel: + type: string + format: byte + proof_height: + $ref: '#/definitions/ibc.core.client.v1.Height' + proof_upgrade: + type: string + format: byte + signer: + type: string + ibc.core.channel.v1.MsgChannelUpgradeAckResponse: + type: object + title: MsgChannelUpgradeAckResponse defines MsgChannelUpgradeAck response type + properties: + result: + $ref: '#/definitions/ibc.core.channel.v1.ResponseResultType' + ibc.core.channel.v1.MsgChannelUpgradeCancel: + type: object + title: MsgChannelUpgradeCancel defines the request type for the ChannelUpgradeCancel rpc + properties: + channel_id: + type: string + error_receipt: + $ref: '#/definitions/ibc.core.channel.v1.ErrorReceipt' + port_id: + type: string + proof_error_receipt: + type: string + format: byte + proof_height: + $ref: '#/definitions/ibc.core.client.v1.Height' + signer: + type: string + ibc.core.channel.v1.MsgChannelUpgradeCancelResponse: + type: object + title: MsgChannelUpgradeCancelResponse defines the MsgChannelUpgradeCancel response type + ibc.core.channel.v1.MsgChannelUpgradeConfirm: + type: object + title: MsgChannelUpgradeConfirm defines the request type for the ChannelUpgradeConfirm rpc + properties: + channel_id: + type: string + counterparty_channel_state: + $ref: '#/definitions/ibc.core.channel.v1.State' + counterparty_upgrade: + $ref: '#/definitions/ibc.core.channel.v1.Upgrade' + port_id: + type: string + proof_channel: + type: string + format: byte + proof_height: + $ref: '#/definitions/ibc.core.client.v1.Height' + proof_upgrade: + type: string + format: byte + signer: + type: string + ibc.core.channel.v1.MsgChannelUpgradeConfirmResponse: + type: object + title: MsgChannelUpgradeConfirmResponse defines MsgChannelUpgradeConfirm response type + properties: + result: + $ref: '#/definitions/ibc.core.channel.v1.ResponseResultType' + ibc.core.channel.v1.MsgChannelUpgradeInit: + description: |- + MsgChannelUpgradeInit defines the request type for the ChannelUpgradeInit rpc + WARNING: Initializing a channel upgrade in the same block as opening the channel + may result in the counterparty being incapable of opening. + type: object + properties: + channel_id: + type: string + fields: + $ref: '#/definitions/ibc.core.channel.v1.UpgradeFields' + port_id: + type: string + signer: + type: string + ibc.core.channel.v1.MsgChannelUpgradeInitResponse: + type: object + title: MsgChannelUpgradeInitResponse defines the MsgChannelUpgradeInit response type + properties: + upgrade: + $ref: '#/definitions/ibc.core.channel.v1.Upgrade' + upgrade_sequence: + type: string + format: uint64 + ibc.core.channel.v1.MsgChannelUpgradeOpen: + type: object + title: MsgChannelUpgradeOpen defines the request type for the ChannelUpgradeOpen rpc + properties: + channel_id: + type: string + counterparty_channel_state: + $ref: '#/definitions/ibc.core.channel.v1.State' + counterparty_upgrade_sequence: + type: string + format: uint64 + port_id: + type: string + proof_channel: + type: string + format: byte + proof_height: + $ref: '#/definitions/ibc.core.client.v1.Height' + signer: + type: string + ibc.core.channel.v1.MsgChannelUpgradeOpenResponse: + type: object + title: MsgChannelUpgradeOpenResponse defines the MsgChannelUpgradeOpen response type + ibc.core.channel.v1.MsgChannelUpgradeTimeout: + type: object + title: MsgChannelUpgradeTimeout defines the request type for the ChannelUpgradeTimeout rpc + properties: + channel_id: + type: string + counterparty_channel: + $ref: '#/definitions/ibc.core.channel.v1.Channel' + port_id: + type: string + proof_channel: + type: string + format: byte + proof_height: + $ref: '#/definitions/ibc.core.client.v1.Height' + signer: + type: string + ibc.core.channel.v1.MsgChannelUpgradeTimeoutResponse: + type: object + title: MsgChannelUpgradeTimeoutRepsonse defines the MsgChannelUpgradeTimeout response type + ibc.core.channel.v1.MsgChannelUpgradeTry: + type: object + title: MsgChannelUpgradeTry defines the request type for the ChannelUpgradeTry rpc + properties: + channel_id: + type: string + counterparty_upgrade_fields: + $ref: '#/definitions/ibc.core.channel.v1.UpgradeFields' + counterparty_upgrade_sequence: + type: string + format: uint64 + port_id: + type: string + proof_channel: + type: string + format: byte + proof_height: + $ref: '#/definitions/ibc.core.client.v1.Height' + proof_upgrade: + type: string + format: byte + proposed_upgrade_connection_hops: + type: array + items: + type: string + signer: + type: string + ibc.core.channel.v1.MsgChannelUpgradeTryResponse: + type: object + title: MsgChannelUpgradeTryResponse defines the MsgChannelUpgradeTry response type + properties: + result: + $ref: '#/definitions/ibc.core.channel.v1.ResponseResultType' + upgrade: + $ref: '#/definitions/ibc.core.channel.v1.Upgrade' + upgrade_sequence: + type: string + format: uint64 + ibc.core.channel.v1.MsgPruneAcknowledgements: + description: MsgPruneAcknowledgements defines the request type for the PruneAcknowledgements rpc. + type: object + properties: + channel_id: + type: string + limit: + type: string + format: uint64 + port_id: + type: string + signer: + type: string + ibc.core.channel.v1.MsgPruneAcknowledgementsResponse: + description: MsgPruneAcknowledgementsResponse defines the response type for the PruneAcknowledgements rpc. + type: object + properties: + total_pruned_sequences: + description: Number of sequences pruned (includes both packet acknowledgements and packet receipts where appropriate). + type: string + format: uint64 + total_remaining_sequences: + description: Number of sequences left after pruning. + type: string + format: uint64 + ibc.core.channel.v1.MsgRecvPacket: + type: object + title: MsgRecvPacket receives incoming IBC packet + properties: + packet: + $ref: '#/definitions/ibc.core.channel.v1.Packet' + proof_commitment: + type: string + format: byte + proof_height: + $ref: '#/definitions/ibc.core.client.v1.Height' + signer: + type: string + ibc.core.channel.v1.MsgRecvPacketResponse: + description: MsgRecvPacketResponse defines the Msg/RecvPacket response type. + type: object + properties: + result: + $ref: '#/definitions/ibc.core.channel.v1.ResponseResultType' + ibc.core.channel.v1.MsgTimeout: + type: object + title: MsgTimeout receives timed-out packet + properties: + next_sequence_recv: + type: string + format: uint64 + packet: + $ref: '#/definitions/ibc.core.channel.v1.Packet' + proof_height: + $ref: '#/definitions/ibc.core.client.v1.Height' + proof_unreceived: + type: string + format: byte + signer: + type: string + ibc.core.channel.v1.MsgTimeoutOnClose: + description: MsgTimeoutOnClose timed-out packet upon counterparty channel closure. + type: object + properties: + counterparty_upgrade_sequence: + type: string + format: uint64 + next_sequence_recv: + type: string + format: uint64 + packet: + $ref: '#/definitions/ibc.core.channel.v1.Packet' + proof_close: + type: string + format: byte + proof_height: + $ref: '#/definitions/ibc.core.client.v1.Height' + proof_unreceived: + type: string + format: byte + signer: + type: string + ibc.core.channel.v1.MsgTimeoutOnCloseResponse: + description: MsgTimeoutOnCloseResponse defines the Msg/TimeoutOnClose response type. + type: object + properties: + result: + $ref: '#/definitions/ibc.core.channel.v1.ResponseResultType' + ibc.core.channel.v1.MsgTimeoutResponse: + description: MsgTimeoutResponse defines the Msg/Timeout response type. + type: object + properties: + result: + $ref: '#/definitions/ibc.core.channel.v1.ResponseResultType' + ibc.core.channel.v1.MsgUpdateParams: + description: MsgUpdateParams is the MsgUpdateParams request type. + type: object + properties: + authority: + description: authority is the address that controls the module (defaults to x/gov unless overwritten). + type: string + params: + description: |- + params defines the channel parameters to update. + + NOTE: All parameters must be supplied. + $ref: '#/definitions/ibc.core.channel.v1.Params' + ibc.core.channel.v1.MsgUpdateParamsResponse: + description: MsgUpdateParamsResponse defines the MsgUpdateParams response type. + type: object + ibc.core.channel.v1.Order: + description: |- + - ORDER_NONE_UNSPECIFIED: zero-value for channel ordering + - ORDER_UNORDERED: packets can be delivered in any order, which may differ from the order in + which they were sent. + - ORDER_ORDERED: packets are delivered exactly in the order which they were sent + type: string + title: Order defines if a channel is ORDERED or UNORDERED + default: ORDER_NONE_UNSPECIFIED + enum: + - ORDER_NONE_UNSPECIFIED + - ORDER_UNORDERED + - ORDER_ORDERED + ibc.core.channel.v1.Packet: + type: object + title: Packet defines a type that carries data across different chains through IBC + properties: + data: + type: string + format: byte + title: actual opaque bytes transferred directly to the application module + destination_channel: + description: identifies the channel end on the receiving chain. + type: string + destination_port: + description: identifies the port on the receiving chain. + type: string + sequence: + description: |- + number corresponds to the order of sends and receives, where a Packet + with an earlier sequence number must be sent and received before a Packet + with a later sequence number. + type: string + format: uint64 + source_channel: + description: identifies the channel end on the sending chain. + type: string + source_port: + description: identifies the port on the sending chain. + type: string + timeout_height: + title: block height after which the packet times out + $ref: '#/definitions/ibc.core.client.v1.Height' + timeout_timestamp: + type: string + format: uint64 + title: block timestamp (in nanoseconds) after which the packet times out + ibc.core.channel.v1.PacketId: + type: object + title: |- + PacketId is an identifer for a unique Packet + Source chains refer to packets by source port/channel + Destination chains refer to packets by destination port/channel + properties: + channel_id: + type: string + title: channel unique identifier + port_id: + type: string + title: channel port identifier + sequence: + type: string + format: uint64 + title: packet sequence + ibc.core.channel.v1.PacketState: + description: |- + PacketState defines the generic type necessary to retrieve and store + packet commitments, acknowledgements, and receipts. + Caller is responsible for knowing the context necessary to interpret this + state as a commitment, acknowledgement, or a receipt. + type: object + properties: + channel_id: + description: channel unique identifier. + type: string + data: + description: embedded data that represents packet state. + type: string + format: byte + port_id: + description: channel port identifier. + type: string + sequence: + description: packet sequence. + type: string + format: uint64 + ibc.core.channel.v1.Params: + description: Params defines the set of IBC channel parameters. + type: object + properties: + upgrade_timeout: + description: the relative timeout after which channel upgrades will time out. + $ref: '#/definitions/ibc.core.channel.v1.Timeout' + ibc.core.channel.v1.QueryChannelClientStateResponse: + type: object + title: |- + QueryChannelClientStateResponse is the Response type for the + Query/QueryChannelClientState RPC method + properties: + identified_client_state: + title: client state associated with the channel + $ref: '#/definitions/ibc.core.client.v1.IdentifiedClientState' + proof: + type: string + format: byte + title: merkle proof of existence + proof_height: + title: height at which the proof was retrieved + $ref: '#/definitions/ibc.core.client.v1.Height' + ibc.core.channel.v1.QueryChannelConsensusStateResponse: + type: object + title: |- + QueryChannelClientStateResponse is the Response type for the + Query/QueryChannelClientState RPC method + properties: + client_id: + type: string + title: client ID associated with the consensus state + consensus_state: + title: consensus state associated with the channel + $ref: '#/definitions/google.protobuf.Any' + proof: + type: string + format: byte + title: merkle proof of existence + proof_height: + title: height at which the proof was retrieved + $ref: '#/definitions/ibc.core.client.v1.Height' + ibc.core.channel.v1.QueryChannelParamsResponse: + description: QueryChannelParamsResponse is the response type for the Query/ChannelParams RPC method. + type: object + properties: + params: + description: params defines the parameters of the module. + $ref: '#/definitions/ibc.core.channel.v1.Params' + ibc.core.channel.v1.QueryChannelResponse: + description: |- + QueryChannelResponse is the response type for the Query/Channel RPC method. + Besides the Channel end, it includes a proof and the height from which the + proof was retrieved. + type: object + properties: + channel: + title: channel associated with the request identifiers + $ref: '#/definitions/ibc.core.channel.v1.Channel' + proof: + type: string + format: byte + title: merkle proof of existence + proof_height: + title: height at which the proof was retrieved + $ref: '#/definitions/ibc.core.client.v1.Height' + ibc.core.channel.v1.QueryChannelsResponse: + description: QueryChannelsResponse is the response type for the Query/Channels RPC method. + type: object + properties: + channels: + description: list of stored channels of the chain. + type: array + items: + type: object + $ref: '#/definitions/ibc.core.channel.v1.IdentifiedChannel' + height: + title: query block height + $ref: '#/definitions/ibc.core.client.v1.Height' + pagination: + title: pagination response + $ref: '#/definitions/cosmos.base.query.v1beta1.PageResponse' + ibc.core.channel.v1.QueryConnectionChannelsResponse: + type: object + title: |- + QueryConnectionChannelsResponse is the Response type for the + Query/QueryConnectionChannels RPC method + properties: + channels: + description: list of channels associated with a connection. + type: array + items: + type: object + $ref: '#/definitions/ibc.core.channel.v1.IdentifiedChannel' + height: + title: query block height + $ref: '#/definitions/ibc.core.client.v1.Height' + pagination: + title: pagination response + $ref: '#/definitions/cosmos.base.query.v1beta1.PageResponse' + ibc.core.channel.v1.QueryNextSequenceReceiveResponse: + type: object + title: |- + QuerySequenceResponse is the response type for the + Query/QueryNextSequenceReceiveResponse RPC method + properties: + next_sequence_receive: + type: string + format: uint64 + title: next sequence receive number + proof: + type: string + format: byte + title: merkle proof of existence + proof_height: + title: height at which the proof was retrieved + $ref: '#/definitions/ibc.core.client.v1.Height' + ibc.core.channel.v1.QueryNextSequenceSendResponse: + type: object + title: |- + QueryNextSequenceSendResponse is the request type for the + Query/QueryNextSequenceSend RPC method + properties: + next_sequence_send: + type: string + format: uint64 + title: next sequence send number + proof: + type: string + format: byte + title: merkle proof of existence + proof_height: + title: height at which the proof was retrieved + $ref: '#/definitions/ibc.core.client.v1.Height' + ibc.core.channel.v1.QueryPacketAcknowledgementResponse: + type: object + title: |- + QueryPacketAcknowledgementResponse defines the client query response for a + packet which also includes a proof and the height from which the + proof was retrieved + properties: + acknowledgement: + type: string + format: byte + title: packet associated with the request fields + proof: + type: string + format: byte + title: merkle proof of existence + proof_height: + title: height at which the proof was retrieved + $ref: '#/definitions/ibc.core.client.v1.Height' + ibc.core.channel.v1.QueryPacketAcknowledgementsResponse: + type: object + title: |- + QueryPacketAcknowledgemetsResponse is the request type for the + Query/QueryPacketAcknowledgements RPC method + properties: + acknowledgements: + type: array + items: + type: object + $ref: '#/definitions/ibc.core.channel.v1.PacketState' + height: + title: query block height + $ref: '#/definitions/ibc.core.client.v1.Height' + pagination: + title: pagination response + $ref: '#/definitions/cosmos.base.query.v1beta1.PageResponse' + ibc.core.channel.v1.QueryPacketCommitmentResponse: + type: object + title: |- + QueryPacketCommitmentResponse defines the client query response for a packet + which also includes a proof and the height from which the proof was + retrieved + properties: + commitment: + type: string + format: byte + title: packet associated with the request fields + proof: + type: string + format: byte + title: merkle proof of existence + proof_height: + title: height at which the proof was retrieved + $ref: '#/definitions/ibc.core.client.v1.Height' + ibc.core.channel.v1.QueryPacketCommitmentsResponse: + type: object + title: |- + QueryPacketCommitmentsResponse is the request type for the + Query/QueryPacketCommitments RPC method + properties: + commitments: + type: array + items: + type: object + $ref: '#/definitions/ibc.core.channel.v1.PacketState' + height: + title: query block height + $ref: '#/definitions/ibc.core.client.v1.Height' + pagination: + title: pagination response + $ref: '#/definitions/cosmos.base.query.v1beta1.PageResponse' + ibc.core.channel.v1.QueryPacketReceiptResponse: + type: object + title: |- + QueryPacketReceiptResponse defines the client query response for a packet + receipt which also includes a proof, and the height from which the proof was + retrieved + properties: + proof: + type: string + format: byte + title: merkle proof of existence + proof_height: + title: height at which the proof was retrieved + $ref: '#/definitions/ibc.core.client.v1.Height' + received: + type: boolean + title: success flag for if receipt exists + ibc.core.channel.v1.QueryUnreceivedAcksResponse: + type: object + title: |- + QueryUnreceivedAcksResponse is the response type for the + Query/UnreceivedAcks RPC method + properties: + height: + title: query block height + $ref: '#/definitions/ibc.core.client.v1.Height' + sequences: + type: array + title: list of unreceived acknowledgement sequences + items: + type: string + format: uint64 + ibc.core.channel.v1.QueryUnreceivedPacketsResponse: + type: object + title: |- + QueryUnreceivedPacketsResponse is the response type for the + Query/UnreceivedPacketCommitments RPC method + properties: + height: + title: query block height + $ref: '#/definitions/ibc.core.client.v1.Height' + sequences: + type: array + title: list of unreceived packet sequences + items: + type: string + format: uint64 + ibc.core.channel.v1.QueryUpgradeErrorResponse: + type: object + title: QueryUpgradeErrorResponse is the response type for the Query/QueryUpgradeError RPC method + properties: + error_receipt: + $ref: '#/definitions/ibc.core.channel.v1.ErrorReceipt' + proof: + type: string + format: byte + title: merkle proof of existence + proof_height: + title: height at which the proof was retrieved + $ref: '#/definitions/ibc.core.client.v1.Height' + ibc.core.channel.v1.QueryUpgradeResponse: + type: object + title: QueryUpgradeResponse is the response type for the QueryUpgradeResponse RPC method + properties: + proof: + type: string + format: byte + title: merkle proof of existence + proof_height: + title: height at which the proof was retrieved + $ref: '#/definitions/ibc.core.client.v1.Height' + upgrade: + $ref: '#/definitions/ibc.core.channel.v1.Upgrade' + ibc.core.channel.v1.ResponseResultType: + description: |- + - RESPONSE_RESULT_TYPE_UNSPECIFIED: Default zero value enumeration + - RESPONSE_RESULT_TYPE_NOOP: The message did not call the IBC application callbacks (because, for example, the packet had already been relayed) + - RESPONSE_RESULT_TYPE_SUCCESS: The message was executed successfully + - RESPONSE_RESULT_TYPE_FAILURE: The message was executed unsuccessfully + type: string + title: ResponseResultType defines the possible outcomes of the execution of a message + default: RESPONSE_RESULT_TYPE_UNSPECIFIED + enum: + - RESPONSE_RESULT_TYPE_UNSPECIFIED + - RESPONSE_RESULT_TYPE_NOOP + - RESPONSE_RESULT_TYPE_SUCCESS + - RESPONSE_RESULT_TYPE_FAILURE + ibc.core.channel.v1.State: + description: |- + State defines if a channel is in one of the following states: + CLOSED, INIT, TRYOPEN, OPEN, FLUSHING, FLUSHCOMPLETE or UNINITIALIZED. + + - STATE_UNINITIALIZED_UNSPECIFIED: Default State + - STATE_INIT: A channel has just started the opening handshake. + - STATE_TRYOPEN: A channel has acknowledged the handshake step on the counterparty chain. + - STATE_OPEN: A channel has completed the handshake. Open channels are + ready to send and receive packets. + - STATE_CLOSED: A channel has been closed and can no longer be used to send or receive + packets. + - STATE_FLUSHING: A channel has just accepted the upgrade handshake attempt and is flushing in-flight packets. + - STATE_FLUSHCOMPLETE: A channel has just completed flushing any in-flight packets. + type: string + default: STATE_UNINITIALIZED_UNSPECIFIED + enum: + - STATE_UNINITIALIZED_UNSPECIFIED + - STATE_INIT + - STATE_TRYOPEN + - STATE_OPEN + - STATE_CLOSED + - STATE_FLUSHING + - STATE_FLUSHCOMPLETE + ibc.core.channel.v1.Timeout: + description: |- + Timeout defines an execution deadline structure for 04-channel handlers. + This includes packet lifecycle handlers as well as the upgrade handshake handlers. + A valid Timeout contains either one or both of a timestamp and block height (sequence). + type: object + properties: + height: + title: block height after which the packet or upgrade times out + $ref: '#/definitions/ibc.core.client.v1.Height' + timestamp: + type: string + format: uint64 + title: block timestamp (in nanoseconds) after which the packet or upgrade times out + ibc.core.channel.v1.Upgrade: + description: |- + Upgrade is a verifiable type which contains the relevant information + for an attempted upgrade. It provides the proposed changes to the channel + end, the timeout for this upgrade attempt and the next packet sequence + which allows the counterparty to efficiently know the highest sequence it has received. + The next sequence send is used for pruning and upgrading from unordered to ordered channels. + type: object + properties: + fields: + $ref: '#/definitions/ibc.core.channel.v1.UpgradeFields' + next_sequence_send: + type: string + format: uint64 + timeout: + $ref: '#/definitions/ibc.core.channel.v1.Timeout' + ibc.core.channel.v1.UpgradeFields: + description: |- + UpgradeFields are the fields in a channel end which may be changed + during a channel upgrade. + type: object + properties: + connection_hops: + type: array + items: + type: string + ordering: + $ref: '#/definitions/ibc.core.channel.v1.Order' + version: + type: string + ibc.core.client.v1.ConsensusStateWithHeight: + description: |- + ConsensusStateWithHeight defines a consensus state with an additional height + field. + type: object + properties: + consensus_state: + title: consensus state + $ref: '#/definitions/google.protobuf.Any' + height: + title: consensus state height + $ref: '#/definitions/ibc.core.client.v1.Height' + ibc.core.client.v1.Height: + description: |- + Normally the RevisionHeight is incremented at each height while keeping + RevisionNumber the same. However some consensus algorithms may choose to + reset the height in certain conditions e.g. hard forks, state-machine + breaking changes In these cases, the RevisionNumber is incremented so that + height continues to be monitonically increasing even as the RevisionHeight + gets reset + type: object + title: |- + Height is a monotonically increasing data type + that can be compared against another Height for the purposes of updating and + freezing clients + properties: + revision_height: + type: string + format: uint64 + title: the height within the given revision + revision_number: + type: string + format: uint64 + title: the revision that the client is currently on + ibc.core.client.v1.IdentifiedClientState: + description: |- + IdentifiedClientState defines a client state with an additional client + identifier field. + type: object + properties: + client_id: + type: string + title: client identifier + client_state: + title: client state + $ref: '#/definitions/google.protobuf.Any' + ibc.core.client.v1.MsgCreateClient: + type: object + title: MsgCreateClient defines a message to create an IBC client + properties: + client_state: + title: light client state + $ref: '#/definitions/google.protobuf.Any' + consensus_state: + description: |- + consensus state associated with the client that corresponds to a given + height. + $ref: '#/definitions/google.protobuf.Any' + signer: + type: string + title: signer address + ibc.core.client.v1.MsgCreateClientResponse: + description: MsgCreateClientResponse defines the Msg/CreateClient response type. + type: object + ibc.core.client.v1.MsgIBCSoftwareUpgrade: + type: object + title: MsgIBCSoftwareUpgrade defines the message used to schedule an upgrade of an IBC client using a v1 governance proposal + properties: + plan: + $ref: '#/definitions/cosmos.upgrade.v1beta1.Plan' + signer: + type: string + title: signer address + upgraded_client_state: + description: |- + An UpgradedClientState must be provided to perform an IBC breaking upgrade. + This will make the chain commit to the correct upgraded (self) client state + before the upgrade occurs, so that connecting chains can verify that the + new upgraded client is valid by verifying a proof on the previous version + of the chain. This will allow IBC connections to persist smoothly across + planned chain upgrades. Correspondingly, the UpgradedClientState field has been + deprecated in the Cosmos SDK to allow for this logic to exist solely in + the 02-client module. + $ref: '#/definitions/google.protobuf.Any' + ibc.core.client.v1.MsgIBCSoftwareUpgradeResponse: + description: MsgIBCSoftwareUpgradeResponse defines the Msg/IBCSoftwareUpgrade response type. + type: object + ibc.core.client.v1.MsgRecoverClient: + description: MsgRecoverClient defines the message used to recover a frozen or expired client. + type: object + properties: + signer: + type: string + title: signer address + subject_client_id: + type: string + title: the client identifier for the client to be updated if the proposal passes + substitute_client_id: + type: string + title: |- + the substitute client identifier for the client which will replace the subject + client + ibc.core.client.v1.MsgRecoverClientResponse: + description: MsgRecoverClientResponse defines the Msg/RecoverClient response type. + type: object + ibc.core.client.v1.MsgSubmitMisbehaviour: + description: |- + MsgSubmitMisbehaviour defines an sdk.Msg type that submits Evidence for + light client misbehaviour. + This message has been deprecated. Use MsgUpdateClient instead. + type: object + properties: + client_id: + type: string + title: client unique identifier + misbehaviour: + title: misbehaviour used for freezing the light client + $ref: '#/definitions/google.protobuf.Any' + signer: + type: string + title: signer address + ibc.core.client.v1.MsgSubmitMisbehaviourResponse: + description: |- + MsgSubmitMisbehaviourResponse defines the Msg/SubmitMisbehaviour response + type. + type: object + ibc.core.client.v1.MsgUpdateClient: + description: |- + MsgUpdateClient defines an sdk.Msg to update a IBC client state using + the given client message. + type: object + properties: + client_id: + type: string + title: client unique identifier + client_message: + title: client message to update the light client + $ref: '#/definitions/google.protobuf.Any' + signer: + type: string + title: signer address + ibc.core.client.v1.MsgUpdateClientResponse: + description: MsgUpdateClientResponse defines the Msg/UpdateClient response type. + type: object + ibc.core.client.v1.MsgUpdateParams: + description: MsgUpdateParams defines the sdk.Msg type to update the client parameters. + type: object + properties: + params: + description: |- + params defines the client parameters to update. + + NOTE: All parameters must be supplied. + $ref: '#/definitions/ibc.core.client.v1.Params' + signer: + type: string + title: signer address + ibc.core.client.v1.MsgUpdateParamsResponse: + description: MsgUpdateParamsResponse defines the MsgUpdateParams response type. + type: object + ibc.core.client.v1.MsgUpgradeClient: + type: object + title: |- + MsgUpgradeClient defines an sdk.Msg to upgrade an IBC client to a new client + state + properties: + client_id: + type: string + title: client unique identifier + client_state: + title: upgraded client state + $ref: '#/definitions/google.protobuf.Any' + consensus_state: + title: |- + upgraded consensus state, only contains enough information to serve as a + basis of trust in update logic + $ref: '#/definitions/google.protobuf.Any' + proof_upgrade_client: + type: string + format: byte + title: proof that old chain committed to new client + proof_upgrade_consensus_state: + type: string + format: byte + title: proof that old chain committed to new consensus state + signer: + type: string + title: signer address + ibc.core.client.v1.MsgUpgradeClientResponse: + description: MsgUpgradeClientResponse defines the Msg/UpgradeClient response type. + type: object + ibc.core.client.v1.Params: + description: Params defines the set of IBC light client parameters. + type: object + properties: + allowed_clients: + description: |- + allowed_clients defines the list of allowed client state types which can be created + and interacted with. If a client type is removed from the allowed clients list, usage + of this client will be disabled until it is added again to the list. + type: array + items: + type: string + ibc.core.client.v1.QueryClientParamsResponse: + description: |- + QueryClientParamsResponse is the response type for the Query/ClientParams RPC + method. + type: object + properties: + params: + description: params defines the parameters of the module. + $ref: '#/definitions/ibc.core.client.v1.Params' + ibc.core.client.v1.QueryClientStateResponse: + description: |- + QueryClientStateResponse is the response type for the Query/ClientState RPC + method. Besides the client state, it includes a proof and the height from + which the proof was retrieved. + type: object + properties: + client_state: + title: client state associated with the request identifier + $ref: '#/definitions/google.protobuf.Any' + proof: + type: string + format: byte + title: merkle proof of existence + proof_height: + title: height at which the proof was retrieved + $ref: '#/definitions/ibc.core.client.v1.Height' + ibc.core.client.v1.QueryClientStatesResponse: + description: |- + QueryClientStatesResponse is the response type for the Query/ClientStates RPC + method. + type: object + properties: + client_states: + description: list of stored ClientStates of the chain. + type: array + items: + type: object + $ref: '#/definitions/ibc.core.client.v1.IdentifiedClientState' + pagination: + title: pagination response + $ref: '#/definitions/cosmos.base.query.v1beta1.PageResponse' + ibc.core.client.v1.QueryClientStatusResponse: + description: |- + QueryClientStatusResponse is the response type for the Query/ClientStatus RPC + method. It returns the current status of the IBC client. + type: object + properties: + status: + type: string + ibc.core.client.v1.QueryConsensusStateHeightsResponse: + type: object + title: |- + QueryConsensusStateHeightsResponse is the response type for the + Query/ConsensusStateHeights RPC method + properties: + consensus_state_heights: + type: array + title: consensus state heights + items: + type: object + $ref: '#/definitions/ibc.core.client.v1.Height' + pagination: + title: pagination response + $ref: '#/definitions/cosmos.base.query.v1beta1.PageResponse' + ibc.core.client.v1.QueryConsensusStateResponse: + type: object + title: |- + QueryConsensusStateResponse is the response type for the Query/ConsensusState + RPC method + properties: + consensus_state: + title: consensus state associated with the client identifier at the given height + $ref: '#/definitions/google.protobuf.Any' + proof: + type: string + format: byte + title: merkle proof of existence + proof_height: + title: height at which the proof was retrieved + $ref: '#/definitions/ibc.core.client.v1.Height' + ibc.core.client.v1.QueryConsensusStatesResponse: + type: object + title: |- + QueryConsensusStatesResponse is the response type for the + Query/ConsensusStates RPC method + properties: + consensus_states: + type: array + title: consensus states associated with the identifier + items: + type: object + $ref: '#/definitions/ibc.core.client.v1.ConsensusStateWithHeight' + pagination: + title: pagination response + $ref: '#/definitions/cosmos.base.query.v1beta1.PageResponse' + ibc.core.client.v1.QueryUpgradedClientStateResponse: + description: |- + QueryUpgradedClientStateResponse is the response type for the + Query/UpgradedClientState RPC method. + type: object + properties: + upgraded_client_state: + title: client state associated with the request identifier + $ref: '#/definitions/google.protobuf.Any' + ibc.core.client.v1.QueryUpgradedConsensusStateResponse: + description: |- + QueryUpgradedConsensusStateResponse is the response type for the + Query/UpgradedConsensusState RPC method. + type: object + properties: + upgraded_consensus_state: + title: Consensus state associated with the request identifier + $ref: '#/definitions/google.protobuf.Any' + ibc.core.commitment.v1.MerklePrefix: + type: object + title: |- + MerklePrefix is merkle path prefixed to the key. + The constructed key from the Path and the key will be append(Path.KeyPath, + append(Path.KeyPrefix, key...)) + properties: + key_prefix: + type: string + format: byte + ibc.core.connection.v1.ConnectionEnd: + description: |- + ConnectionEnd defines a stateful object on a chain connected to another + separate one. + NOTE: there must only be 2 defined ConnectionEnds to establish + a connection between two chains. + type: object + properties: + client_id: + description: client associated with this connection. + type: string + counterparty: + description: counterparty chain associated with this connection. + $ref: '#/definitions/ibc.core.connection.v1.Counterparty' + delay_period: + description: |- + delay period that must pass before a consensus state can be used for + packet-verification NOTE: delay period logic is only implemented by some + clients. + type: string + format: uint64 + state: + description: current state of the connection end. + $ref: '#/definitions/ibc.core.connection.v1.State' + versions: + description: |- + IBC version which can be utilised to determine encodings or protocols for + channels or packets utilising this connection. + type: array + items: + type: object + $ref: '#/definitions/ibc.core.connection.v1.Version' + ibc.core.connection.v1.Counterparty: + description: Counterparty defines the counterparty chain associated with a connection end. + type: object + properties: + client_id: + description: |- + identifies the client on the counterparty chain associated with a given + connection. + type: string + connection_id: + description: |- + identifies the connection end on the counterparty chain associated with a + given connection. + type: string + prefix: + description: commitment merkle prefix of the counterparty chain. + $ref: '#/definitions/ibc.core.commitment.v1.MerklePrefix' + ibc.core.connection.v1.IdentifiedConnection: + description: |- + IdentifiedConnection defines a connection with additional connection + identifier field. + type: object + properties: + client_id: + description: client associated with this connection. + type: string + counterparty: + description: counterparty chain associated with this connection. + $ref: '#/definitions/ibc.core.connection.v1.Counterparty' + delay_period: + description: delay period associated with this connection. + type: string + format: uint64 + id: + description: connection identifier. + type: string + state: + description: current state of the connection end. + $ref: '#/definitions/ibc.core.connection.v1.State' + versions: + type: array + title: |- + IBC version which can be utilised to determine encodings or protocols for + channels or packets utilising this connection + items: + type: object + $ref: '#/definitions/ibc.core.connection.v1.Version' + ibc.core.connection.v1.MsgConnectionOpenAck: + description: |- + MsgConnectionOpenAck defines a msg sent by a Relayer to Chain A to + acknowledge the change of connection state to TRYOPEN on Chain B. + type: object + properties: + client_state: + $ref: '#/definitions/google.protobuf.Any' + connection_id: + type: string + consensus_height: + $ref: '#/definitions/ibc.core.client.v1.Height' + counterparty_connection_id: + type: string + host_consensus_state_proof: + type: string + format: byte + title: optional proof data for host state machines that are unable to introspect their own consensus state + proof_client: + type: string + format: byte + title: proof of client state included in message + proof_consensus: + type: string + format: byte + title: proof of client consensus state + proof_height: + $ref: '#/definitions/ibc.core.client.v1.Height' + proof_try: + type: string + format: byte + title: |- + proof of the initialization the connection on Chain B: `UNITIALIZED -> + TRYOPEN` + signer: + type: string + version: + $ref: '#/definitions/ibc.core.connection.v1.Version' + ibc.core.connection.v1.MsgConnectionOpenAckResponse: + description: MsgConnectionOpenAckResponse defines the Msg/ConnectionOpenAck response type. + type: object + ibc.core.connection.v1.MsgConnectionOpenConfirm: + description: |- + MsgConnectionOpenConfirm defines a msg sent by a Relayer to Chain B to + acknowledge the change of connection state to OPEN on Chain A. + type: object + properties: + connection_id: + type: string + proof_ack: + type: string + format: byte + title: 'proof for the change of the connection state on Chain A: `INIT -> OPEN`' + proof_height: + $ref: '#/definitions/ibc.core.client.v1.Height' + signer: + type: string + ibc.core.connection.v1.MsgConnectionOpenConfirmResponse: + description: |- + MsgConnectionOpenConfirmResponse defines the Msg/ConnectionOpenConfirm + response type. + type: object + ibc.core.connection.v1.MsgConnectionOpenInit: + description: |- + MsgConnectionOpenInit defines the msg sent by an account on Chain A to + initialize a connection with Chain B. + type: object + properties: + client_id: + type: string + counterparty: + $ref: '#/definitions/ibc.core.connection.v1.Counterparty' + delay_period: + type: string + format: uint64 + signer: + type: string + version: + $ref: '#/definitions/ibc.core.connection.v1.Version' + ibc.core.connection.v1.MsgConnectionOpenInitResponse: + description: |- + MsgConnectionOpenInitResponse defines the Msg/ConnectionOpenInit response + type. + type: object + ibc.core.connection.v1.MsgConnectionOpenTry: + description: |- + MsgConnectionOpenTry defines a msg sent by a Relayer to try to open a + connection on Chain B. + type: object + properties: + client_id: + type: string + client_state: + $ref: '#/definitions/google.protobuf.Any' + consensus_height: + $ref: '#/definitions/ibc.core.client.v1.Height' + counterparty: + $ref: '#/definitions/ibc.core.connection.v1.Counterparty' + counterparty_versions: + type: array + items: + type: object + $ref: '#/definitions/ibc.core.connection.v1.Version' + delay_period: + type: string + format: uint64 + host_consensus_state_proof: + type: string + format: byte + title: optional proof data for host state machines that are unable to introspect their own consensus state + previous_connection_id: + description: 'Deprecated: this field is unused. Crossing hellos are no longer supported in core IBC.' + type: string + proof_client: + type: string + format: byte + title: proof of client state included in message + proof_consensus: + type: string + format: byte + title: proof of client consensus state + proof_height: + $ref: '#/definitions/ibc.core.client.v1.Height' + proof_init: + type: string + format: byte + title: |- + proof of the initialization the connection on Chain A: `UNITIALIZED -> + INIT` + signer: + type: string + ibc.core.connection.v1.MsgConnectionOpenTryResponse: + description: MsgConnectionOpenTryResponse defines the Msg/ConnectionOpenTry response type. + type: object + ibc.core.connection.v1.MsgUpdateParams: + description: MsgUpdateParams defines the sdk.Msg type to update the connection parameters. + type: object + properties: + params: + description: |- + params defines the connection parameters to update. + + NOTE: All parameters must be supplied. + $ref: '#/definitions/ibc.core.connection.v1.Params' + signer: + type: string + title: signer address + ibc.core.connection.v1.MsgUpdateParamsResponse: + description: MsgUpdateParamsResponse defines the MsgUpdateParams response type. + type: object + ibc.core.connection.v1.Params: + description: Params defines the set of Connection parameters. + type: object + properties: + max_expected_time_per_block: + description: |- + maximum expected time per block (in nanoseconds), used to enforce block delay. This parameter should reflect the + largest amount of time that the chain might reasonably take to produce the next block under normal operating + conditions. A safe choice is 3-5x the expected time per block. + type: string + format: uint64 + ibc.core.connection.v1.QueryClientConnectionsResponse: + type: object + title: |- + QueryClientConnectionsResponse is the response type for the + Query/ClientConnections RPC method + properties: + connection_paths: + description: slice of all the connection paths associated with a client. + type: array + items: + type: string + proof: + type: string + format: byte + title: merkle proof of existence + proof_height: + title: height at which the proof was generated + $ref: '#/definitions/ibc.core.client.v1.Height' + ibc.core.connection.v1.QueryConnectionClientStateResponse: + type: object + title: |- + QueryConnectionClientStateResponse is the response type for the + Query/ConnectionClientState RPC method + properties: + identified_client_state: + title: client state associated with the channel + $ref: '#/definitions/ibc.core.client.v1.IdentifiedClientState' + proof: + type: string + format: byte + title: merkle proof of existence + proof_height: + title: height at which the proof was retrieved + $ref: '#/definitions/ibc.core.client.v1.Height' + ibc.core.connection.v1.QueryConnectionConsensusStateResponse: + type: object + title: |- + QueryConnectionConsensusStateResponse is the response type for the + Query/ConnectionConsensusState RPC method + properties: + client_id: + type: string + title: client ID associated with the consensus state + consensus_state: + title: consensus state associated with the channel + $ref: '#/definitions/google.protobuf.Any' + proof: + type: string + format: byte + title: merkle proof of existence + proof_height: + title: height at which the proof was retrieved + $ref: '#/definitions/ibc.core.client.v1.Height' + ibc.core.connection.v1.QueryConnectionParamsResponse: + description: QueryConnectionParamsResponse is the response type for the Query/ConnectionParams RPC method. + type: object + properties: + params: + description: params defines the parameters of the module. + $ref: '#/definitions/ibc.core.connection.v1.Params' + ibc.core.connection.v1.QueryConnectionResponse: + description: |- + QueryConnectionResponse is the response type for the Query/Connection RPC + method. Besides the connection end, it includes a proof and the height from + which the proof was retrieved. + type: object + properties: + connection: + title: connection associated with the request identifier + $ref: '#/definitions/ibc.core.connection.v1.ConnectionEnd' + proof: + type: string + format: byte + title: merkle proof of existence + proof_height: + title: height at which the proof was retrieved + $ref: '#/definitions/ibc.core.client.v1.Height' + ibc.core.connection.v1.QueryConnectionsResponse: + description: |- + QueryConnectionsResponse is the response type for the Query/Connections RPC + method. + type: object + properties: + connections: + description: list of stored connections of the chain. + type: array + items: + type: object + $ref: '#/definitions/ibc.core.connection.v1.IdentifiedConnection' + height: + title: query block height + $ref: '#/definitions/ibc.core.client.v1.Height' + pagination: + title: pagination response + $ref: '#/definitions/cosmos.base.query.v1beta1.PageResponse' + ibc.core.connection.v1.State: + description: |- + State defines if a connection is in one of the following states: + INIT, TRYOPEN, OPEN or UNINITIALIZED. + + - STATE_UNINITIALIZED_UNSPECIFIED: Default State + - STATE_INIT: A connection end has just started the opening handshake. + - STATE_TRYOPEN: A connection end has acknowledged the handshake step on the counterparty + chain. + - STATE_OPEN: A connection end has completed the handshake. + type: string + default: STATE_UNINITIALIZED_UNSPECIFIED + enum: + - STATE_UNINITIALIZED_UNSPECIFIED + - STATE_INIT + - STATE_TRYOPEN + - STATE_OPEN + ibc.core.connection.v1.Version: + description: |- + Version defines the versioning scheme used to negotiate the IBC verison in + the connection handshake. + type: object + properties: + features: + type: array + title: list of features compatible with the specified identifier + items: + type: string + identifier: + type: string + title: unique version identifier + ibc.lightclients.wasm.v1.MsgMigrateContract: + description: MsgMigrateContract defines the request type for the MigrateContract rpc. + type: object + properties: + checksum: + type: string + format: byte + title: checksum is the sha256 hash of the new wasm byte code for the contract + client_id: + type: string + title: the client id of the contract + msg: + type: string + format: byte + title: the json encoded message to be passed to the contract on migration + signer: + type: string + title: signer address + ibc.lightclients.wasm.v1.MsgMigrateContractResponse: + type: object + title: MsgMigrateContractResponse defines the response type for the MigrateContract rpc + ibc.lightclients.wasm.v1.MsgRemoveChecksum: + description: MsgRemoveChecksum defines the request type for the MsgRemoveChecksum rpc. + type: object + properties: + checksum: + type: string + format: byte + title: checksum is the sha256 hash to be removed from the store + signer: + type: string + title: signer address + ibc.lightclients.wasm.v1.MsgRemoveChecksumResponse: + type: object + title: MsgStoreChecksumResponse defines the response type for the StoreCode rpc + ibc.lightclients.wasm.v1.MsgStoreCode: + description: MsgStoreCode defines the request type for the StoreCode rpc. + type: object + properties: + signer: + type: string + title: signer address + wasm_byte_code: + type: string + format: byte + title: wasm byte code of light client contract. It can be raw or gzip compressed + ibc.lightclients.wasm.v1.MsgStoreCodeResponse: + type: object + title: MsgStoreCodeResponse defines the response type for the StoreCode rpc + properties: + checksum: + type: string + format: byte + title: checksum is the sha256 hash of the stored code + ibc.lightclients.wasm.v1.QueryChecksumsResponse: + description: QueryChecksumsResponse is the response type for the Query/Checksums RPC method. + type: object + properties: + checksums: + description: checksums is a list of the hex encoded checksums of all wasm codes stored. + type: array + items: + type: string + pagination: + description: pagination defines the pagination in the response. + $ref: '#/definitions/cosmos.base.query.v1beta1.PageResponse' + ibc.lightclients.wasm.v1.QueryCodeResponse: + description: QueryCodeResponse is the response type for the Query/Code RPC method. + type: object + properties: + data: + type: string + format: byte + poktroll.application.Application: + type: object + title: Application represents the on-chain definition and state of an application + properties: + address: + type: string + title: Bech32 address of the application + delegatee_gateway_addresses: + type: array + title: |- + TODO_BETA(@bryanchriswhite): Rename `delegatee_gateway_addresses` to `gateway_addresses_delegated_to`. + Ensure to rename all relevant configs, comments, variables, function names, etc as well. + Non-nullable list of Bech32 encoded delegatee Gateway addresses + items: + type: string + pending_transfer: + title: Information about pending application transfers + $ref: '#/definitions/poktroll.application.PendingApplicationTransfer' + pending_undelegations: + description: |- + Mapping of session end heights to gateways being undelegated from + - Key: Height of the last block of the session when undelegation tx was committed + - Value: List of gateways being undelegated from + TODO_DOCUMENT(@red-0ne): Need to document the flow from this comment + so its clear to everyone why this is necessary; https://github.com/pokt-network/poktroll/issues/476#issuecomment-2052639906. + type: object + additionalProperties: + $ref: '#/definitions/poktroll.application.UndelegatingGatewayList' + service_configs: + type: array + title: |- + CRITICAL: Must contain EXACTLY ONE service config + This prevents applications from over-servicing. + Kept as repeated field for legacy and future compatibility + Refs: + - https://github.com/pokt-network/poktroll/pull/750#discussion_r1735025033 + - https://www.notion.so/buildwithgrove/Off-chain-Application-Stake-Tracking-6a8bebb107db4f7f9dc62cbe7ba555f7 + items: + type: object + $ref: '#/definitions/poktroll.shared.ApplicationServiceConfig' + stake: + title: Total amount of staked uPOKT + $ref: '#/definitions/cosmos.base.v1beta1.Coin' + unstake_session_end_height: + type: string + format: uint64 + title: Session end height when application initiated unstaking (0 if not unstaking) + poktroll.application.MsgDelegateToGateway: + type: object + properties: + app_address: + description: The Bech32 address of the application. + type: string + gateway_address: + description: The Bech32 address of the gateway the application wants to delegate to. + type: string + poktroll.application.MsgDelegateToGatewayResponse: + type: object + properties: + application: + $ref: '#/definitions/poktroll.application.Application' + poktroll.application.MsgStakeApplication: + type: object + properties: + address: + description: The Bech32 address of the application. + type: string + services: + type: array + title: The list of services this application is staked to request service for + items: + type: object + $ref: '#/definitions/poktroll.shared.ApplicationServiceConfig' + stake: + title: The total amount of uPOKT the application has staked. Must be ≥ to the current amount that the application has staked (if any) + $ref: '#/definitions/cosmos.base.v1beta1.Coin' + poktroll.application.MsgStakeApplicationResponse: + type: object + properties: + application: + $ref: '#/definitions/poktroll.application.Application' + poktroll.application.MsgTransferApplication: + type: object + properties: + destination_address: + type: string + source_address: + type: string + poktroll.application.MsgTransferApplicationResponse: + type: object + properties: + application: + $ref: '#/definitions/poktroll.application.Application' + poktroll.application.MsgUndelegateFromGateway: + type: object + properties: + app_address: + description: The Bech32 address of the application. + type: string + gateway_address: + description: The Bech32 address of the gateway the application wants to undelegate from. + type: string + poktroll.application.MsgUndelegateFromGatewayResponse: + type: object + properties: + application: + $ref: '#/definitions/poktroll.application.Application' + poktroll.application.MsgUnstakeApplication: + type: object + properties: + address: + type: string + poktroll.application.MsgUnstakeApplicationResponse: + type: object + properties: + application: + $ref: '#/definitions/poktroll.application.Application' + poktroll.application.MsgUpdateParam: + type: object + properties: + as_coin: + $ref: '#/definitions/cosmos.base.v1beta1.Coin' + as_uint64: + type: string + format: uint64 + authority: + description: authority is the address that controls the module (defaults to x/gov unless overwritten). + type: string + name: + type: string + poktroll.application.MsgUpdateParamResponse: + type: object + properties: + params: + $ref: '#/definitions/poktroll.application.Params' + poktroll.application.MsgUpdateParams: + description: MsgUpdateParams is the Msg/UpdateParams request type. + type: object + properties: + authority: + description: authority is the address that controls the module (defaults to x/gov unless overwritten). + type: string + params: + description: |- + params defines the x/application parameters to update. + NOTE: All parameters must be supplied. + $ref: '#/definitions/poktroll.application.Params' + poktroll.application.MsgUpdateParamsResponse: + description: |- + MsgUpdateParamsResponse defines the response structure for executing a + MsgUpdateParams message. + type: object + poktroll.application.Params: + description: Params defines the parameters for the module. + type: object + properties: + max_delegated_gateways: + description: |- + max_delegated_gateways defines the maximum number of gateways that a single + application can delegate to. This is used to prevent performance issues + in case the relay ring signature becomes too large. + type: string + format: uint64 + min_stake: + description: min_stake is the minimum stake in upokt that an application must have to remain staked. + $ref: '#/definitions/cosmos.base.v1beta1.Coin' + poktroll.application.PendingApplicationTransfer: + description: |- + PendingTransfer is used to store the details of a pending transfer. + It is only intended to be used inside of an Application object. + type: object + properties: + destination_address: + type: string + session_end_height: + type: string + format: uint64 + poktroll.application.QueryAllApplicationsResponse: + type: object + properties: + applications: + type: array + items: + type: object + $ref: '#/definitions/poktroll.application.Application' + pagination: + $ref: '#/definitions/cosmos.base.query.v1beta1.PageResponse' + poktroll.application.QueryGetApplicationResponse: + type: object + properties: + application: + $ref: '#/definitions/poktroll.application.Application' + poktroll.application.QueryParamsResponse: + description: QueryParamsResponse is response type for the Query/Params RPC method. + type: object + properties: + params: + description: params holds all the parameters of this module. + $ref: '#/definitions/poktroll.application.Params' + poktroll.application.UndelegatingGatewayList: + description: |- + UndelegatingGatewayList is used as the Value of `pending_undelegations`. + It is required to store a repeated list of strings as a map value. + type: object + properties: + gateway_addresses: + type: array + items: + type: string + poktroll.gateway.Gateway: + type: object + properties: + address: + type: string + title: The Bech32 address of the gateway + stake: + title: The total amount of uPOKT the gateway has staked + $ref: '#/definitions/cosmos.base.v1beta1.Coin' + poktroll.gateway.MsgStakeGateway: + type: object + properties: + address: + type: string + title: The Bech32 address of the gateway + stake: + title: The total amount of uPOKT the gateway is staking. Must be ≥ to the current amount that the gateway has staked (if any) + $ref: '#/definitions/cosmos.base.v1beta1.Coin' + poktroll.gateway.MsgStakeGatewayResponse: + type: object + properties: + gateway: + $ref: '#/definitions/poktroll.gateway.Gateway' + poktroll.gateway.MsgUnstakeGateway: + type: object + properties: + address: + type: string + title: The Bech32 address of the gateway + poktroll.gateway.MsgUnstakeGatewayResponse: + type: object + properties: + gateway: + $ref: '#/definitions/poktroll.gateway.Gateway' + poktroll.gateway.MsgUpdateParam: + description: MsgUpdateParam is the Msg/UpdateParam request type to update a single param. + type: object + properties: + as_coin: + $ref: '#/definitions/cosmos.base.v1beta1.Coin' + authority: + description: authority is the address that controls the module (defaults to x/gov unless overwritten). + type: string + name: + type: string + poktroll.gateway.MsgUpdateParamResponse: + type: object + properties: + params: + $ref: '#/definitions/poktroll.gateway.Params' + poktroll.gateway.MsgUpdateParams: + description: MsgUpdateParams is the Msg/UpdateParams request type. + type: object + properties: + authority: + description: authority is the address that controls the module (defaults to x/gov unless overwritten). + type: string + params: + description: |- + params defines the x/gateway parameters to update. + NOTE: All parameters must be supplied. + $ref: '#/definitions/poktroll.gateway.Params' + poktroll.gateway.MsgUpdateParamsResponse: + description: |- + MsgUpdateParamsResponse defines the response structure for executing a + MsgUpdateParams message. + type: object + poktroll.gateway.Params: + description: Params defines the parameters for the module. + type: object + properties: + min_stake: + description: min_stake is the minimum amount of uPOKT that a gateway must stake. + $ref: '#/definitions/cosmos.base.v1beta1.Coin' + poktroll.gateway.QueryAllGatewaysResponse: + type: object + properties: + gateways: + type: array + items: + type: object + $ref: '#/definitions/poktroll.gateway.Gateway' + pagination: + $ref: '#/definitions/cosmos.base.query.v1beta1.PageResponse' + poktroll.gateway.QueryGetGatewayResponse: + type: object + properties: + gateway: + $ref: '#/definitions/poktroll.gateway.Gateway' + poktroll.gateway.QueryParamsResponse: + description: QueryParamsResponse is response type for the Query/Params RPC method. + type: object + properties: + params: + description: params holds all the parameters of this module. + $ref: '#/definitions/poktroll.gateway.Params' + poktroll.proof.Claim: + type: object + title: Claim is the serialized object stored onchain for claims pending to be proven + properties: + proof_validation_status: + title: 'Important: This field MUST only be set by proofKeeper#EnsureValidProofSignaturesAndClosestPath' + $ref: '#/definitions/poktroll.proof.ClaimProofStatus' + root_hash: + description: Root hash from smt.SMST#Root(). + type: string + format: byte + session_header: + description: Session header this claim is for. + $ref: '#/definitions/poktroll.session.SessionHeader' + supplier_operator_address: + description: |- + Address of the supplier's operator that submitted this claim. + + the address of the supplier's operator that submitted this claim + type: string + poktroll.proof.ClaimProofStatus: + type: string + title: |- + Status of proof validation for a claim + Default is PENDING_VALIDATION regardless of proof requirement + default: PENDING_VALIDATION + enum: + - PENDING_VALIDATION + - VALIDATED + - INVALID + poktroll.proof.MsgCreateClaim: + type: object + properties: + root_hash: + type: string + format: byte + title: root returned from smt.SMST#Root() + session_header: + $ref: '#/definitions/poktroll.session.SessionHeader' + supplier_operator_address: + type: string + poktroll.proof.MsgCreateClaimResponse: + type: object + properties: + claim: + $ref: '#/definitions/poktroll.proof.Claim' + poktroll.proof.MsgSubmitProof: + type: object + properties: + proof: + type: string + format: byte + title: serialized version of *smt.SparseCompactMerkleClosestProof + session_header: + $ref: '#/definitions/poktroll.session.SessionHeader' + supplier_operator_address: + type: string + poktroll.proof.MsgSubmitProofResponse: + type: object + properties: + proof: + $ref: '#/definitions/poktroll.proof.Proof' + poktroll.proof.MsgUpdateParam: + description: MsgUpdateParam is the Msg/UpdateParam request type to update a single param. + type: object + properties: + as_bytes: + type: string + format: byte + as_coin: + $ref: '#/definitions/cosmos.base.v1beta1.Coin' + as_float: + type: number + format: double + authority: + description: authority is the address that controls the module (defaults to x/gov unless overwritten). + type: string + name: + type: string + title: |- + The (name, as_type) tuple must match the corresponding name and type as + specified in the `Params`` message in `proof/params.proto.` + poktroll.proof.MsgUpdateParamResponse: + description: |- + MsgUpdateParamResponse defines the response structure for executing a + MsgUpdateParam message after a single param update. + type: object + properties: + params: + $ref: '#/definitions/poktroll.proof.Params' + poktroll.proof.MsgUpdateParams: + description: MsgUpdateParams is the Msg/UpdateParams request type to update all params at once. + type: object + properties: + authority: + description: authority is the address that controls the module (defaults to x/gov unless overwritten). + type: string + params: + description: |- + params defines the x/proof parameters to update. + NOTE: All parameters must be supplied. + $ref: '#/definitions/poktroll.proof.Params' + poktroll.proof.MsgUpdateParamsResponse: + description: |- + MsgUpdateParamsResponse defines the response structure for executing a + MsgUpdateParams message. + type: object + poktroll.proof.Params: + description: Params defines the parameters for the module. + type: object + properties: + proof_missing_penalty: + description: |- + proof_missing_penalty is the number of tokens (uPOKT) which should be slashed from a supplier + when a proof is required (either via proof_requirement_threshold or proof_missing_penalty) + but is not provided. + TODO_MAINNET: Consider renaming this to `proof_missing_penalty_upokt`. + $ref: '#/definitions/cosmos.base.v1beta1.Coin' + proof_request_probability: + description: |- + proof_request_probability is the probability of a session requiring a proof + if it's cost (i.e. compute unit consumption) is below the ProofRequirementThreshold. + type: number + format: double + proof_requirement_threshold: + description: |- + proof_requirement_threshold is the session cost (i.e. compute unit consumption) + threshold which asserts that a session MUST have a corresponding proof when its cost + is equal to or above the threshold. This is in contrast to the this requirement + being determined probabilistically via ProofRequestProbability. + + TODO_MAINNET: Consider renaming this to `proof_requirement_threshold_upokt`. + $ref: '#/definitions/cosmos.base.v1beta1.Coin' + proof_submission_fee: + description: |- + proof_submission_fee is the number of tokens (uPOKT) which should be paid by + the supplier operator when submitting a proof. + This is needed to account for the cost of storing proofs onchain and prevent + spamming (i.e. sybil bloat attacks) the network with non-required proofs. + TODO_MAINNET: Consider renaming this to `proof_submission_fee_upokt`. + $ref: '#/definitions/cosmos.base.v1beta1.Coin' + poktroll.proof.Proof: + type: object + properties: + closest_merkle_proof: + description: The serialized SMST compacted proof from the `#ClosestProof()` method. + type: string + format: byte + session_header: + description: The session header of the session that this claim is for. + $ref: '#/definitions/poktroll.session.SessionHeader' + supplier_operator_address: + description: Address of the supplier's operator that submitted this proof. + type: string + poktroll.proof.QueryAllClaimsResponse: + type: object + properties: + claims: + type: array + items: + type: object + $ref: '#/definitions/poktroll.proof.Claim' + pagination: + $ref: '#/definitions/cosmos.base.query.v1beta1.PageResponse' + poktroll.proof.QueryAllProofsResponse: + type: object + properties: + pagination: + $ref: '#/definitions/cosmos.base.query.v1beta1.PageResponse' + proofs: + type: array + items: + type: object + $ref: '#/definitions/poktroll.proof.Proof' + poktroll.proof.QueryGetClaimResponse: + type: object + properties: + claim: + $ref: '#/definitions/poktroll.proof.Claim' + poktroll.proof.QueryGetProofResponse: + type: object + properties: + proof: + $ref: '#/definitions/poktroll.proof.Proof' + poktroll.proof.QueryParamsResponse: + description: QueryParamsResponse is response type for the Query/Params RPC method. + type: object + properties: + params: + description: params holds all the parameters of this module. + $ref: '#/definitions/poktroll.proof.Params' + poktroll.service.MsgAddService: + description: |- + MsgAddService defines a message for adding a new message to the network. + Services can be added by any actor in the network making them truly + permissionless. + type: object + properties: + owner_address: + description: The Bech32 address of the service owner. + type: string + service: + title: The Service being added to the network + $ref: '#/definitions/poktroll.shared.Service' + poktroll.service.MsgAddServiceResponse: + type: object + properties: + service: + $ref: '#/definitions/poktroll.shared.Service' + poktroll.service.MsgUpdateParam: + description: MsgUpdateParam is the Msg/UpdateParam request type to update a single param. + type: object + properties: + as_coin: + $ref: '#/definitions/cosmos.base.v1beta1.Coin' + as_uint64: + type: string + format: uint64 + authority: + description: authority is the address that controls the module (defaults to x/gov unless overwritten). + type: string + name: + type: string + title: |- + The (name, as_type) tuple must match the corresponding name and type as + specified in the `Params` message in `proof/params.proto.` + poktroll.service.MsgUpdateParamResponse: + description: |- + MsgUpdateParamResponse defines the response structure for executing a + MsgUpdateParam message after a single param update. + type: object + properties: + params: + $ref: '#/definitions/poktroll.service.Params' + poktroll.service.MsgUpdateParams: + description: MsgUpdateParams is the Msg/UpdateParams request type. + type: object + properties: + authority: + description: authority is the address that controls the module (defaults to x/gov unless overwritten). + type: string + params: + description: |- + params defines the x/service parameters to update. + NOTE: All parameters must be supplied. + $ref: '#/definitions/poktroll.service.Params' + poktroll.service.MsgUpdateParamsResponse: + description: |- + MsgUpdateParamsResponse defines the response structure for executing a + MsgUpdateParams message. + type: object + poktroll.service.Params: + description: Params defines the parameters for the module. + type: object + properties: + add_service_fee: + description: |- + The amount of uPOKT required to add a new service. + This will be deducted from the signer's account balance, + and transferred to the pocket network foundation. + $ref: '#/definitions/cosmos.base.v1beta1.Coin' + target_num_relays: + description: |- + target_num_relays is the target for the EMA of the number of relays per session. + Per service, onchain relay mining difficulty will be adjusted to maintain this target. + type: string + format: uint64 + poktroll.service.QueryAllRelayMiningDifficultyResponse: + type: object + properties: + pagination: + $ref: '#/definitions/cosmos.base.query.v1beta1.PageResponse' + relayMiningDifficulty: + type: array + items: + type: object + $ref: '#/definitions/poktroll.service.RelayMiningDifficulty' + poktroll.service.QueryAllServicesResponse: + type: object + properties: + pagination: + $ref: '#/definitions/cosmos.base.query.v1beta1.PageResponse' + service: + type: array + items: + type: object + $ref: '#/definitions/poktroll.shared.Service' + poktroll.service.QueryGetRelayMiningDifficultyResponse: + type: object + properties: + relayMiningDifficulty: + $ref: '#/definitions/poktroll.service.RelayMiningDifficulty' + poktroll.service.QueryGetServiceResponse: + type: object + properties: + service: + $ref: '#/definitions/poktroll.shared.Service' + poktroll.service.QueryParamsResponse: + description: QueryParamsResponse is response type for the Query/Params RPC method. + type: object + properties: + params: + description: params holds all the parameters of this module. + $ref: '#/definitions/poktroll.service.Params' + poktroll.service.RelayMiningDifficulty: + description: |- + RelayMiningDifficulty is a message used to store the onchain Relay Mining + difficulty associated with a specific service ID. + TODO_TECHDEBT: Embed this message in the Service message. + type: object + properties: + block_height: + description: |- + The block height at which this relay mining difficulty was computed. + This is needed to determine how much time has passed since the last time + the exponential moving average was computed. + type: string + format: int64 + num_relays_ema: + description: The exponential moving average of the number of relays for this service. + type: string + format: uint64 + service_id: + description: The service ID the relay mining difficulty is associated with. + type: string + target_hash: + description: |- + The target hash determining the difficulty to mine relays for this service. + For example, if we use sha256 to hash the (RelayRequest,ReqlayResponse) tuple, + and the difficulty has 4 leading zero bits, then the target hash would be: + 0b0000111... (until 32 bytes are filled up). + type: string + format: byte + poktroll.session.MsgUpdateParam: + type: object + properties: + as_uint64: + type: string + format: uint64 + authority: + description: authority is the address that controls the module (defaults to x/gov unless overwritten). + type: string + name: + type: string + poktroll.session.MsgUpdateParamResponse: + type: object + properties: + params: + $ref: '#/definitions/poktroll.session.Params' + poktroll.session.MsgUpdateParams: + description: MsgUpdateParams is the Msg/UpdateParams request type. + type: object + properties: + authority: + description: authority is the address that controls the module (defaults to x/gov unless overwritten). + type: string + params: + description: |- + params defines the x/session parameters to update. + NOTE: All parameters must be supplied. + $ref: '#/definitions/poktroll.session.Params' + poktroll.session.MsgUpdateParamsResponse: + description: |- + MsgUpdateParamsResponse defines the response structure for executing a + MsgUpdateParams message. + type: object + poktroll.session.Params: + description: Params defines the parameters for the module. + type: object + properties: + num_suppliers_per_session: + description: |- + num_suppliers_per_session is the maximun number of suppliers per session + (applicaiton:supplier pair for a given session number). + type: string + format: uint64 + poktroll.session.QueryGetSessionResponse: + type: object + properties: + session: + $ref: '#/definitions/poktroll.session.Session' + poktroll.session.QueryParamsResponse: + description: QueryParamsResponse is response type for the Query/Params RPC method. + type: object + properties: + params: + description: params holds all the parameters of this module. + $ref: '#/definitions/poktroll.session.Params' + poktroll.session.Session: + description: |- + Session is a fully hydrated session object that contains all the information for the Session + and its parcipants. + type: object + properties: + application: + title: A fully hydrated application object this session is for + $ref: '#/definitions/poktroll.application.Application' + header: + title: The header of the session containing lightweight data + $ref: '#/definitions/poktroll.session.SessionHeader' + num_blocks_per_session: + type: string + format: int64 + title: The number of blocks per session when this session started + session_id: + type: string + title: A unique pseudoranom ID for this session + session_number: + type: string + format: int64 + title: The session number since genesis + suppliers: + type: array + title: A fully hydrated set of servicers that are serving the application + items: + type: object + $ref: '#/definitions/poktroll.shared.Supplier' + poktroll.session.SessionHeader: + description: |- + SessionHeader is a lightweight header for a session that can be passed around. + It is the minimal amount of data required to hydrate & retrieve all data relevant to the session. + type: object + properties: + application_address: + description: The Bech32 address of the application. + type: string + service_id: + type: string + title: The service id this session is for + session_end_block_height: + description: |- + Note that`session_end_block_height` is a derivative of (`start` + `num_blocks_per_session`) + as goverened by onchain params at the time of the session start. + It is stored as an additional field to simplofy business logic in case + the number of blocks_per_session changes during the session. + + The height at which this session ended, this is the last block of the session + type: string + format: int64 + session_id: + description: A unique pseudoranom ID for this session + type: string + title: 'NOTE: session_id can be derived from the above values using onchain but is included in the header for convenience' + session_start_block_height: + type: string + format: int64 + title: The height at which this session started + poktroll.shared.ApplicationServiceConfig: + type: object + title: ApplicationServiceConfig holds the service configuration the application stakes for + properties: + service_id: + type: string + title: The Service ID for which the application is configured + poktroll.shared.ConfigOption: + type: object + title: Key-value wrapper for config options, as proto maps can't be keyed by enums + properties: + key: + title: Config option key + $ref: '#/definitions/poktroll.shared.ConfigOptions' + value: + type: string + title: Config option value + poktroll.shared.ConfigOptions: + description: |- + Enum to define configuration options + TODO_RESEARCH: Should these be configs, SLAs or something else? There will be more discussion once we get closer to implementing onchain QoS. + + - UNKNOWN_CONFIG: Undefined config option + - TIMEOUT: Timeout setting + type: string + default: UNKNOWN_CONFIG + enum: + - UNKNOWN_CONFIG + - TIMEOUT + poktroll.shared.MsgUpdateParam: + description: MsgUpdateParam is the Msg/UpdateParam request type to update a single param. + type: object + properties: + as_bytes: + type: string + format: byte + as_string: + type: string + as_uint64: + type: string + format: uint64 + authority: + description: authority is the address that controls the module (defaults to x/gov unless overwritten). + type: string + name: + type: string + poktroll.shared.MsgUpdateParamResponse: + description: |- + MsgUpdateParamResponse defines the response structure for executing a + MsgUpdateParam message after a single param update. + type: object + properties: + params: + $ref: '#/definitions/poktroll.shared.Params' + poktroll.shared.MsgUpdateParams: + description: MsgUpdateParams is the Msg/UpdateParams request type. + type: object + properties: + authority: + description: authority is the address that controls the module (defaults to x/gov unless overwritten). + type: string + params: + description: 'NOTE: All parameters must be supplied.' + $ref: '#/definitions/poktroll.shared.Params' + poktroll.shared.MsgUpdateParamsResponse: + description: |- + MsgUpdateParamsResponse defines the response structure for executing a + MsgUpdateParams message. + type: object + poktroll.shared.Params: + description: Params defines the parameters for the module. + type: object + properties: + application_unbonding_period_sessions: + description: |- + application_unbonding_period_sessions is the number of sessions that an application must wait after + unstaking before their staked assets are moved to their account balance. + Onchain business logic requires, and ensures, that the corresponding block count of the + application unbonding period will exceed the end of its corresponding proof window close height. + type: string + format: uint64 + claim_window_close_offset_blocks: + description: |- + claim_window_close_offset_blocks is the number of blocks after the claim window + open height, at which the claim window closes. + type: string + format: uint64 + claim_window_open_offset_blocks: + description: |- + claim_window_open_offset_blocks is the number of blocks after the session grace + period height, at which the claim window opens. + type: string + format: uint64 + compute_units_to_tokens_multiplier: + description: |- + The amount of upokt that a compute unit should translate to when settling a session. + DEV_NOTE: This used to be under x/tokenomics but has been moved here to avoid cyclic dependencies. + type: string + format: uint64 + grace_period_end_offset_blocks: + description: |- + grace_period_end_offset_blocks is the number of blocks, after the session end height, + during which the supplier can still service payable relays. + Suppliers will need to recreate a claim for the previous session (if already created) to + get paid for the additional relays. + type: string + format: uint64 + num_blocks_per_session: + description: num_blocks_per_session is the number of blocks between the session start & end heights. + type: string + format: uint64 + proof_window_close_offset_blocks: + description: |- + proof_window_close_offset_blocks is the number of blocks after the proof window + open height, at which the proof window closes. + type: string + format: uint64 + proof_window_open_offset_blocks: + description: |- + proof_window_open_offset_blocks is the number of blocks after the claim window + close height, at which the proof window opens. + type: string + format: uint64 + supplier_unbonding_period_sessions: + description: |- + supplier_unbonding_period_sessions is the number of sessions that a supplier must wait after + unstaking before their staked assets are moved to their account balance. + Onchain business logic requires, and ensures, that the corresponding block count of the unbonding + period will exceed the end of any active claim & proof lifecycles. + type: string + format: uint64 + poktroll.shared.QueryParamsResponse: + description: QueryParamsResponse is response type for the Query/Params RPC method. + type: object + properties: + params: + description: params holds all the parameters of this module. + $ref: '#/definitions/poktroll.shared.Params' + poktroll.shared.RPCType: + description: |- + - UNKNOWN_RPC: Undefined RPC type + - GRPC: gRPC + - WEBSOCKET: WebSocket + - JSON_RPC: JSON-RPC + - REST: REST + type: string + title: Enum to define RPC types + default: UNKNOWN_RPC + enum: + - UNKNOWN_RPC + - GRPC + - WEBSOCKET + - JSON_RPC + - REST + poktroll.shared.Service: + type: object + title: Service message to encapsulate unique and semantic identifiers for a service on the network + properties: + compute_units_per_relay: + description: Compute units required per relay for this service + type: string + format: uint64 + title: |- + The cost of a single relay for this service in terms of compute units. + Must be used alongside the global 'compute_units_to_tokens_multipler' to calculate the cost of a relay for this service. + cost_per_relay_for_specific_service = compute_units_per_relay_for_specific_service * compute_units_to_tokens_multipler_global_value + id: + description: Unique identifier for the service + type: string + title: For example, what if we want to request a session for a certain service but with some additional configs that identify it? + name: + description: |- + TODO_BETA(@bryanchriswhite): Either remove this or rename it to alias. + + (Optional) Semantic human readable name for the service + type: string + owner_address: + description: |- + The owner address that created the service. + It is the address that receives rewards based on the Service's onchain usage + It is the only address that can update the service configuration (e.g. compute_units_per_relay), + or make other updates to it. + + The Bech32 address of the service owner / creator + type: string + poktroll.shared.ServiceRevenueShare: + type: object + title: ServiceRevenueShare message to hold revenue share configuration details + properties: + address: + type: string + title: The Bech32 address of the revenue share recipient + rev_share_percentage: + type: string + format: uint64 + title: The percentage of revenue share the recipient will receive + poktroll.shared.Supplier: + type: object + title: Supplier represents an actor in Pocket Network that provides RPC services + properties: + operator_address: + description: |- + Operator address managing the offchain server + Immutable for supplier's lifespan - requires unstake/re-stake to change. + Can update supplier configs except for owner address. + type: string + owner_address: + type: string + title: |- + Owner address that controls the staked funds and receives rewards by default + Cannot be updated by the operator + services: + type: array + title: List of service configurations supported by this supplier + items: + type: object + $ref: '#/definitions/poktroll.shared.SupplierServiceConfig' + services_activation_heights_map: + description: |- + Mapping of serviceIds to their activation heights + - Key: serviceId + - Value: Session start height when supplier becomes active for the service + TODO_MAINNET(@olshansk, #1033): Look into moving this to an external repeated protobuf + because maps are no longer supported for serialized types in the CosmoSDK. + type: object + additionalProperties: + type: string + format: uint64 + stake: + title: Total amount of staked uPOKT + $ref: '#/definitions/cosmos.base.v1beta1.Coin' + unstake_session_end_height: + type: string + format: uint64 + title: Session end height when supplier initiated unstaking (0 if not unstaking) + poktroll.shared.SupplierEndpoint: + type: object + title: SupplierEndpoint message to hold service configuration details + properties: + configs: + type: array + title: Additional configuration options for the endpoint + items: + type: object + $ref: '#/definitions/poktroll.shared.ConfigOption' + rpc_type: + title: Type of RPC exposed on the url above + $ref: '#/definitions/poktroll.shared.RPCType' + url: + type: string + title: URL of the endpoint + poktroll.shared.SupplierServiceConfig: + type: object + title: SupplierServiceConfig holds the service configuration the supplier stakes for + properties: + endpoints: + type: array + title: List of endpoints for the service + items: + type: object + $ref: '#/definitions/poktroll.shared.SupplierEndpoint' + rev_share: + type: array + title: List of revenue share configurations for the service + items: + type: object + $ref: '#/definitions/poktroll.shared.ServiceRevenueShare' + service_id: + type: string + title: The Service ID for which the supplier is configured + poktroll.supplier.MsgStakeSupplier: + type: object + properties: + operator_address: + type: string + title: The Bech32 address of the operator (i.e. provider, non-custodial) + owner_address: + type: string + title: The Bech32 address of the owner (i.e. custodial, staker) + services: + type: array + title: The list of services this supplier is staked to provide service for + items: + type: object + $ref: '#/definitions/poktroll.shared.SupplierServiceConfig' + signer: + type: string + title: The Bech32 address of the message signer (i.e. owner or operator) + stake: + title: The total amount of uPOKT the supplier has staked. Must be ≥ to the current amount that the supplier has staked (if any) + $ref: '#/definitions/cosmos.base.v1beta1.Coin' + poktroll.supplier.MsgStakeSupplierResponse: + type: object + properties: + supplier: + $ref: '#/definitions/poktroll.shared.Supplier' + poktroll.supplier.MsgUnstakeSupplier: + type: object + properties: + operator_address: + type: string + title: The Bech32 address of the operator (i.e. provider, non-custodial) + signer: + type: string + title: The Bech32 address of the message signer (i.e. owner or operator) + poktroll.supplier.MsgUnstakeSupplierResponse: + type: object + properties: + supplier: + $ref: '#/definitions/poktroll.shared.Supplier' + poktroll.supplier.MsgUpdateParam: + description: MsgUpdateParam is the Msg/UpdateParam request type to update a single param. + type: object + properties: + as_coin: + $ref: '#/definitions/cosmos.base.v1beta1.Coin' + authority: + description: authority is the address that controls the module (defaults to x/gov unless overwritten). + type: string + name: + type: string + poktroll.supplier.MsgUpdateParamResponse: + type: object + properties: + params: + $ref: '#/definitions/poktroll.supplier.Params' + poktroll.supplier.MsgUpdateParams: + description: MsgUpdateParams is the Msg/UpdateParams request type. + type: object + properties: + authority: + description: authority is the address that controls the module (defaults to x/gov unless overwritten). + type: string + params: + description: |- + params defines the x/supplier parameters to update. + NOTE: All parameters must be supplied. + $ref: '#/definitions/poktroll.supplier.Params' + poktroll.supplier.MsgUpdateParamsResponse: + description: |- + MsgUpdateParamsResponse defines the response structure for executing a + MsgUpdateParams message. + type: object + poktroll.supplier.Params: + description: Params defines the parameters for the module. + type: object + properties: + min_stake: + description: |- + min_stake is the minimum amount of uPOKT that a supplier must stake to be + included in network sessions and remain staked. + $ref: '#/definitions/cosmos.base.v1beta1.Coin' + staking_fee: + description: staking_fee is the fee charged by the protocol for staking a supplier. + $ref: '#/definitions/cosmos.base.v1beta1.Coin' + poktroll.supplier.QueryAllSuppliersResponse: + type: object + properties: + pagination: + $ref: '#/definitions/cosmos.base.query.v1beta1.PageResponse' + supplier: + type: array + items: + type: object + $ref: '#/definitions/poktroll.shared.Supplier' + poktroll.supplier.QueryGetSupplierResponse: + type: object + properties: + supplier: + $ref: '#/definitions/poktroll.shared.Supplier' + poktroll.supplier.QueryParamsResponse: + description: QueryParamsResponse is response type for the Query/Params RPC method. + type: object + properties: + params: + description: params holds all the parameters of this module. + $ref: '#/definitions/poktroll.supplier.Params' + poktroll.tokenomics.MintAllocationPercentages: + description: |- + MintAllocationPercentages represents the distribution of newly minted tokens, + at the end of claim settlement, as a result of the Global Mint TLM. + type: object + properties: + application: + description: |- + allocation_application is the percentage of the minted tokens which are sent + to the application account address during claim settlement. + type: number + format: double + dao: + description: |- + dao is the percentage of the minted tokens which are sent + to the DAO reward address during claim settlement. + type: number + format: double + proposer: + description: |- + proposer is the percentage of the minted tokens which are sent + to the block proposer account address during claim settlement. + type: number + format: double + source_owner: + description: |- + source_owner is the percentage of the minted tokens which are sent + to the service source owner account address during claim settlement. + type: number + format: double + supplier: + description: |- + supplier is the percentage of the minted tokens which are sent + to the block supplier account address during claim settlement. + type: number + format: double + poktroll.tokenomics.MsgUpdateParam: + description: MsgUpdateParam is the Msg/UpdateParam request type to update a single param. + type: object + properties: + as_float: + type: number + format: double + as_mint_allocation_percentages: + $ref: '#/definitions/poktroll.tokenomics.MintAllocationPercentages' + as_string: + type: string + authority: + description: authority is the address that controls the module (defaults to x/gov unless overwritten). + type: string + name: + type: string + title: |- + The (name, as_type) tuple must match the corresponding name and type as + specified in the `Params` message in `proof/params.proto.` + poktroll.tokenomics.MsgUpdateParamResponse: + description: |- + MsgUpdateParamResponse defines the response structure for executing a + MsgUpdateParam message after a single param update. + type: object + properties: + params: + $ref: '#/definitions/poktroll.tokenomics.Params' + poktroll.tokenomics.MsgUpdateParams: + description: MsgUpdateParams is the Msg/UpdateParams request type to update all params at once. + type: object + properties: + authority: + description: authority is the address that controls the module (defaults to x/gov unless overwritten). + type: string + params: + description: |- + params defines the x/tokenomics parameters to update. + NOTE: All parameters must be supplied. + $ref: '#/definitions/poktroll.tokenomics.Params' + poktroll.tokenomics.MsgUpdateParamsResponse: + description: |- + MsgUpdateParamsResponse defines the response structure for executing a + MsgUpdateParams message. + type: object + properties: + params: + $ref: '#/definitions/poktroll.tokenomics.Params' + poktroll.tokenomics.Params: + description: Params defines the parameters for the tokenomics module. + type: object + properties: + dao_reward_address: + description: |- + dao_reward_address is the address to which mint_allocation_dao percentage of the + minted tokens are at the end of claim settlement. + + Bech32 cosmos address + type: string + global_inflation_per_claim: + description: global_inflation_per_claim is the percentage of a claim's claimable uPOKT amount which will be minted on settlement. + type: number + format: double + mint_allocation_percentages: + description: |- + mint_allocation_percentages represents the distribution of newly minted tokens, + at the end of claim settlement, as a result of the Global Mint TLM. + $ref: '#/definitions/poktroll.tokenomics.MintAllocationPercentages' + poktroll.tokenomics.QueryParamsResponse: + description: QueryParamsResponse is response type for the Query/Params RPC method. + type: object + properties: + params: + description: params holds all the parameters of this module. + $ref: '#/definitions/poktroll.tokenomics.Params' + tendermint.abci.CheckTxType: + type: string + default: NEW + enum: + - NEW + - RECHECK + tendermint.abci.CommitInfo: + type: object + properties: + round: + type: integer + format: int32 + votes: + type: array + items: + type: object + $ref: '#/definitions/tendermint.abci.VoteInfo' + tendermint.abci.Event: + description: |- + Event allows application developers to attach additional information to + ResponseFinalizeBlock and ResponseCheckTx. + Later, transactions may be queried using these events. + type: object + properties: + attributes: + type: array + items: + type: object + $ref: '#/definitions/tendermint.abci.EventAttribute' + type: + type: string + tendermint.abci.EventAttribute: + description: EventAttribute is a single key-value pair, associated with an event. + type: object + properties: + index: + type: boolean + title: nondeterministic + key: + type: string + value: + type: string + tendermint.abci.ExecTxResult: + description: |- + ExecTxResult contains results of executing one individual transaction. + + * Its structure is equivalent to #ResponseDeliverTx which will be deprecated/deleted + type: object + properties: + code: + type: integer + format: int64 + codespace: + type: string + data: + type: string + format: byte + events: + type: array + title: nondeterministic + items: + type: object + $ref: '#/definitions/tendermint.abci.Event' + gas_used: + type: string + format: int64 + gas_wanted: + type: string + format: int64 + info: + type: string + title: nondeterministic + log: + type: string + title: nondeterministic + tendermint.abci.ExtendedCommitInfo: + description: |- + ExtendedCommitInfo is similar to CommitInfo except that it is only used in + the PrepareProposal request such that CometBFT can provide vote extensions + to the application. + type: object + properties: + round: + description: The round at which the block proposer decided in the previous height. + type: integer + format: int32 + votes: + description: |- + List of validators' addresses in the last validator set with their voting + information, including vote extensions. + type: array + items: + type: object + $ref: '#/definitions/tendermint.abci.ExtendedVoteInfo' + tendermint.abci.ExtendedVoteInfo: + type: object + properties: + block_id_flag: + title: block_id_flag indicates whether the validator voted for a block, nil, or did not vote at all + $ref: '#/definitions/tendermint.types.BlockIDFlag' + extension_signature: + type: string + format: byte + title: Vote extension signature created by CometBFT + validator: + description: The validator that sent the vote. + $ref: '#/definitions/tendermint.abci.Validator' + vote_extension: + description: Non-deterministic extension provided by the sending validator's application. + type: string + format: byte + tendermint.abci.Misbehavior: + type: object + properties: + height: + type: string + format: int64 + title: The height when the offense occurred + time: + type: string + format: date-time + title: The corresponding time where the offense occurred + total_voting_power: + type: string + format: int64 + title: |- + Total voting power of the validator set in case the ABCI application does + not store historical validators. + https://github.com/tendermint/tendermint/issues/4581 + type: + $ref: '#/definitions/tendermint.abci.MisbehaviorType' + validator: + title: The offending validator + $ref: '#/definitions/tendermint.abci.Validator' + tendermint.abci.MisbehaviorType: + type: string + default: UNKNOWN + enum: + - UNKNOWN + - DUPLICATE_VOTE + - LIGHT_CLIENT_ATTACK + tendermint.abci.RequestApplySnapshotChunk: + type: object + title: Applies a snapshot chunk + properties: + chunk: + type: string + format: byte + index: + type: integer + format: int64 + sender: + type: string + tendermint.abci.RequestCheckTx: + type: object + properties: + tx: + type: string + format: byte + type: + $ref: '#/definitions/tendermint.abci.CheckTxType' + tendermint.abci.RequestCommit: + type: object + tendermint.abci.RequestEcho: + type: object + properties: + message: + type: string + tendermint.abci.RequestExtendVote: + type: object + title: Extends a vote with application-injected data + properties: + hash: + type: string + format: byte + title: the hash of the block that this vote may be referring to + height: + type: string + format: int64 + title: the height of the extended vote + misbehavior: + type: array + items: + type: object + $ref: '#/definitions/tendermint.abci.Misbehavior' + next_validators_hash: + type: string + format: byte + proposed_last_commit: + $ref: '#/definitions/tendermint.abci.CommitInfo' + proposer_address: + description: address of the public key of the original proposer of the block. + type: string + format: byte + time: + type: string + format: date-time + title: info of the block that this vote may be referring to + txs: + type: array + items: + type: string + format: byte + tendermint.abci.RequestFinalizeBlock: + type: object + properties: + decided_last_commit: + $ref: '#/definitions/tendermint.abci.CommitInfo' + hash: + description: hash is the merkle root hash of the fields of the decided block. + type: string + format: byte + height: + type: string + format: int64 + misbehavior: + type: array + items: + type: object + $ref: '#/definitions/tendermint.abci.Misbehavior' + next_validators_hash: + type: string + format: byte + proposer_address: + description: proposer_address is the address of the public key of the original proposer of the block. + type: string + format: byte + time: + type: string + format: date-time + txs: + type: array + items: + type: string + format: byte + tendermint.abci.RequestFlush: + type: object + tendermint.abci.RequestInfo: + type: object + properties: + abci_version: + type: string + block_version: + type: string + format: uint64 + p2p_version: + type: string + format: uint64 + version: + type: string + tendermint.abci.RequestInitChain: + type: object + properties: + app_state_bytes: + type: string + format: byte + chain_id: + type: string + consensus_params: + $ref: '#/definitions/tendermint.types.ConsensusParams' + initial_height: + type: string + format: int64 + time: + type: string + format: date-time + validators: + type: array + items: + type: object + $ref: '#/definitions/tendermint.abci.ValidatorUpdate' + tendermint.abci.RequestListSnapshots: + type: object + title: lists available snapshots + tendermint.abci.RequestLoadSnapshotChunk: + type: object + title: loads a snapshot chunk + properties: + chunk: + type: integer + format: int64 + format: + type: integer + format: int64 + height: + type: string + format: uint64 + tendermint.abci.RequestOfferSnapshot: + type: object + title: offers a snapshot to the application + properties: + app_hash: + type: string + format: byte + title: light client-verified app hash for snapshot height + snapshot: + title: snapshot offered by peers + $ref: '#/definitions/tendermint.abci.Snapshot' + tendermint.abci.RequestPrepareProposal: + type: object + properties: + height: + type: string + format: int64 + local_last_commit: + $ref: '#/definitions/tendermint.abci.ExtendedCommitInfo' + max_tx_bytes: + description: the modified transactions cannot exceed this size. + type: string + format: int64 + misbehavior: + type: array + items: + type: object + $ref: '#/definitions/tendermint.abci.Misbehavior' + next_validators_hash: + type: string + format: byte + proposer_address: + description: address of the public key of the validator proposing the block. + type: string + format: byte + time: + type: string + format: date-time + txs: + description: |- + txs is an array of transactions that will be included in a block, + sent to the app for possible modifications. + type: array + items: + type: string + format: byte + tendermint.abci.RequestProcessProposal: + type: object + properties: + hash: + description: hash is the merkle root hash of the fields of the proposed block. + type: string + format: byte + height: + type: string + format: int64 + misbehavior: + type: array + items: + type: object + $ref: '#/definitions/tendermint.abci.Misbehavior' + next_validators_hash: + type: string + format: byte + proposed_last_commit: + $ref: '#/definitions/tendermint.abci.CommitInfo' + proposer_address: + description: address of the public key of the original proposer of the block. + type: string + format: byte + time: + type: string + format: date-time + txs: + type: array + items: + type: string + format: byte + tendermint.abci.RequestQuery: + type: object + properties: + data: + type: string + format: byte + height: + type: string + format: int64 + path: + type: string + prove: + type: boolean + tendermint.abci.RequestVerifyVoteExtension: + type: object + title: Verify the vote extension + properties: + hash: + type: string + format: byte + title: the hash of the block that this received vote corresponds to + height: + type: string + format: int64 + validator_address: + type: string + format: byte + title: the validator that signed the vote extension + vote_extension: + type: string + format: byte + tendermint.abci.ResponseApplySnapshotChunk: + type: object + properties: + refetch_chunks: + type: array + title: Chunks to refetch and reapply + items: + type: integer + format: int64 + reject_senders: + type: array + title: Chunk senders to reject and ban + items: + type: string + result: + $ref: '#/definitions/tendermint.abci.ResponseApplySnapshotChunk.Result' + tendermint.abci.ResponseApplySnapshotChunk.Result: + type: string + title: |- + - UNKNOWN: Unknown result, abort all snapshot restoration + - ACCEPT: Chunk successfully accepted + - ABORT: Abort all snapshot restoration + - RETRY: Retry chunk (combine with refetch and reject) + - RETRY_SNAPSHOT: Retry snapshot (combine with refetch and reject) + - REJECT_SNAPSHOT: Reject this snapshot, try others + default: UNKNOWN + enum: + - UNKNOWN + - ACCEPT + - ABORT + - RETRY + - RETRY_SNAPSHOT + - REJECT_SNAPSHOT + tendermint.abci.ResponseCheckTx: + type: object + properties: + code: + type: integer + format: int64 + codespace: + type: string + data: + type: string + format: byte + events: + type: array + items: + type: object + $ref: '#/definitions/tendermint.abci.Event' + gas_used: + type: string + format: int64 + gas_wanted: + type: string + format: int64 + info: + type: string + title: nondeterministic + log: + type: string + title: nondeterministic + tendermint.abci.ResponseCommit: + type: object + properties: + retain_height: + type: string + format: int64 + tendermint.abci.ResponseEcho: + type: object + properties: + message: + type: string + tendermint.abci.ResponseExtendVote: + type: object + properties: + vote_extension: + type: string + format: byte + tendermint.abci.ResponseFinalizeBlock: + type: object + properties: + app_hash: + description: |- + app_hash is the hash of the applications' state which is used to confirm that execution of the transactions was + deterministic. It is up to the application to decide which algorithm to use. + type: string + format: byte + consensus_param_updates: + description: updates to the consensus params, if any. + $ref: '#/definitions/tendermint.types.ConsensusParams' + events: + type: array + title: set of block events emmitted as part of executing the block + items: + type: object + $ref: '#/definitions/tendermint.abci.Event' + tx_results: + type: array + title: |- + the result of executing each transaction including the events + the particular transction emitted. This should match the order + of the transactions delivered in the block itself + items: + type: object + $ref: '#/definitions/tendermint.abci.ExecTxResult' + validator_updates: + description: a list of updates to the validator set. These will reflect the validator set at current height + 2. + type: array + items: + type: object + $ref: '#/definitions/tendermint.abci.ValidatorUpdate' + tendermint.abci.ResponseFlush: + type: object + tendermint.abci.ResponseInfo: + type: object + properties: + app_version: + type: string + format: uint64 + data: + type: string + last_block_app_hash: + type: string + format: byte + last_block_height: + type: string + format: int64 + version: + type: string + tendermint.abci.ResponseInitChain: + type: object + properties: + app_hash: + type: string + format: byte + consensus_params: + $ref: '#/definitions/tendermint.types.ConsensusParams' + validators: + type: array + items: + type: object + $ref: '#/definitions/tendermint.abci.ValidatorUpdate' + tendermint.abci.ResponseListSnapshots: + type: object + properties: + snapshots: + type: array + items: + type: object + $ref: '#/definitions/tendermint.abci.Snapshot' + tendermint.abci.ResponseLoadSnapshotChunk: + type: object + properties: + chunk: + type: string + format: byte + tendermint.abci.ResponseOfferSnapshot: + type: object + properties: + result: + $ref: '#/definitions/tendermint.abci.ResponseOfferSnapshot.Result' + tendermint.abci.ResponseOfferSnapshot.Result: + type: string + title: |- + - UNKNOWN: Unknown result, abort all snapshot restoration + - ACCEPT: Snapshot accepted, apply chunks + - ABORT: Abort all snapshot restoration + - REJECT: Reject this specific snapshot, try others + - REJECT_FORMAT: Reject all snapshots of this format, try others + - REJECT_SENDER: Reject all snapshots from the sender(s), try others + default: UNKNOWN + enum: + - UNKNOWN + - ACCEPT + - ABORT + - REJECT + - REJECT_FORMAT + - REJECT_SENDER + tendermint.abci.ResponsePrepareProposal: + type: object + properties: + txs: + type: array + items: + type: string + format: byte + tendermint.abci.ResponseProcessProposal: + type: object + properties: + status: + $ref: '#/definitions/tendermint.abci.ResponseProcessProposal.ProposalStatus' + tendermint.abci.ResponseProcessProposal.ProposalStatus: + type: string + default: UNKNOWN + enum: + - UNKNOWN + - ACCEPT + - REJECT + tendermint.abci.ResponseQuery: + type: object + properties: + code: + type: integer + format: int64 + codespace: + type: string + height: + type: string + format: int64 + index: + type: string + format: int64 + info: + type: string + title: nondeterministic + key: + type: string + format: byte + log: + description: |- + bytes data = 2; // use "value" instead. + + nondeterministic + type: string + proof_ops: + $ref: '#/definitions/tendermint.crypto.ProofOps' + value: + type: string + format: byte + tendermint.abci.ResponseVerifyVoteExtension: + type: object + properties: + status: + $ref: '#/definitions/tendermint.abci.ResponseVerifyVoteExtension.VerifyStatus' + tendermint.abci.ResponseVerifyVoteExtension.VerifyStatus: + description: |2- + - REJECT: Rejecting the vote extension will reject the entire precommit by the sender. + Incorrectly implementing this thus has liveness implications as it may affect + CometBFT's ability to receive 2/3+ valid votes to finalize the block. + Honest nodes should never be rejected. + type: string + default: UNKNOWN + enum: + - UNKNOWN + - ACCEPT + - REJECT + tendermint.abci.Snapshot: + type: object + properties: + chunks: + type: integer + format: int64 + title: Number of chunks in the snapshot + format: + type: integer + format: int64 + title: The application-specific snapshot format + hash: + type: string + format: byte + title: Arbitrary snapshot hash, equal only if identical + height: + type: string + format: uint64 + title: The height at which the snapshot was taken + metadata: + type: string + format: byte + title: Arbitrary application metadata + tendermint.abci.Validator: + type: object + properties: + address: + type: string + format: byte + title: The first 20 bytes of SHA256(public key) + power: + description: The voting power + type: string + format: int64 + title: PubKey pub_key = 2 [(gogoproto.nullable)=false]; + tendermint.abci.ValidatorUpdate: + type: object + properties: + power: + type: string + format: int64 + pub_key: + $ref: '#/definitions/tendermint.crypto.PublicKey' + tendermint.abci.VoteInfo: + type: object + properties: + block_id_flag: + $ref: '#/definitions/tendermint.types.BlockIDFlag' + validator: + $ref: '#/definitions/tendermint.abci.Validator' + tendermint.crypto.ProofOp: + type: object + title: |- + ProofOp defines an operation used for calculating Merkle root + The data could be arbitrary format, providing nessecary data + for example neighbouring node hash + properties: + data: + type: string + format: byte + key: + type: string + format: byte + type: + type: string + tendermint.crypto.ProofOps: + type: object + title: ProofOps is Merkle proof defined by the list of ProofOps + properties: + ops: + type: array + items: + type: object + $ref: '#/definitions/tendermint.crypto.ProofOp' + tendermint.crypto.PublicKey: + type: object + title: PublicKey defines the keys available for use with Validators + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + tendermint.p2p.DefaultNodeInfo: + type: object + properties: + channels: + type: string + format: byte + default_node_id: + type: string + listen_addr: + type: string + moniker: + type: string + network: + type: string + other: + $ref: '#/definitions/tendermint.p2p.DefaultNodeInfoOther' + protocol_version: + $ref: '#/definitions/tendermint.p2p.ProtocolVersion' + version: + type: string + tendermint.p2p.DefaultNodeInfoOther: + type: object + properties: + rpc_address: + type: string + tx_index: + type: string + tendermint.p2p.ProtocolVersion: + type: object + properties: + app: + type: string + format: uint64 + block: + type: string + format: uint64 + p2p: + type: string + format: uint64 + tendermint.types.ABCIParams: + description: ABCIParams configure functionality specific to the Application Blockchain Interface. + type: object + properties: + vote_extensions_enable_height: + description: |- + vote_extensions_enable_height configures the first height during which + vote extensions will be enabled. During this specified height, and for all + subsequent heights, precommit messages that do not contain valid extension data + will be considered invalid. Prior to this height, vote extensions will not + be used or accepted by validators on the network. + + Once enabled, vote extensions will be created by the application in ExtendVote, + passed to the application for validation in VerifyVoteExtension and given + to the application to use when proposing a block during PrepareProposal. + type: string + format: int64 + tendermint.types.Block: + type: object + properties: + data: + $ref: '#/definitions/tendermint.types.Data' + evidence: + $ref: '#/definitions/tendermint.types.EvidenceList' + header: + $ref: '#/definitions/tendermint.types.Header' + last_commit: + $ref: '#/definitions/tendermint.types.Commit' + tendermint.types.BlockID: + type: object + title: BlockID + properties: + hash: + type: string + format: byte + part_set_header: + $ref: '#/definitions/tendermint.types.PartSetHeader' + tendermint.types.BlockIDFlag: + description: |- + - BLOCK_ID_FLAG_UNKNOWN: indicates an error condition + - BLOCK_ID_FLAG_ABSENT: the vote was not received + - BLOCK_ID_FLAG_COMMIT: voted for the block that received the majority + - BLOCK_ID_FLAG_NIL: voted for nil + type: string + title: BlockIdFlag indicates which BlockID the signature is for + default: BLOCK_ID_FLAG_UNKNOWN + enum: + - BLOCK_ID_FLAG_UNKNOWN + - BLOCK_ID_FLAG_ABSENT + - BLOCK_ID_FLAG_COMMIT + - BLOCK_ID_FLAG_NIL + tendermint.types.BlockParams: + description: BlockParams contains limits on the block size. + type: object + properties: + max_bytes: + type: string + format: int64 + title: |- + Max block size, in bytes. + Note: must be greater than 0 + max_gas: + type: string + format: int64 + title: |- + Max gas per block. + Note: must be greater or equal to -1 + tendermint.types.Commit: + description: Commit contains the evidence that a block was committed by a set of validators. + type: object + properties: + block_id: + $ref: '#/definitions/tendermint.types.BlockID' + height: + type: string + format: int64 + round: + type: integer + format: int32 + signatures: + type: array + items: + type: object + $ref: '#/definitions/tendermint.types.CommitSig' + tendermint.types.CommitSig: + description: CommitSig is a part of the Vote included in a Commit. + type: object + properties: + block_id_flag: + $ref: '#/definitions/tendermint.types.BlockIDFlag' + signature: + type: string + format: byte + timestamp: + type: string + format: date-time + validator_address: + type: string + format: byte + tendermint.types.ConsensusParams: + description: |- + ConsensusParams contains consensus critical parameters that determine the + validity of blocks. + type: object + properties: + abci: + $ref: '#/definitions/tendermint.types.ABCIParams' + block: + $ref: '#/definitions/tendermint.types.BlockParams' + evidence: + $ref: '#/definitions/tendermint.types.EvidenceParams' + validator: + $ref: '#/definitions/tendermint.types.ValidatorParams' + version: + $ref: '#/definitions/tendermint.types.VersionParams' + tendermint.types.Data: + type: object + title: Data contains the set of transactions included in the block + properties: + txs: + description: |- + Txs that will be applied by state @ block.Height+1. + NOTE: not all txs here are valid. We're just agreeing on the order first. + This means that block.AppHash does not include these txs. + type: array + items: + type: string + format: byte + tendermint.types.DuplicateVoteEvidence: + description: DuplicateVoteEvidence contains evidence of a validator signed two conflicting votes. + type: object + properties: + timestamp: + type: string + format: date-time + total_voting_power: + type: string + format: int64 + validator_power: + type: string + format: int64 + vote_a: + $ref: '#/definitions/tendermint.types.Vote' + vote_b: + $ref: '#/definitions/tendermint.types.Vote' + tendermint.types.Evidence: + type: object + properties: + duplicate_vote_evidence: + $ref: '#/definitions/tendermint.types.DuplicateVoteEvidence' + light_client_attack_evidence: + $ref: '#/definitions/tendermint.types.LightClientAttackEvidence' + tendermint.types.EvidenceList: + type: object + properties: + evidence: + type: array + items: + type: object + $ref: '#/definitions/tendermint.types.Evidence' + tendermint.types.EvidenceParams: + description: EvidenceParams determine how we handle evidence of malfeasance. + type: object + properties: + max_age_duration: + description: |- + Max age of evidence, in time. + + It should correspond with an app's "unbonding period" or other similar + mechanism for handling [Nothing-At-Stake + attacks](https://github.com/ethereum/wiki/wiki/Proof-of-Stake-FAQ#what-is-the-nothing-at-stake-problem-and-how-can-it-be-fixed). + type: string + max_age_num_blocks: + description: |- + Max age of evidence, in blocks. + + The basic formula for calculating this is: MaxAgeDuration / {average block + time}. + type: string + format: int64 + max_bytes: + type: string + format: int64 + title: |- + This sets the maximum size of total evidence in bytes that can be committed in a single block. + and should fall comfortably under the max block bytes. + Default is 1048576 or 1MB + tendermint.types.Header: + description: Header defines the structure of a block header. + type: object + properties: + app_hash: + type: string + format: byte + title: state after txs from the previous block + chain_id: + type: string + consensus_hash: + type: string + format: byte + title: consensus params for current block + data_hash: + type: string + format: byte + title: transactions + evidence_hash: + description: evidence included in the block + type: string + format: byte + title: consensus info + height: + type: string + format: int64 + last_block_id: + title: prev block info + $ref: '#/definitions/tendermint.types.BlockID' + last_commit_hash: + description: commit from validators from the last block + type: string + format: byte + title: hashes of block data + last_results_hash: + type: string + format: byte + title: root hash of all results from the txs from the previous block + next_validators_hash: + type: string + format: byte + title: validators for the next block + proposer_address: + type: string + format: byte + title: original proposer of the block + time: + type: string + format: date-time + validators_hash: + description: validators for the current block + type: string + format: byte + title: hashes from the app output from the prev block + version: + title: basic block info + $ref: '#/definitions/tendermint.version.Consensus' + tendermint.types.LightBlock: + type: object + properties: + signed_header: + $ref: '#/definitions/tendermint.types.SignedHeader' + validator_set: + $ref: '#/definitions/tendermint.types.ValidatorSet' + tendermint.types.LightClientAttackEvidence: + description: LightClientAttackEvidence contains evidence of a set of validators attempting to mislead a light client. + type: object + properties: + byzantine_validators: + type: array + items: + type: object + $ref: '#/definitions/tendermint.types.Validator' + common_height: + type: string + format: int64 + conflicting_block: + $ref: '#/definitions/tendermint.types.LightBlock' + timestamp: + type: string + format: date-time + total_voting_power: + type: string + format: int64 + tendermint.types.PartSetHeader: + type: object + title: PartsetHeader + properties: + hash: + type: string + format: byte + total: + type: integer + format: int64 + tendermint.types.SignedHeader: + type: object + properties: + commit: + $ref: '#/definitions/tendermint.types.Commit' + header: + $ref: '#/definitions/tendermint.types.Header' + tendermint.types.SignedMsgType: + description: |- + SignedMsgType is a type of signed message in the consensus. + + - SIGNED_MSG_TYPE_PREVOTE: Votes + - SIGNED_MSG_TYPE_PROPOSAL: Proposals + type: string + default: SIGNED_MSG_TYPE_UNKNOWN + enum: + - SIGNED_MSG_TYPE_UNKNOWN + - SIGNED_MSG_TYPE_PREVOTE + - SIGNED_MSG_TYPE_PRECOMMIT + - SIGNED_MSG_TYPE_PROPOSAL + tendermint.types.Validator: + type: object + properties: + address: + type: string + format: byte + proposer_priority: + type: string + format: int64 + pub_key: + $ref: '#/definitions/tendermint.crypto.PublicKey' + voting_power: + type: string + format: int64 + tendermint.types.ValidatorParams: + description: |- + ValidatorParams restrict the public key types validators can use. + NOTE: uses ABCI pubkey naming, not Amino names. + type: object + properties: + pub_key_types: + type: array + items: + type: string + tendermint.types.ValidatorSet: + type: object + properties: + proposer: + $ref: '#/definitions/tendermint.types.Validator' + total_voting_power: + type: string + format: int64 + validators: + type: array + items: + type: object + $ref: '#/definitions/tendermint.types.Validator' + tendermint.types.VersionParams: + description: VersionParams contains the ABCI application version. + type: object + properties: + app: + type: string + format: uint64 + tendermint.types.Vote: + description: |- + Vote represents a prevote or precommit vote from validators for + consensus. + type: object + properties: + block_id: + description: zero if vote is nil. + $ref: '#/definitions/tendermint.types.BlockID' + extension: + description: |- + Vote extension provided by the application. Only valid for precommit + messages. + type: string + format: byte + extension_signature: + description: |- + Vote extension signature by the validator if they participated in + consensus for the associated block. + Only valid for precommit messages. + type: string + format: byte + height: + type: string + format: int64 + round: + type: integer + format: int32 + signature: + description: |- + Vote signature by the validator if they participated in consensus for the + associated block. + type: string + format: byte + timestamp: + type: string + format: date-time + type: + $ref: '#/definitions/tendermint.types.SignedMsgType' + validator_address: + type: string + format: byte + validator_index: + type: integer + format: int32 + tendermint.version.Consensus: + description: |- + Consensus captures the consensus rules for processing a block in the blockchain, + including all blockchain data structures and the rules of the application's + state transition machine. + type: object + properties: + app: + type: string + format: uint64 + block: + type: string + format: uint64 +tags: + - name: Query + - name: Msg + - name: Service + - name: ReflectionService + - name: ABCIListenerService + - name: ABCI diff --git a/docusaurus/docs/README.md b/docusaurus/docs/README.md index f226dc1d4..bb0fe17d1 100644 --- a/docusaurus/docs/README.md +++ b/docusaurus/docs/README.md @@ -5,12 +5,23 @@ id: home-doc slug: / --- + + +
- Pocket Network logo + Pocket Network logo
+:::note Pocket Network Project Documentation + +This is the living technical documentation for the protocol design, implementation, +and operation. If you're looking for general documentation related to Pocket Network, +please visit [docs.pokt.network](https://docs.pokt.network). + +::: +
@@ -27,47 +38,62 @@ slug: /
-# poktroll +## Pocket Network Shannon Technical Docs (aka poktroll) + +**poktroll** is the source code and core implementation of the [Shannon upgrade](https://docs.pokt.network/pokt-protocol/the-shannon-upgrade) for [Pocket Network](https://pokt.network/). + +`poktroll` is built using the [Cosmos SDK](https://docs.cosmos.network), [CometBFT](https://cometbft.com/) and [Ignite CLI](https://ignite.com/cli). + +## What is Pocket Network? -**poktroll** is built using the [Cosmos SDK](https://docs.cosmos.network) and -[CometBFT](https://cometbft.com/), created with [Ignite CLI](https://ignite.com/cli) -for the Shannon upgrade of the [Pocket Network](https://pokt.network) blockchain. +:::note 🚧 Under Construction 🚧 -- [Learn about Pocket Network](#learn-about-pocket-network) -- [Roadmap](#roadmap) -- [Quickstart](#quickstart) -- [Godoc](#godoc) -- [Have questions? Ask An PNYC](#have-questions-ask-an-pnyc) +This documentation is not intended to answer this question as of 02/2025 + +Consider reading [this post from 02/2025](https://medium.com/decentralized-infrastructure/an-update-from-grove-on-shannon-beta-testnet-path-the-past-the-future-5bf7ec2a9acf) by @olshansk +to get some understanding of why you need Pocket & Grove. + +::: + +--- + +## Table of Contents + +- [Where do I start?](#where-do-i-start) +- [Shannon Roadmap](#shannon-roadmap) +- [PATH for Gateways](#path-for-gateways) +- [GoDoc Documentation](#godoc-documentation) - [License](#license) -## Learn about Pocket Network +## Where do I start? + +1. [Guides & Deployment](./operate/cheat_sheets/full_node_cheatsheet.md): Deployment cheat sheets and config overviews for node runners, infrastructure operators and CLI users. +2. [Tools & Explorers](./tools/user_guide/poktrolld_cli.md): Explorers, wallets, faucets and other resources to interact with the network. +3. [Core Developers](./develop/developer_guide/walkthrough.md): Guides & walkthroughs for core or external developers looking to contribute to the core protocol or SDK. +4. [Protocol Design](./protocol/actors/actors.md): Learn more about tokenomics design & protocol architecture. -User friendly documentation of the Shannon upgrade is still a WIP, but there are -a handful of (potentially outdated) resources you can reference in the meantime -to build a better understanding of Pocket Network: +:::note 🚧 Under Construction 🚧 -- [Pocket Network official documentation](https://docs.pokt.network) -- [[Live] Pocket Network Morse; aka v0](https://github.com/pokt-network/pocket-core) -- [[Outdated] Pocket Network Protocol](https://github.com/pokt-network/pocket-network-protocol) -- [[Deprecated]Pocket Network V1](https://github.com/pokt-network/pocket) +As of 02/2025, this documentation is under construction and does not have a clear +user journey. Different parts are intended to serve as references one can link to +or jump to/from when needed. -## Roadmap +::: -You can view the Shannon Roadmap on [Github](https://github.com/orgs/pokt-network/projects/144?query=is%3Aopen+sort%3Aupdated-desc) +## Shannon Roadmap -## Quickstart +The Shannon Roadmap, along with all past, active and future work is tracked via [this Github project](https://github.com/orgs/pokt-network/projects/144). -The best way to get involved is by following the [quickstart instructions](./develop/developer_guide/quickstart.md). +## PATH for Gateways -## Godoc +[Grove](https://grove.city/) is developing [PATH](https://path.grove.city/) for +anyone who aims to deploy a Pocket Network gateway. Visit the docs to get started. -The Godoc for the source code in this can be found at [pkg.go.dev/github.com/pokt-network/poktroll](https://pkg.go.dev/github.com/pokt-network/poktroll). +The PATH Roadmap, along with all past, active and future work is tracked via [this Github project](https://github.com/orgs/buildwithgrove/projects/1). -## Have questions? Ask An PNYC +## GoDoc Documentation -You can use [PNYX](https://pnyxai.com/), an AI-powered search engine that has been -trained and indexed on the Pocket Network documentation, community calls, forums -and much more! +The Godoc for the source code can be found at [pkg.go.dev/github.com/pokt-network/poktroll](https://pkg.go.dev/github.com/pokt-network/poktroll). --- diff --git a/docusaurus/docs/develop/contributing/code_review_guidelines.md b/docusaurus/docs/develop/contributing/code_review_guidelines.md index 287b5d5d7..41f892a97 100644 --- a/docusaurus/docs/develop/contributing/code_review_guidelines.md +++ b/docusaurus/docs/develop/contributing/code_review_guidelines.md @@ -3,7 +3,7 @@ sidebar_position: 3 title: Code Review Guidelines --- -# Code Review Guidelines +## Code Review Guidelines :::note This is a living document and will be updated as the ecosystem matures & grows. diff --git a/docusaurus/docs/develop/developer_guide/_category_.json b/docusaurus/docs/develop/developer_guide/_category_.json index ecb8c52b7..315f7c6ec 100644 --- a/docusaurus/docs/develop/developer_guide/_category_.json +++ b/docusaurus/docs/develop/developer_guide/_category_.json @@ -1,6 +1,6 @@ { "label": "Developer Guide", - "position": 2, + "position": 1, "link": { "type": "generated-index", "description": "Documentation related to onboarding as a developer to the Pocket Network protocol." diff --git a/docusaurus/docs/develop/developer_guide/adding_params.md b/docusaurus/docs/develop/developer_guide/adding_params.md index df8bf2c7d..529d68db6 100644 --- a/docusaurus/docs/develop/developer_guide/adding_params.md +++ b/docusaurus/docs/develop/developer_guide/adding_params.md @@ -1,9 +1,9 @@ --- sidebar_position: 5 -title: Adding On-Chain Module Parameters +title: Adding Onchain Module Parameters --- -# Adding On-Chain Module Parameters +# Adding Onchain Module Parameters - [Step-by-Step Instructions](#step-by-step-instructions) - [0. If the Module Doesn't Already Support a `MsgUpdateParam` Message](#0-if-the-module-doesnt-already-support-a-msgupdateparam-message) @@ -37,7 +37,7 @@ title: Adding On-Chain Module Parameters - [7.2 Create a new JSON File for the Individual Parameter Update](#72-create-a-new-json-file-for-the-individual-parameter-update) - [7.3 Update the JSON File for Updating All Parameters for the Module](#73-update-the-json-file-for-updating-all-parameters-for-the-module) -Adding a new on-chain module parameter involves multiple steps to ensure that the +Adding a new onchain module parameter involves multiple steps to ensure that the parameter is properly integrated into the system. This guide will walk you through the process using a generic approach, illustrated by adding a parameter to the `proof` module. diff --git a/docusaurus/docs/develop/localnet/observability.md b/docusaurus/docs/develop/developer_guide/pocketdex_indexer.md similarity index 99% rename from docusaurus/docs/develop/localnet/observability.md rename to docusaurus/docs/develop/developer_guide/pocketdex_indexer.md index 0879b009b..795ff7267 100644 --- a/docusaurus/docs/develop/localnet/observability.md +++ b/docusaurus/docs/develop/developer_guide/pocketdex_indexer.md @@ -1,5 +1,5 @@ --- -sidebar_position: 1 +sidebar_position: 7 title: Pocketdex Indexer --- diff --git a/docusaurus/docs/develop/developer_guide/quickstart.md b/docusaurus/docs/develop/developer_guide/walkthrough.md similarity index 95% rename from docusaurus/docs/develop/developer_guide/quickstart.md rename to docusaurus/docs/develop/developer_guide/walkthrough.md index de78ec45a..daa43c16f 100644 --- a/docusaurus/docs/develop/developer_guide/quickstart.md +++ b/docusaurus/docs/develop/developer_guide/walkthrough.md @@ -1,11 +1,11 @@ --- sidebar_position: 1 -title: Quickstart +title: Walkthrough --- import ReactPlayer from "react-player"; -# Quickstart +## Walkthrough :::info The goal of this document is to get you up and running with a LocalNet, some @@ -95,7 +95,7 @@ Install the following dependencies: 6. [Tilt](https://docs.tilt.dev/install.html) - k8s local development tool & environment manager :::note -If you've followed the [LocalNet instructions](../../operate/infrastructure/localnet.md), +If you've followed the [LocalNet instructions](../networks/localnet.md), you may already have them installed. ::: @@ -105,8 +105,8 @@ This section will help you deploy a POKT LocalNet in a k8s cluster on your machi and inspect it so you have an idea of what's going on! We'll be manually configuring a few actors to run in your shell for the sake of -the tutorial so you have visibility into the types of on-chain and off-chain -actors. In practice, you should be using [localnet](../../operate/infrastructure/localnet.md) +the tutorial so you have visibility into the types of onchain and offchain +actors. In practice, you should be using [localnet](../networks/localnet.md) to dynamically scale your actors. To learn more about the different actors type, see the docs [here](../../protocol/actors/actors.md). @@ -339,8 +339,8 @@ make acc_balance_query ACC=$SHANNON_APPLICATION ## 3. Manually Stake a Supplier & Deploy a RelayMiner -As we mentioned earlier, if you want to understand the different on-chain actors -and off-chain operators in POKT Network, look at the docs [here](../../protocol/actors/actors.md). +As we mentioned earlier, if you want to understand the different onchain actors +and offchain operators in POKT Network, look at the docs [here](../../protocol/actors/actors.md). If you just want to follow instructions to make things work and get your hands dirty, keep reading. @@ -404,7 +404,7 @@ EOF ### 3.4 Stake the new Supplier -Stake the `shannon_supplier` on-chain: +Stake the `shannon_supplier` onchain: ```bash poktrolld \ @@ -511,7 +511,7 @@ EOF ### 4.3 Stake the new Application -Stake the application on-chain: +Stake the application onchain: ```bash poktrolld --home=./localnet/poktrolld \ @@ -548,7 +548,7 @@ You must run `make acc_initialize_pubkeys` before sending a relay in order for the public keys to be initialized correctly. See the [x/auth](https://docs.cosmos.network/main/build/modules/auth) for more -information on how public keys are stored and accessible on-chain. +information on how public keys are stored and accessible onchain. ::: @@ -578,8 +578,8 @@ The Relay Request/Response from is captured in the sequence diagram below. sequenceDiagram actor U as User
(curl Client) - participant PG as PATH Gateway
(off-chain Application Operator) - participant RM as RelayMiner
(off-chain Supplier Operator) + participant PG as PATH Gateway
(offchain Application Operator) + participant RM as RelayMiner
(offchain Supplier Operator) participant anvil as ETH Node
(Anvil) U ->> +PG: eth_blockNumber
(JSON-RPC Request) @@ -600,8 +600,8 @@ provide some intuition: sequenceDiagram participant RM as RelayMiner
(Supplier Operator) participant P as Pocket Node - actor A as Application
(on-chain Record) - actor S as Supplier
(on-chain Record) + actor A as Application
(onchain Record) + actor S as Supplier
(onchain Record) RM -->> P: CreateClaim
(Relays Served) RM -->> P: SubmitProof
(Proof of Work) @@ -653,7 +653,7 @@ We went through a flow of steps above just so you can get a feel for how things That said, you can dynamically scale the number of any actors in LocalNet by ony changing one line! -Go to our [localnet tutorial](../../operate/infrastructure/localnet.md) to learn more. +Go to our [localnet tutorial](../networks/localnet.md) to learn more. ## 7. Explore the tools diff --git a/docusaurus/docs/operate/testing/_category_.json b/docusaurus/docs/develop/e2e_testing/_category_.json similarity index 75% rename from docusaurus/docs/operate/testing/_category_.json rename to docusaurus/docs/develop/e2e_testing/_category_.json index 1805c4aeb..eca33fb96 100644 --- a/docusaurus/docs/operate/testing/_category_.json +++ b/docusaurus/docs/develop/e2e_testing/_category_.json @@ -1,6 +1,6 @@ { - "label": "Testing (Internal)", - "position": 6, + "label": "E2E Testing", + "position": 4, "link": { "type": "generated-index", "description": "Documentation related to the type of end-to-end testing (load or other) we are doing." diff --git a/docusaurus/docs/operate/testing/load_testing.md b/docusaurus/docs/develop/e2e_testing/load_testing.md similarity index 90% rename from docusaurus/docs/operate/testing/load_testing.md rename to docusaurus/docs/develop/e2e_testing/load_testing.md index f1b802c8c..3b4875fee 100644 --- a/docusaurus/docs/operate/testing/load_testing.md +++ b/docusaurus/docs/develop/e2e_testing/load_testing.md @@ -27,7 +27,7 @@ The load-testing suite is built on [Gherkin](https://cucumber.io/docs/gherkin/), ## Dependencies -- [LocalNet](../infrastructure/localnet.md) (for local suite execution) +- [LocalNet](../networks/localnet.md) (for local suite execution) - [Golang](https://go.dev/dl/) ## Load Test Manifests @@ -63,7 +63,7 @@ This natural language syntax is parsed and used to match and execute the corresp To execute tests on LocalNet: -1. Ensure [LocalNet](../infrastructure/localnet.md) is operational. +1. Ensure [LocalNet](../networks/localnet.md) is operational. 2. In the `localnet_config.yaml` file, set `gateways.count` and `relayminers.count` to `3`. 3. Run `make acc_initialize_pubkeys` to initialize blockchain state public keys. 4. Run `make test_load_relays_stress_localnet` to run the LocalNet stress-test. @@ -71,7 +71,7 @@ To execute tests on LocalNet: #### Interpreting Results - The CLI output displays standard Go test results. Successful tests are indicated by `PASS`, while failures are denoted by `FAIL` with accompanying error messages. -- During test execution, the observability stack continuously collects metric data from off-chain actors. On LocalNet, [Grafana is accessible on port 3003](http://localhost:3003/?orgId=1). The +- During test execution, the observability stack continuously collects metric data from offchain actors. On LocalNet, [Grafana is accessible on port 3003](http://localhost:3003/?orgId=1). The [Stress test](http://localhost:3003/d/ddkakqetrti4gb/protocol-stress-test?orgId=1&refresh=5s) and [Load Testing](http://localhost:3003/d/fdjwb9u9t9ts0e/protocol-load-testing?orgId=1) dashboards provide valuable insights into system status. @@ -81,7 +81,7 @@ To execute tests on LocalNet: These networks are generated with random addresses, necessitating modifications to the load test manifest to reflect network-specific accounts. :::info -Note: Such networks typically involve other participants, allowing load testing against off-chain actors deployed by third parties. Consequently, metrics and logs may not be available when testing against uncontrolled software. For comprehensive observability, consider creating a new service with custom gateways and suppliers, and conduct tests against this controlled environment. +Note: Such networks typically involve other participants, allowing load testing against offchain actors deployed by third parties. Consequently, metrics and logs may not be available when testing against uncontrolled software. For comprehensive observability, consider creating a new service with custom gateways and suppliers, and conduct tests against this controlled environment. ::: #### Prerequisites diff --git a/docusaurus/docs/operate/testing/load_testing_devnet.md b/docusaurus/docs/develop/e2e_testing/load_testing_devnet.md similarity index 89% rename from docusaurus/docs/operate/testing/load_testing_devnet.md rename to docusaurus/docs/develop/e2e_testing/load_testing_devnet.md index 581c91b6a..105dfa60f 100644 --- a/docusaurus/docs/operate/testing/load_testing_devnet.md +++ b/docusaurus/docs/develop/e2e_testing/load_testing_devnet.md @@ -20,19 +20,19 @@ We can create DevNets that are suitable for running load tests. :::warning DevNets created with GitHub PRs using `devnet-test-e2e` tags are not suitable for load testing, as they only provision a -single instance of each off-chain actor. We can create custom DevNets with multiple instances of each off-chain actor for load testing purposes. +single instance of each offchain actor. We can create custom DevNets with multiple instances of each offchain actor for load testing purposes. ::: ## Prerequisites ### 1. Create and configure the DevNet -Please refer to the DevNet creation guide [here](../infrastructure/devnet.md#how-to-create). +Please refer to the DevNet creation guide [here](../networks/devnet.md#how-to-create). ### 2. Stake the necessary actors - Depending on your load testing requirements, you may need to stake one or more `gateways` and `suppliers`. -- [DevNet documentation](../infrastructure/devnet.md#stake-actors) provides more details about staking actors in DevNets. +- [DevNet documentation](../networks/devnet.md#stake-actors) provides more details about staking actors in DevNets. ### 3. Configure the load test manifest @@ -96,7 +96,7 @@ gateways: exposed_url: https://devnet-sophon-gateway-1.poktroll.com - address: pokt15w3fhfyc0lttv7r585e2ncpf6t2kl9uh8rsnyz exposed_url: https://devnet-sophon-gateway-2.poktroll.com - - address: pokt1zhmkkd0rh788mc9prfq0m2h88t9ge0j83gnxya + - address: pokt1zhmkkd0rh788mc9prfq0m2h88t9ge0j83gnxya exposed_url: https://devnet-sophon-gateway-3.poktroll.com ``` diff --git a/docusaurus/docs/operate/testing/load_testing_plan_1.md b/docusaurus/docs/develop/e2e_testing/load_testing_plan_1.md similarity index 99% rename from docusaurus/docs/operate/testing/load_testing_plan_1.md rename to docusaurus/docs/develop/e2e_testing/load_testing_plan_1.md index d497e82eb..9ad8e77ec 100644 --- a/docusaurus/docs/operate/testing/load_testing_plan_1.md +++ b/docusaurus/docs/develop/e2e_testing/load_testing_plan_1.md @@ -39,7 +39,7 @@ _This document outlines the first load test for the Shannon upgrade. IT **IS NOT 2. `Stress test` the SMT (Sparse Merkle Trie) and how it is being used 3. `Build intuition` into the cost of operating the network for all of the stakeholders involved, both on & off chain 4. `Gain visibility` into basic metrics (disk, RAM, CPU, ingress/egress traffic, etc.…) for our network actors -5. `Uncover` potential bugs, bottlenecks or concurrency issues in the on-chain & off-chain code +5. `Uncover` potential bugs, bottlenecks or concurrency issues in the onchain & offchain code 6. `Document and design` a process that’ll act as the foundation for future load-testing efforts ## Non-Goals diff --git a/docusaurus/docs/operate/testing/load_testing_testnet.md b/docusaurus/docs/develop/e2e_testing/load_testing_testnet.md similarity index 100% rename from docusaurus/docs/operate/testing/load_testing_testnet.md rename to docusaurus/docs/develop/e2e_testing/load_testing_testnet.md diff --git a/docusaurus/docs/develop/localnet/_category_.json b/docusaurus/docs/develop/localnet/_category_.json deleted file mode 100644 index eeb79d4a7..000000000 --- a/docusaurus/docs/develop/localnet/_category_.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "label": "LocalNet", - "position": 9, - "link": { - "type": "generated-index", - "description": "Tips on how to leverage the most out of your LocalNet Environment." - } -} diff --git a/docusaurus/docs/operate/infrastructure/_category_.json b/docusaurus/docs/develop/networks/_category_.json similarity index 92% rename from docusaurus/docs/operate/infrastructure/_category_.json rename to docusaurus/docs/develop/networks/_category_.json index 962324af5..bede72b59 100644 --- a/docusaurus/docs/operate/infrastructure/_category_.json +++ b/docusaurus/docs/develop/networks/_category_.json @@ -1,6 +1,6 @@ { "label": "Networks", - "position": 5, + "position": 3, "link": { "type": "generated-index", "description": "Infrastructure related to deploying, maintaining and testing various (Local, Dev, Test) environments." diff --git a/docusaurus/docs/operate/infrastructure/access_dashboard_on_service.png b/docusaurus/docs/develop/networks/access_dashboard_on_service.png similarity index 100% rename from docusaurus/docs/operate/infrastructure/access_dashboard_on_service.png rename to docusaurus/docs/develop/networks/access_dashboard_on_service.png diff --git a/docusaurus/docs/operate/infrastructure/devnet.md b/docusaurus/docs/develop/networks/devnet.md similarity index 99% rename from docusaurus/docs/operate/infrastructure/devnet.md rename to docusaurus/docs/develop/networks/devnet.md index 48166bc00..3e79a0209 100644 --- a/docusaurus/docs/operate/infrastructure/devnet.md +++ b/docusaurus/docs/develop/networks/devnet.md @@ -60,7 +60,7 @@ The following is a list of details to know how our DevNet infrastructure is prov Each DevNet ArgoCD App (following the App of Apps pattern) provisions a Helm chart called [full-network](https://github.com/pokt-network/protocol-infra/tree/main/charts/full-network). -Each `full-network` includes other ArgoCD applications that deploy Validators and off-chain actors. +Each `full-network` includes other ArgoCD applications that deploy Validators and offchain actors. Each Helm chart receives a list of configuration files. For example, see the [relayminer configuration](https://github.com/pokt-network/protocol-infra/blob/main/charts/full-network/templates/Application-Relayminer.yaml#L37). All possible values can be found in the `values.yaml` of the Helm chart, such as the [relayminer Helm chart](https://github.com/pokt-network/helm-charts/blob/main/charts/relayminer/values.yaml). diff --git a/docusaurus/docs/operate/infrastructure/gcp_workloads.png b/docusaurus/docs/develop/networks/gcp_workloads.png similarity index 100% rename from docusaurus/docs/operate/infrastructure/gcp_workloads.png rename to docusaurus/docs/develop/networks/gcp_workloads.png diff --git a/docusaurus/docs/operate/infrastructure/grafana_explore_logs.png b/docusaurus/docs/develop/networks/grafana_explore_logs.png similarity index 100% rename from docusaurus/docs/operate/infrastructure/grafana_explore_logs.png rename to docusaurus/docs/develop/networks/grafana_explore_logs.png diff --git a/docusaurus/docs/operate/infrastructure/grafana_save_dashboard.png b/docusaurus/docs/develop/networks/grafana_save_dashboard.png similarity index 100% rename from docusaurus/docs/operate/infrastructure/grafana_save_dashboard.png rename to docusaurus/docs/develop/networks/grafana_save_dashboard.png diff --git a/docusaurus/docs/operate/infrastructure/localnet.md b/docusaurus/docs/develop/networks/localnet.md similarity index 98% rename from docusaurus/docs/operate/infrastructure/localnet.md rename to docusaurus/docs/develop/networks/localnet.md index 76260c51c..582c2ca19 100644 --- a/docusaurus/docs/operate/infrastructure/localnet.md +++ b/docusaurus/docs/develop/networks/localnet.md @@ -17,7 +17,7 @@ needed to send an end-to-end relay. - [Developing with LocalNet](#developing-with-localnet) - [localnet_config.yaml](#localnet_configyaml) - [Scaling network actors](#scaling-network-actors) - - [Off-chain actors configuration](#off-chain-actors-configuration) + - [Offchain actors configuration](#offchain-actors-configuration) - [Modify Kubernetes workloads](#modify-kubernetes-workloads) - [Observability](#observability) - [Access dashboards with graphs and logs](#access-dashboards-with-graphs-and-logs) @@ -75,7 +75,7 @@ relayers: _NOTE: You may need to up to 1 minute for the new actors to be registered and deployed locally._ -### Off-chain actors configuration +### Offchain actors configuration We heavily use Helm charts for configuring LocalNet. The goal is to maximize the tooling involved in deploying production workloads and local development. diff --git a/docusaurus/docs/operate/infrastructure/private_testnet.md b/docusaurus/docs/develop/networks/private_testnet.md similarity index 100% rename from docusaurus/docs/operate/infrastructure/private_testnet.md rename to docusaurus/docs/develop/networks/private_testnet.md diff --git a/docusaurus/docs/operate/infrastructure/repositories.md b/docusaurus/docs/develop/networks/repositories.md similarity index 100% rename from docusaurus/docs/operate/infrastructure/repositories.md rename to docusaurus/docs/develop/networks/repositories.md diff --git a/docusaurus/docs/operate/infrastructure/testnet.md b/docusaurus/docs/develop/networks/testnet.md similarity index 100% rename from docusaurus/docs/operate/infrastructure/testnet.md rename to docusaurus/docs/develop/networks/testnet.md diff --git a/docusaurus/docs/develop/packages/_category_.json b/docusaurus/docs/develop/packages/_category_.json index 4f8136c12..48734213d 100644 --- a/docusaurus/docs/develop/packages/_category_.json +++ b/docusaurus/docs/develop/packages/_category_.json @@ -1,6 +1,6 @@ { "label": "Packages", - "position": 5, + "position": 2, "link": { "type": "generated-index", "description": "Documentation related to the source code and packages in poktroll." diff --git a/docusaurus/docs/develop/testing/_category_.json b/docusaurus/docs/develop/testing/_category_.json new file mode 100644 index 000000000..d79c85960 --- /dev/null +++ b/docusaurus/docs/develop/testing/_category_.json @@ -0,0 +1,8 @@ +{ + "label": "Testing", + "position": 5, + "link": { + "type": "generated-index", + "description": "Documentation related to unit testing." + } +} diff --git a/docusaurus/docs/develop/developer_guide/testing/app_integration.md b/docusaurus/docs/develop/testing/app_integration.md similarity index 100% rename from docusaurus/docs/develop/developer_guide/testing/app_integration.md rename to docusaurus/docs/develop/testing/app_integration.md diff --git a/docusaurus/docs/develop/developer_guide/testing/e2e.md b/docusaurus/docs/develop/testing/e2e.md similarity index 100% rename from docusaurus/docs/develop/developer_guide/testing/e2e.md rename to docusaurus/docs/develop/testing/e2e.md diff --git a/docusaurus/docs/develop/developer_guide/testing/in_memory_integration.md b/docusaurus/docs/develop/testing/in_memory_integration.md similarity index 100% rename from docusaurus/docs/develop/developer_guide/testing/in_memory_integration.md rename to docusaurus/docs/develop/testing/in_memory_integration.md diff --git a/docusaurus/docs/develop/developer_guide/testing/integration_suites.md b/docusaurus/docs/develop/testing/integration_suites.md similarity index 98% rename from docusaurus/docs/develop/developer_guide/testing/integration_suites.md rename to docusaurus/docs/develop/testing/integration_suites.md index 652857de4..655117cb1 100644 --- a/docusaurus/docs/develop/developer_guide/testing/integration_suites.md +++ b/docusaurus/docs/develop/testing/integration_suites.md @@ -35,7 +35,7 @@ The `testutil/integration/suites` package contains multiple **app integration su ### Example (`ParamsSuite`) -The following example shows a test suite which embeds `suites.ParamsSuite`, in order to set on-chain module params as part of its `SetupTest()` method: +The following example shows a test suite which embeds `suites.ParamsSuite`, in order to set onchain module params as part of its `SetupTest()` method: ```go package suites diff --git a/docusaurus/docs/develop/developer_guide/testing/module_integration.md b/docusaurus/docs/develop/testing/module_integration.md similarity index 100% rename from docusaurus/docs/develop/developer_guide/testing/module_integration.md rename to docusaurus/docs/develop/testing/module_integration.md diff --git a/docusaurus/docs/develop/developer_guide/testing/testing_levels.md b/docusaurus/docs/develop/testing/testing_levels.md similarity index 94% rename from docusaurus/docs/develop/developer_guide/testing/testing_levels.md rename to docusaurus/docs/develop/testing/testing_levels.md index 49ccee9d5..88d9dc75f 100644 --- a/docusaurus/docs/develop/developer_guide/testing/testing_levels.md +++ b/docusaurus/docs/develop/testing/testing_levels.md @@ -123,7 +123,7 @@ This level of testing ensures that the appchain behaves as expected in a multi-v ## [End-to-End Tests](e2e) -**End-to-end tests** focus on testing the behavior of a network containing both on- and off-chain actors; typically exercising "localnet". +**End-to-end tests** focus on testing the behavior of a network containing both on- and offchain actors; typically exercising "localnet". ### E2E Test Example @@ -133,9 +133,9 @@ This level of testing ensures that the appchain behaves as expected in a multi-v ### E2E Test - Good Fit -- Asserts or dependent on off-chain assertions -- Asserts or dependent on off-chain actors -- Asserts or dependent on off-chain behavior +- Asserts or dependent on offchain assertions +- Asserts or dependent on offchain actors +- Asserts or dependent on offchain behavior ### E2E Test - Bad Fit @@ -147,6 +147,6 @@ This level of testing ensures that the appchain behaves as expected in a multi-v - Depends on LocalNet to be running and healthy - Depends on other environments (DevNet/TestNet) to be running and healthy -- Shared mutable network state on-chain -- Shared mutable network state off-chain +- Shared mutable network state onchain +- Shared mutable network state offchain - Intolerant of non-idempotent operations (CI re-runnability). diff --git a/docusaurus/docs/explore/genesis.md b/docusaurus/docs/explore/genesis.md deleted file mode 100644 index 18424b525..000000000 --- a/docusaurus/docs/explore/genesis.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -title: Genesis -sidebar_position: 4 ---- - -## Genesis - -The genesis file for the Pocket Network is located at [pokt-network-genesis](https://github.com/pokt-network/pocket-network-genesis). diff --git a/docusaurus/docs/explore/roadmap.md b/docusaurus/docs/explore/roadmap.md deleted file mode 100644 index 75fc518a9..000000000 --- a/docusaurus/docs/explore/roadmap.md +++ /dev/null @@ -1,64 +0,0 @@ ---- -title: Roadmap -sidebar_position: 2 ---- - -## Blogs & Updates - -- TODO_BETA(@olshansk): Pocket Network Shannon Update - Beta TestNet #1 Announcement -- [Pocket Network Shannon Update - Alpha TestNet #3 Announcement](https://medium.com/decentralized-infrastructure/pocket-network-shannon-update-alpha-testnet-3-eca539a9e111) - -## Alpha TestNet Roadmap - -See the Alpha TestNet #3 Announcement [here](https://medium.com/decentralized-infrastructure/pocket-network-shannon-update-alpha-testnet-3-eca539a9e111). - -```mermaid -timeline - title Shannon Roadmap - section Morse - Alpha TestNet(s)
(Q3/Q4): - ✅ Shannon Foundation: - ✅ Shannon SDK: - ✅ Relay Mining: - ✅ Morse Utility Parity: - ✅ Token Logic Modules: - ⚙️ Governance: - ⚙️ PATH Integration: - ⚙️ Observability: - ⚙️ Scalability Testing - Beta TestNet (Q4/Q1): - ⚙️ E2E Permissionless Load Testing: - ⚙️ POKTScan Explorer: - ⚙️ TODOs & Optimizations: - ⚙️ Streamline Upgrades: - IBC Integrations: - EVM Interoperability: - Migration module R&D: - Start wPOKT migration: - Auditing & Hardening - section Morse & Shannon - Shadow Migration
(Q1): - Shadow MainNet Launch: - Turn OFF Shannon inflation: - Bugs, Hardening & TECHDEBT: - Governance Parameter Eval: - Mirror Morse MainNet Traffic: - Tooling & Documentation Improvements: - Genesis File Preparation - Public Migration
(Q1): - Public MainNet Launch: - Morse POKT "Airdrop": - Gateway Migration: - Supplier Migration: - Bridge Migration: - Onboard Morse Validators: - CEX Support: - DEX Support - section Shannon - Launch & Deprecate
(Q2): - Turn ON Shannon inflation: - Enable New Incntives: - Deprecate Morse: - MainNet IBC and EVM Interoperability: - Kickoff Post-MainNet R&D -``` diff --git a/docusaurus/docs/explore/tools.md b/docusaurus/docs/explore/tools.md deleted file mode 100644 index 9e46f4f64..000000000 --- a/docusaurus/docs/explore/tools.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -title: Tools & References -sidebar_position: 1 ---- - -- [Beta TestNet](#beta-testnet) -- [Alpha TestNet](#alpha-testnet) -- [🛠️ Tools \& References](#️-tools--references) - -## Beta TestNet - -- 🪙 [Token Faucet](https://faucet.beta.testnet.pokt.network/) -- 🗺️ [Explorer](https://shannon.beta.testnet.pokt.network) -- 🗺️ [POKTScan's Explorer](https://shannon-beta.poktscan.com/) -- 👨‍💻 [POKTScan's GraphQL Playground](https://shannon-beta-api.poktscan.com/) - -## Alpha TestNet - -- 🪙 [Token Faucet](https://faucet.alpha.testnet.pokt.network/) -- 🗺️ [Explorer](https://shannon.alpha.testnet.pokt.network) -- 🗺️ [POKTScan's Explorer](https://shannon-alpha.poktscan.com/) -- 👨‍💻 [POKTScan's GraphQL Playground](https://shannon-alpha-api.poktscan.com/) - -## 🛠️ Tools & References - -- 🏗️ [Deploy your own gateway & Supplier](https://dev.poktroll.com/operate/quickstart/docker_compose_walkthrough) -- 🍝 [Copy-pasta your way to deploying on a Debian server](https://dev.poktroll.com/operate/quickstart/docker_compose_debian_cheatsheet) -- 🧑‍💻 [Developer Onboarding](https://dev.poktroll.com/develop/developer_guide/quickstart) -- 💽 [Full Node Indexer](https://shannon-testnet.poktscan.com/) + [Pocketdex source code](https://github.com/pokt-network/pocketdex/) -- 📖 [General Documentation](https://docs.pokt.network/pokt-protocol/the-shannon-upgrade) -- 📒 [Technical Documentation](https://dev.poktroll.com/) -- 🧑‍💻 [Shannon SDK](https://github.com/pokt-network/shannon-sdk) -- 🖥️ [Shannon source code](https://github.com/pokt-network/poktroll) diff --git a/docusaurus/docs/operate/cheat_sheets/_category_.json b/docusaurus/docs/operate/cheat_sheets/_category_.json new file mode 100644 index 000000000..119111e91 --- /dev/null +++ b/docusaurus/docs/operate/cheat_sheets/_category_.json @@ -0,0 +1,8 @@ +{ + "label": "Stake & Deploy Cheat Sheets", + "position": 1, + "link": { + "type": "generated-index", + "description": "Cheat sheets for staking and operating Pocket Network actors." + } +} diff --git a/docusaurus/docs/operate/quickstart/docker_compose_debian_cheatsheet.md b/docusaurus/docs/operate/cheat_sheets/docker_compose_debian_cheatsheet.md similarity index 98% rename from docusaurus/docs/operate/quickstart/docker_compose_debian_cheatsheet.md rename to docusaurus/docs/operate/cheat_sheets/docker_compose_debian_cheatsheet.md index eb8fd7f6c..8d88228d0 100644 --- a/docusaurus/docs/operate/quickstart/docker_compose_debian_cheatsheet.md +++ b/docusaurus/docs/operate/cheat_sheets/docker_compose_debian_cheatsheet.md @@ -1,5 +1,5 @@ --- -sidebar_position: 2 +sidebar_position: 6 title: Docker Compose Cheat Sheet --- @@ -133,7 +133,7 @@ source ~/.bashrc :::warning The Alpha TestNet currently requires manual steps to sync the node to the latest block. Please find the affected block(s) -in [this document](../../protocol/upgrades/upgrade_list.md), which leads to the manual upgrade instructions. +in [this document](../upgrades/upgrade_list.md), which leads to the manual upgrade instructions. ::: ```bash diff --git a/docusaurus/docs/operate/quickstart/full_node_cheatsheet.md b/docusaurus/docs/operate/cheat_sheets/full_node_cheatsheet.md similarity index 58% rename from docusaurus/docs/operate/quickstart/full_node_cheatsheet.md rename to docusaurus/docs/operate/cheat_sheets/full_node_cheatsheet.md index 58161381a..d21f61d68 100644 --- a/docusaurus/docs/operate/quickstart/full_node_cheatsheet.md +++ b/docusaurus/docs/operate/cheat_sheets/full_node_cheatsheet.md @@ -1,45 +1,36 @@ --- title: Full Node Cheat Sheet -sidebar_position: 3 +sidebar_position: 1 --- -## Full Node Cheat Sheet Using Systemd & Cosmovisor +**🖨 🍝 instructions to get you up and running with a `Full Node` on Pocket Network using `Systemd` and `Cosmovisor` ✅** -This cheat sheet provides quick copy-pasta like instructions for installing and -running a Full Node using an automated script. +:::warning There is lots of scripting and some details are abstracted away -:::tip - -If you're interested in understanding the underlying details, or having full control over every -step of the process, check out the [Full Node Walkthrough](../run_a_node/full_node_walkthrough.md). +See the [Full Node Walkthrough](../walkthroughs/full_node_walkthrough.md) if you want to understand what's happening under the hood. ::: -- [Introduction](#introduction) -- [Pre-Requisites](#pre-requisites) -- [Install and Run a Full Node using Cosmovisor](#install-and-run-a-full-node-using-cosmovisor) - - [Automatic Upgrades Out of the Box](#automatic-upgrades-out-of-the-box) - - [Verify successful installation (curl latest block)](#verify-successful-installation-curl-latest-block) -- [FAQ \& Troubleshooting](#faq--troubleshooting) -- [\[OPTIONAL\] Do you care to know what just happened?](#optional-do-you-care-to-know-what-just-happened) - -### Introduction +--- -This guide will help you install a Full Node for Pocket Network, -**using helper that abstract out some of the underlying complexity.** +## Table of Contents -Running a Full Node is the first step toward becoming a Validator, Supplier, or Gateway. +- [Pre-Requisites \& Requirements](#pre-requisites--requirements) +- [Install and Run a Full Node using Cosmovisor](#install-and-run-a-full-node-using-cosmovisor) + - [Verify successful installation using `curl`](#verify-successful-installation-using-curl) + - [How are automatic upgrades handled out of the box?](#how-are-automatic-upgrades-handled-out-of-the-box) +- [Do you care to know what just happened?](#do-you-care-to-know-what-just-happened) -### Pre-Requisites +## Pre-Requisites & Requirements -1. **Linux-based System**: Ensure you have a Debian-based Linux distribution (other distributions may work but are not fully supported). +1. **Linux-based System**: Ensure you have a Debian-based Linux distribution. 2. **Root or Sudo Access**: You need administrative privileges to run the installation script. -3. **Dedicated Server or Virtual Machine**: Any provider should work (Vultr and Hetzner have been tested). +3. **Dedicated Server or Virtual Machine**: Any provider should work (e.g. Vultr). -### Install and Run a Full Node using Cosmovisor +## Install and Run a Full Node using Cosmovisor :::info -This section script will handle the installation of dependencies, user creation, +This section's script will handle the installation of dependencies, user creation, environment variable setup, and configuration of Cosmovisor and `poktrolld`. ::: @@ -59,34 +50,29 @@ Follow the instructions below to **quickly** install and set up a Full Node: 3. **Follow the Prompts**: - - **Choose the Network**: Select `testnet-alpha`, `testnet-beta`, or `mainnet`. - - **Set Username**: Input the desired username to run `poktrolld` (default: `poktroll`). - - **Set Node Moniker**: Input the node moniker (default: your `hostname`). - - **Confirm Seeds and Genesis File**: The script fetches seeds and the genesis file automatically. - - **External IP Address**: The script detects your external IP address. Confirm or input manually if incorrect. - -#### Automatic Upgrades Out of the Box + 1. **Choose the Network**: Select `testnet-alpha`, `testnet-beta`, or `mainnet`. + 2. **Set Username**: Input the desired username to run `poktrolld` (default: `poktroll`). + 3. **Set Node Moniker**: Input the node moniker (default: your `hostname`). + 4. **Confirm Seeds and Genesis File**: The script fetches seeds and the genesis file automatically. + 5. **External IP Address**: The script detects your external IP address. Confirm or input manually if incorrect. -Your node is configured to handle chain upgrades automatically through Cosmovisor. No manual intervention is required for standard upgrades. +### Verify successful installation using `curl` -When a chain upgrade is proposed and approved: - -1. Cosmovisor will download the new binary -2. The node will stop at the designated upgrade height -3. Cosmovisor will switch to the new binary -4. The node will restart automatically +We are going to use `curl` to query the latest block to verify the installation was successful. -#### Verify successful installation (curl latest block) +Running the following command will return the latest synched block height: -You can verify the installation was successful by querying the latest block (i.e. checking the node height). +```bash +curl -X GET http://localhost:26657/block | jq '.result.block.header.height' +``` -Running the following command: +Or the following command to get the entire block: ```bash curl -X GET http://localhost:26657/block | jq ``` -Should provide a response in this form: +Which should return a response similar to the following format: ```json { @@ -156,15 +142,23 @@ Should provide a response in this form: } ``` -### FAQ & Troubleshooting +### How are automatic upgrades handled out of the box? -See the [FAQ & Troubleshooting section in the Full Node Walkthrough](../run_a_node/full_node_walkthrough.md#faq--troubleshooting) -for examples of useful commands, common debugging instructions and other advanced usage. +Your node is configured to handle chain upgrades automatically through Cosmovisor. No manual intervention is required for standard upgrades. -### [OPTIONAL] Do you care to know what just happened? +When a chain upgrade is proposed and approved: + +1. Cosmovisor will download the new binary +2. The node will stop at the designated upgrade height +3. Cosmovisor will switch to the new binary +4. The node will restart automatically + +## Do you care to know what just happened? + +:::info Optional reading for the curious -:::info This section is optional and for informational purposes only. + ::: If you're interested in understanding what just got installed, keep reading... @@ -173,17 +167,17 @@ If you're interested in understanding what just got installed, keep reading... 2. **Cosmovisor**: A binary manager that handles chain upgrades automatically: - - Location: `/home/poktroll/bin/cosmovisor` - - Purpose: Manages different versions of `poktrolld` and handles chain upgrades - - Configuration: Set up to automatically download and switch to new binaries during upgrades + - **Location**: `/home/poktroll/bin/cosmovisor` + - **Purpose**: Manages different versions of `poktrolld` and handles chain upgrades + - **Configuration**: Set up to automatically download and switch to new binaries during upgrades 3. **Poktrolld**: The core node software: - - Location: `/home/poktroll/.poktroll/cosmovisor/genesis/bin/poktrolld` - - Configuration: `/home/poktroll/.poktroll/config/` - - Data: `/home/poktroll/.poktroll/data/` + - **Location**: `/home/poktroll/.poktroll/cosmovisor/genesis/bin/poktrolld` + - **Configuration**: `/home/poktroll/.poktroll/config/` + - **Data**: `/home/poktroll/.poktroll/data/` 4. **Systemd Service**: A service that manages the node: - - Name: `cosmovisor.service` - - Status: Enabled and started automatically - - Configured for automatic restarts and upgrades + - **Name**: `cosmovisor.service` + - **Status**: Enabled and started automatically + - **Configured** for automatic restarts and upgrades diff --git a/docusaurus/docs/operate/quickstart/gateway_cheatsheet.md b/docusaurus/docs/operate/cheat_sheets/gateway_cheatsheet.md similarity index 96% rename from docusaurus/docs/operate/quickstart/gateway_cheatsheet.md rename to docusaurus/docs/operate/cheat_sheets/gateway_cheatsheet.md index 741966d13..e77d7f90f 100644 --- a/docusaurus/docs/operate/quickstart/gateway_cheatsheet.md +++ b/docusaurus/docs/operate/cheat_sheets/gateway_cheatsheet.md @@ -1,5 +1,5 @@ --- -sidebar_position: 7 +sidebar_position: 4 title: Gateway Cheat Sheet --- @@ -9,7 +9,7 @@ This guide provides quick reference commands for setting up and running a **Gate on Pocket Network. For detailed instructions, troubleshooting, and observability setup, see the -[Gateway Walkthrough](./../run_a_node/gateway_walkthrough.md). +[Gateway Walkthrough](../walkthroughs/gateway_walkthrough.md). :::note @@ -38,8 +38,8 @@ streamline development and reduce friction for any new potential contributor. ## Pre-Requisites -1. Make sure to [install the `poktrolld` CLI](../user_guide/install.md). -2. Make sure you know how to [create and fund a new account](../user_guide/create-new-wallet.md). +1. Make sure to [install the `poktrolld` CLI](../../tools/user_guide/poktrolld_cli.md). +2. Make sure you know how to [create and fund a new account](../../tools/user_guide/create-new-wallet.md). :::warning @@ -112,7 +112,7 @@ poktrolld query bank balances $APP_ADDR $NODE_FLAGS :::tip -You can find all the explorers, faucets and tools at the [tools page](../../explore/tools.md). +You can find all the explorers, faucets and tools at the [tools page](../../tools/tools/source_code.md). ::: diff --git a/docusaurus/docs/operate/quickstart/service_cheatsheet.md b/docusaurus/docs/operate/cheat_sheets/service_cheatsheet.md similarity index 94% rename from docusaurus/docs/operate/quickstart/service_cheatsheet.md rename to docusaurus/docs/operate/cheat_sheets/service_cheatsheet.md index 4e3304db5..564fcedbf 100644 --- a/docusaurus/docs/operate/quickstart/service_cheatsheet.md +++ b/docusaurus/docs/operate/cheat_sheets/service_cheatsheet.md @@ -1,5 +1,5 @@ --- -sidebar_position: 5 +sidebar_position: 2 title: Service Cheat Sheet --- @@ -14,8 +14,8 @@ title: Service Cheat Sheet ### Pre-Requisites -1. Make sure to [install the `poktrolld` CLI](../user_guide/install.md). -2. Make sure you know how to [create and fund a new account](../user_guide/create-new-wallet.md). +1. Make sure to [install the `poktrolld` CLI](../../tools/user_guide/poktrolld_cli.md). +2. Make sure you know how to [create and fund a new account](../../tools/user_guide/create-new-wallet.md). ### How do I query for all existing onchain Services? diff --git a/docusaurus/docs/operate/quickstart/supplier_cheatsheet.md b/docusaurus/docs/operate/cheat_sheets/supplier_cheatsheet.md similarity index 94% rename from docusaurus/docs/operate/quickstart/supplier_cheatsheet.md rename to docusaurus/docs/operate/cheat_sheets/supplier_cheatsheet.md index 0b5f7115b..4cfa49fb3 100644 --- a/docusaurus/docs/operate/quickstart/supplier_cheatsheet.md +++ b/docusaurus/docs/operate/cheat_sheets/supplier_cheatsheet.md @@ -1,5 +1,5 @@ --- -sidebar_position: 6 +sidebar_position: 3 title: Supplier (RelayMiner) Cheat Sheet --- @@ -9,7 +9,7 @@ This guide provides quick reference commands for setting up a **Supplier** and running a **RelayMiner** on Pocket Network. For detailed instructions, troubleshooting, and observability setup, see the -[Supplier Walkthrough](./../run_a_node/supplier_walkthrough.md). +[Supplier Walkthrough](../walkthroughs/supplier_walkthrough.md). :::note @@ -39,8 +39,8 @@ streamline development and reduce friction for any new potential contributor. ## Pre-Requisites -1. Make sure to [install the `poktrolld` CLI](../user_guide/install.md). -2. Make sure you know how to [create and fund a new account](../user_guide/create-new-wallet.md). +1. Make sure to [install the `poktrolld` CLI](../../tools/user_guide/poktrolld_cli.md). +2. Make sure you know how to [create and fund a new account](../../tools/user_guide/create-new-wallet.md). 3. You have either [staked a new `service` or found an existing one](./service_cheatsheet.md). 4. `[Optional]` You can run things locally or have dedicated long-running hardware. See the [Docker Compose Cheat Sheet](./docker_compose_debian_cheatsheet#deploy-your-server) if you're interested in the latter. @@ -62,7 +62,7 @@ This document is a cheat sheet to get you quickly started with two things: 1. Staking an onchain `Supplier` 2. Deploying an offchain `RelayMiner` -By the end of it, you should be able to serve Relays off-chain, and claim on-chain rewards. +By the end of it, you should be able to serve Relays offchain, and claim onchain rewards. ## Account Setup @@ -117,7 +117,7 @@ poktrolld query bank balances $SUPPLIER_ADDR $NODE_FLAGS :::tip -You can find all the explorers, faucets and tools at the [tools page](../../explore/tools.md). +You can find all the explorers, faucets and tools at the [tools page](../../tools/tools/source_code.md). ::: @@ -277,5 +277,5 @@ poktrolld query supplier -h Then, you can query for all services like so: ```bash -poktrolld query supplier list-supplier --node https://shannon-testnet-grove-rpc.beta.poktroll.com --output json | jq +poktrolld query supplier list-suppliers --node https://shannon-testnet-grove-rpc.beta.poktroll.com --output json | jq ``` diff --git a/docusaurus/docs/operate/quickstart/validator_cheatsheet.md b/docusaurus/docs/operate/cheat_sheets/validator_cheatsheet.md similarity index 77% rename from docusaurus/docs/operate/quickstart/validator_cheatsheet.md rename to docusaurus/docs/operate/cheat_sheets/validator_cheatsheet.md index f12ffe560..f1e87fb15 100644 --- a/docusaurus/docs/operate/quickstart/validator_cheatsheet.md +++ b/docusaurus/docs/operate/cheat_sheets/validator_cheatsheet.md @@ -1,6 +1,6 @@ --- title: Validator Cheat Sheet -sidebar_position: 4 +sidebar_position: 6 --- ## Validator Cheat Sheet @@ -13,7 +13,7 @@ running a Validator using an automated script. :::tip If you're interested in understanding everything, or having full control of every -step, check out the [Validator Walkthrough](../run_a_node/validator_walkthrough.md). +step, check out the [Validator Walkthrough](../walkthroughs/validator_walkthrough.md). ::: @@ -27,4 +27,4 @@ This guide will help you install a Validator on Pocket Network, ### Pre-Requisites -1. **Run a Full Node**: Make sure you have followed the [Full Node Cheat Sheet](../quickstart/full_node_cheatsheet.md) to install and run a Full Node first +1. **Run a Full Node**: Make sure you have followed the [Full Node Cheat Sheet](full_node_cheatsheet.md) to install and run a Full Node first diff --git a/docusaurus/docs/operate/run_a_node/hardware_requirements.md b/docusaurus/docs/operate/configs/hardware_requirements.md similarity index 99% rename from docusaurus/docs/operate/run_a_node/hardware_requirements.md rename to docusaurus/docs/operate/configs/hardware_requirements.md index fc9af1981..3e06f61eb 100644 --- a/docusaurus/docs/operate/run_a_node/hardware_requirements.md +++ b/docusaurus/docs/operate/configs/hardware_requirements.md @@ -1,6 +1,6 @@ --- title: Hardware Requirements -sidebar_position: 1 +sidebar_position: 5 --- ## Hardware Requirements @@ -64,6 +64,7 @@ information on what a `PATH Gateway` is. | CPU Cores | 1 | 4 | | RAM | 1GB | 16GB | | SSD Storage | 5GB | 5GB | + ### Additional Considerations diff --git a/docusaurus/docs/operate/configs/relayminer_config.md b/docusaurus/docs/operate/configs/relayminer_config.md index 8931d03c2..3b1272b98 100644 --- a/docusaurus/docs/operate/configs/relayminer_config.md +++ b/docusaurus/docs/operate/configs/relayminer_config.md @@ -47,19 +47,19 @@ You can find a fully featured example configuration at [relayminer_config_full_e ## Introduction -The following diagram illustrates how the _off-chain_ `RelayMiner` operator -config (yaml) MUST match the _on-chain_ `Supplier` actor service endpoints +The following diagram illustrates how the _offchain_ `RelayMiner` operator +config (yaml) MUST match the _onchain_ `Supplier` actor service endpoints for correct and deterministic behavior. If these do not match, the behavior is non-deterministic and could result in a variety of errors such as bad QoS, incorrect proxying, burning of the actor, etc... -_Assuming that the on-chain endpoints 1 and 2 have different hosts_ +_Assuming that the onchain endpoints 1 and 2 have different hosts_ ```mermaid flowchart LR -subgraph "Supplier Actor (On-Chain)" +subgraph "Supplier Actor (Onchain)" subgraph "SupplierServiceConfig (protobuf)" subgraph svc1["Service1 (protobuf)"] svc1Id[Service1.Id] @@ -74,7 +74,7 @@ subgraph "Supplier Actor (On-Chain)" end end -subgraph "RelayMiner Operator (Off-Chain)" +subgraph "RelayMiner Operator (Offchain)" subgraph "DevOps Operator Configs (yaml)" subgraph svc1Config ["Service1 Config (yaml)"] svc1IdConfig[service_id=Service1.Id]-->svc1Id @@ -214,9 +214,9 @@ The `suppliers` section configures the services that the `RelayMiner` will offer to Pocket Network. It specifies exactly where those requests will be forwarded to by the Supplier's infrastructure. -Each suppliers entry's `service_id` MUST reflect the on-chain `Service.Id` the +Each suppliers entry's `service_id` MUST reflect the onchain `Service.Id` the supplier staked for. In addition, the `publicly_exposed_endpoints` list MUST -contain the same endpoints that the Supplier advertised on-chain when staking for +contain the same endpoints that the Supplier advertised onchain when staking for that service. At least one supplier is required for the `RelayMiner` to be functional. @@ -306,11 +306,11 @@ _`Required`_, _`Unique` within the supplier's `publicly_exposed_endpoints` list_ The `publicly_exposed_endpoints` section of the supplier configuration is a list of hosts that the `RelayMiner` will accept requests from. It MUST be a valid host -that reflects the on-chain supplier staking service endpoints. +that reflects the onchain supplier staking service endpoints. It is used to determine if the incoming request is allowed to be processed by the server listening on `listen_url` host address as well as to check if the -request's RPC-Type matches the on-chain endpoint's RPC-Type. +request's RPC-Type matches the onchain endpoint's RPC-Type. :::note @@ -325,14 +325,14 @@ and/or send requests internally from a k8s cluster for example. There are various reasons to having multiple `publicly_exposed_endpoints` for the same supplier service. -- The on-chain Supplier may provide the same Service on multiple domains +- The onchain Supplier may provide the same Service on multiple domains (e.g. for different regions). - The operator may want to route requests of different RPC types to the same server - Migrating from one domain to another. Where the operator could still accept requests on the old domain while the new domain is being propagated. - The operator may want to have a different domain for internal requests. -- The on-chain Service configuration accepts multiple endpoints. +- The onchain Service configuration accepts multiple endpoints. ## Configuring Signing Keys diff --git a/docusaurus/docs/operate/configs/supplier_staking_config.md b/docusaurus/docs/operate/configs/supplier_staking_config.md index 5f5f8b305..41ba22758 100644 --- a/docusaurus/docs/operate/configs/supplier_staking_config.md +++ b/docusaurus/docs/operate/configs/supplier_staking_config.md @@ -92,7 +92,7 @@ flowchart TD NCS ---> |owner_address or operator_address| US US -- funds --> OWA{{owner_address}} - US -- remove on-chain record --> OPA{{owner_address or operator_address}} + US -- remove onchain record --> OPA{{owner_address or operator_address}} classDef owner fill:#f9f, stroke:#333, stroke-width:2px, color:#222; classDef operator fill:#eba69a, color: #333, stroke:#333, stroke-width:2px; @@ -214,8 +214,8 @@ _`Optional`_, _`Non-empty`_ ```yaml default_rev_share_percent: - : - : + : + : ``` `default_rev_share_percent` is an optional map that defines the default the revenue diff --git a/docusaurus/docs/operate/faq/_category_.json b/docusaurus/docs/operate/faq/_category_.json new file mode 100644 index 000000000..ab2dd17d1 --- /dev/null +++ b/docusaurus/docs/operate/faq/_category_.json @@ -0,0 +1,8 @@ +{ + "label": "FAQ & Troubleshooting", + "position": 4, + "link": { + "type": "generated-index", + "description": "Frequently Asked Questions (FAQ) & Troubleshooting" + } +} diff --git a/docusaurus/docs/operate/faq/full_node_faq.md b/docusaurus/docs/operate/faq/full_node_faq.md new file mode 100644 index 000000000..23e2e3c17 --- /dev/null +++ b/docusaurus/docs/operate/faq/full_node_faq.md @@ -0,0 +1,111 @@ +--- +sidebar_position: 1 +title: Full Node FAQ +--- + +## How do I check whether my node is accessible from another machine? + +```bash +nc -vz {EXTERNAL_IP} 26656 +``` + +## How do I view my node status? + +```bash +sudo systemctl status cosmovisor.service +``` + +## How do I view my node logs? + +```bash +sudo journalctl -u cosmovisor.service -f +``` + +## How do I stop my node? + +```bash +sudo systemctl stop cosmovisor.service +``` + +## How do I start my node? + +```bash +sudo systemctl start cosmovisor.service +``` + +## How do I restart my node? + +```bash +sudo systemctl restart cosmovisor.service +``` + +## How do I query the latest block (i.e. check the node height)? + +Using poktrolld: + +```bash +poktrolld query block --type=height --node http://localhost:26657 +``` + +Or, using curl: + +```bash +curl -X GET http://localhost:26657/block | jq +``` + +## How do I access my CometBFT endpoint externally? + +The default CometBFT port is at `26657`. + +To make it accessible externally, you'll need to port all the instructions from +port `26656` on this page to port `26657`. Specifically: + +```bash +# Update your firewall +sudo ufw allow 26657/tcp + +# Alternatively, if ufw is not available, update your iptables +sudo iptables -A INPUT -p tcp --dport 26657 -j ACCEPT + +# Update your Cosmovisor config +sed -i 's|laddr = "tcp://127.0.0.1:26657"|laddr = "tcp://0.0.0.0:26657"|' $HOME/.poktroll/config/config.toml +sed -i 's|cors_allowed_origins = \[\]|cors_allowed_origins = ["*"]|' $HOME/.poktroll/config/config.toml + +# Restart the service +sudo systemctl restart cosmovisor.service + +# Test the connection +nc -vz {EXTERNAL_IP} 26657 +``` + +Learn more [here](https://docs.cometbft.com/main/rpc/). + +:::warning + +Be careful about making this public as adversarial actors may try to DDoS your node. + +::: + +## How do I check the node version? + +```bash +poktrolld version +``` + +## How do I check the Cosmosvisor directory structure? + +```bash +ls -la /home/poktroll/.poktroll/cosmovisor/ +``` + +## How do I check if an upgrade is available? + +```bash +ls -la /home/poktroll/.poktroll/cosmovisor/upgrades/ +``` + +## How do I view node configuration? + +```bash +cat /home/poktroll/.poktroll/config/config.toml +``` diff --git a/docusaurus/docs/operate/quickstart/_category_.json b/docusaurus/docs/operate/quickstart/_category_.json deleted file mode 100644 index 4a8928e1d..000000000 --- a/docusaurus/docs/operate/quickstart/_category_.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "label": "Quickstart", - "position": 1, - "link": { - "type": "generated-index", - "description": "Quickstart documentation to start deploying on Shannon." - } -} diff --git a/docusaurus/docs/operate/run_a_node/_category_.json b/docusaurus/docs/operate/run_a_node/_category_.json deleted file mode 100644 index ea46ef992..000000000 --- a/docusaurus/docs/operate/run_a_node/_category_.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "label": "Run a Node Walkthroughs", - "position": 3, - "link": { - "type": "generated-index", - "description": "Guides on how to deploy and operated various type of Pocket Network nodes." - } -} diff --git a/docusaurus/docs/protocol/upgrades/_category_.json b/docusaurus/docs/operate/upgrades/_category_.json similarity index 72% rename from docusaurus/docs/protocol/upgrades/_category_.json rename to docusaurus/docs/operate/upgrades/_category_.json index 2e80f4c80..46cb7f8e4 100644 --- a/docusaurus/docs/protocol/upgrades/_category_.json +++ b/docusaurus/docs/operate/upgrades/_category_.json @@ -1,6 +1,6 @@ { - "label": "Upgrades", - "position": 4, + "label": "Protocol Upgrades", + "position": 5, "link": { "type": "generated-index", "description": "Documentation related to Pocket Network protocol upgrades." diff --git a/docusaurus/docs/develop/developer_guide/chain_halt_troubleshooting.md b/docusaurus/docs/operate/upgrades/chain_halt_troubleshooting.md similarity index 76% rename from docusaurus/docs/develop/developer_guide/chain_halt_troubleshooting.md rename to docusaurus/docs/operate/upgrades/chain_halt_troubleshooting.md index 72da1f4f3..7e11f41d1 100644 --- a/docusaurus/docs/develop/developer_guide/chain_halt_troubleshooting.md +++ b/docusaurus/docs/operate/upgrades/chain_halt_troubleshooting.md @@ -8,13 +8,15 @@ title: Chain Halt Troubleshooting - [Understanding Chain Halts](#understanding-chain-halts) - [Definition and Causes](#definition-and-causes) - [Impact on Network](#impact-on-network) -- [Troubleshooting Process](#troubleshooting-process) +- [Troubleshooting `wrong Block.Header.AppHash`](#troubleshooting-wrong-blockheaderapphash) - [Step 1: Identifying the Issue](#step-1-identifying-the-issue) - [Step 2: Collecting Node Data](#step-2-collecting-node-data) - [Step 3: Analyzing Discrepancies](#step-3-analyzing-discrepancies) - [Step 4: Decoding and Interpreting Data](#step-4-decoding-and-interpreting-data) - [Step 5: Comparing Records](#step-5-comparing-records) - [Step 6: Investigation and Resolution](#step-6-investigation-and-resolution) +- [Troubleshooting `wrong Block.Header.LastResultsHash`](#troubleshooting-wrong-blockheaderlastresultshash) +- [Syncing from genesis](#syncing-from-genesis) ## Understanding Chain Halts @@ -40,7 +42,7 @@ Chain halts can have severe consequences for the network: Given these impacts, swift and effective troubleshooting is crucial to maintain network health and user trust. -## Troubleshooting Process +## Troubleshooting `wrong Block.Header.AppHash` ### Step 1: Identifying the Issue @@ -72,7 +74,7 @@ To interpret this data: 2. Input the hexadecimal data into CyberChef. 3. Apply the "From Hex" operation followed by "Protobuf Decode" to reveal the human-readable content. -![CyberChef Decoding Example](./img/cyberchef_1.png) +![CyberChef Decoding Example](../../develop/developer_guide/img/cyberchef_1.png) ### Step 5: Comparing Records @@ -82,7 +84,7 @@ After decoding, compare the data from both nodes: 2. Identify specific fields or values that differ between the two records. 3. Pay close attention to timestamps, numerical values, and complex data structures. -![CyberChef Diff Example](./img/cyberchef_2.png) +![CyberChef Diff Example](../../develop/developer_guide/img/cyberchef_2.png) The image above illustrates a difference in the JSON representation of an object, which is likely the root cause of the non-deterministic state breaking consensus between nodes. @@ -94,3 +96,20 @@ Based on the identified discrepancies: 2. Develop a fix or patch to address the issue. 3. If necessary, initiate discussions with the validator community to reach social consensus on how to proceed. 4. Implement the agreed-upon solution and monitor the network closely during and after the fix. + +## Troubleshooting `wrong Block.Header.LastResultsHash` + +Errors like the following can occur from using the incorrect binary version at a certain height. + +```bash +reactor validation error: wrong Block.Header.LastResultsHash. +``` + +The solution is to use the correct binary version to sync the full node at the correct height. + +Tools like [cosmosvisor](https://docs.cosmos.network/v0.45/run-node/cosmovisor.html) make it easier +to sync a node from genesis by automatically using the appropriate binary for each range of block heights. + +## Syncing from genesis + +If you're encountering any of the errors mentioned above while trying to sync the historical blocks - make sure you're running the correct version of the binary in accordance with this table [Upgrade List](upgrade_list.md). diff --git a/docusaurus/docs/operate/upgrades/contigency_plans.md b/docusaurus/docs/operate/upgrades/contigency_plans.md new file mode 100644 index 000000000..0a262bd5c --- /dev/null +++ b/docusaurus/docs/operate/upgrades/contigency_plans.md @@ -0,0 +1,100 @@ +--- +title: Failed upgrade contingency plan +sidebar_position: 5 +--- + +:::tip + +This documentation covers failed upgrade contingency for `poktroll` - a `cosmos-sdk` based chain. + +While this can be helpful for other blockchain networks, it is not guaranteed to work for other chains. + +::: + +## Contingency plans + +There's always a chance the upgrade will fail. + +This document is intended to help you recover without significant downtime. + +- [Option 0: The bug is discovered before the upgrade height is reached](#option-0-the-bug-is-discovered-before-the-upgrade-height-is-reached) +- [Option 1: The migration didn't start (i.e. migration halt)](#option-1-the-migration-didnt-start-ie-migration-halt) +- [Option 2: The migration is stuck (i.e. incomplete/partial migration)](#option-2-the-migration-is-stuck-ie-incompletepartial-migration) +- [Option 3: The migration succeed but the network is stuck (i.e. migration had a bug)](#option-3-the-migration-succeed-but-the-network-is-stuck-ie-migration-had-a-bug) +- [MANDATORY Checklist of Documentation \& Scripts to Update](#mandatory-checklist-of-documentation--scripts-to-update) + +### Option 0: The bug is discovered before the upgrade height is reached + +**Cancel the upgrade plan!** + +See the instructions of [how to do that here](./upgrade_procedure.md#cancelling-the-upgrade-plan). + +### Option 1: The migration didn't start (i.e. migration halt) + +**This is unlikely to happen.** + +Possible reasons for this are if the name of the upgrade handler is different +from the one specified in the upgrade plan, or if the binary suggested by the +upgrade plan is wrong. + +If the nodes on the network stopped at the upgrade height and the migration did not +start yet (i.e. there are no logs indicating the upgrade handler and store migrations are being executed), +we **MUST** gather social consensus to restart validators with the `--unsafe-skip-upgrade=$upgradeHeightNumber` flag. + +This will skip the upgrade process, allowing the chain to continue and the protocol team to plan another release. + +`--unsafe-skip-upgrade` simply skips the upgrade handler and store migrations. +The chain continues as if the upgrade plan was never set. +The upgrade needs to be fixed, and then a new plan needs to be submitted to the network. + +:::caution + +`--unsafe-skip-upgrade` needs to be documented in the list of upgrades and added +to the scripts so the next time somebody tries to sync the network from genesis, +they will automatically skip the failed upgrade. +[Documentation and scripts to update](#documentation-and-scripts-to-update) + + + +::: + +### Option 2: The migration is stuck (i.e. incomplete/partial migration) + +If the migration is stuck, there's always a chance the upgrade handler was executed on-chain as scheduled, but the migration didn't complete. + +In such a case, we need: + +- **All full nodes and validators**: Roll back validators to the backup + + - A snapshot is taken by `cosmovisor` automatically prior to upgrade when `UNSAFE_SKIP_BACKUP` is set to `false` (the default recommended value; + [more information](https://docs.cosmos.network/main/build/tooling/cosmovisor#command-line-arguments-and-environment-variables)) + +- **All full nodes and validators**: skip the upgrade + + - Add the `--unsafe-skip-upgrade=$upgradeHeightNumber` argument to `poktroll start` command like so: + + ```bash + poktrolld start --unsafe-skip-upgrade=$upgradeHeightNumber # ... the rest of the arguments + ``` + +- **Protocol team**: Resolve the issue with an upgrade and schedule a new plan. + + - The upgrade needs to be fixed, and then a new plan needs to be submitted to the network. + +- **Protocol team**: document the failed upgrade + + - Document and add `--unsafe-skip-upgrade=$upgradeHeightNumber` to the scripts (such as docker-compose and cosmovisor installer) + - The next time somebody tries to sync the network from genesis they will automatically skip the failed upgrade; see [documentation and scripts to update](#documentation-and-scripts-to-update) + + + +### Option 3: The migration succeed but the network is stuck (i.e. migration had a bug) + +This should be treated as a consensus or non-determinism bug that is unrelated to the upgrade. See [Recovery From Chain Halt](recovery_from_chain_halt.md) for more information on how to handle such issues. + +### MANDATORY Checklist of Documentation & Scripts to Update + +- [ ] The [upgrade list](./upgrade_list.md) should reflect a failed upgrade and provide a range of heights that served by each version. +- [ ] Systemd service should include`--unsafe-skip-upgrade=$upgradeHeightNumber` argument in its start command [here](https://github.com/pokt-network/poktroll/blob/main/tools/installer/full-node.sh). +- [ ] The [Helm chart](https://github.com/pokt-network/helm-charts/blob/main/charts/poktrolld/templates/StatefulSet.yaml) should point to the latest version;consider exposing via a `values.yaml` file +- [ ] The [docker-compose](https://github.com/pokt-network/poktroll-docker-compose-example/tree/main/scripts) examples should point to the latest version diff --git a/docusaurus/docs/protocol/upgrades/module_params.md b/docusaurus/docs/operate/upgrades/module_params.md similarity index 89% rename from docusaurus/docs/protocol/upgrades/module_params.md rename to docusaurus/docs/operate/upgrades/module_params.md index 690fabf26..bd64fa5bb 100644 --- a/docusaurus/docs/protocol/upgrades/module_params.md +++ b/docusaurus/docs/operate/upgrades/module_params.md @@ -7,7 +7,7 @@ sidebar_position: 3 ## Parameters and the DAO -Pocket Network utilizes an off-chain governance mechanism that enables the community to vote on proposals. Once a proposal passes, the DAO can adjust the parameters necessary for the protocol's operation. +Pocket Network utilizes an offchain governance mechanism that enables the community to vote on proposals. Once a proposal passes, the DAO can adjust the parameters necessary for the protocol's operation. - [Parameters and the DAO](#parameters-and-the-dao) - [Examples](#examples) diff --git a/docusaurus/docs/protocol/upgrades/protocol_upgrades.md b/docusaurus/docs/operate/upgrades/protocol_upgrades.md similarity index 93% rename from docusaurus/docs/protocol/upgrades/protocol_upgrades.md rename to docusaurus/docs/operate/upgrades/protocol_upgrades.md index 684bc8e7a..cda31c8e9 100644 --- a/docusaurus/docs/protocol/upgrades/protocol_upgrades.md +++ b/docusaurus/docs/operate/upgrades/protocol_upgrades.md @@ -1,11 +1,11 @@ --- -title: Protocol Upgrades +title: Introduction to Protocol Upgrades sidebar_position: 1 --- -# Protocol Upgrades +## Introduction to Protocol Upgrades -Pocket Network is continuously evolving through regular protocol upgrades. We implement software upgrades via a DAO process, allowing validator nodes to incorporate consensus-breaking changes. These upgrades can be automatically applied when using [Cosmovisor](../../operate/run_a_node/full_node_walkthrough.md), or manually if not using `cosmovisor`. +Pocket Network is continuously evolving through regular protocol upgrades. We implement software upgrades via a DAO process, allowing validator nodes to incorporate consensus-breaking changes. These upgrades can be automatically applied when using [Cosmovisor](../../operate/walkthroughs/full_node_walkthrough.md), or manually if not using `cosmovisor`. - [What is a Protocol Upgrade?](#what-is-a-protocol-upgrade) - [List of Upgrades](#list-of-upgrades) diff --git a/docusaurus/docs/operate/upgrades/recovery_from_chain_halt.md b/docusaurus/docs/operate/upgrades/recovery_from_chain_halt.md new file mode 100644 index 000000000..e0e0b3f0a --- /dev/null +++ b/docusaurus/docs/operate/upgrades/recovery_from_chain_halt.md @@ -0,0 +1,196 @@ +--- +sidebar_position: 7 +title: Chain Halt Recovery +--- + +## Chain Halt Recovery + +This document describes how to recover from a chain halt. + +It assumes that the cause of the chain halt has been identified, and that the +new release has been created and verified to function correctly. + +:::tip + +See [Chain Halt Troubleshooting](chain_halt_troubleshooting.md) for more information on identifying the cause of a chain halt. + +::: + +- [Background](#background) +- [Resolving halts during a network upgrade](#resolving-halts-during-a-network-upgrade) + - [Manual binary replacement (preferred)](#manual-binary-replacement-preferred) + - [Rollback, fork and upgrade](#rollback-fork-and-upgrade) + - [Troubleshooting](#troubleshooting) + - [Data rollback - retrieving snapshot at a specific height (step 5)](#data-rollback---retrieving-snapshot-at-a-specific-height-step-5) + - [Validator Isolation - risks (step 6)](#validator-isolation---risks-step-6) + +## Background + +Pocket network is built on top of `cosmos-sdk`, which utilizes the CometBFT consensus engine. +Comet's Byzantine Fault Tolerant (BFT) consensus algorithm requires that **at least** 2/3 of Validators +are online and voting for the same block to reach a consensus. In order to maintain liveness +and avoid a chain-halt, we need the majority (> 2/3) of Validators to participate +and use the same version of the software. + +## Resolving halts during a network upgrade + +If the halt is caused by the network upgrade, it is possible the solution can be as simple as +skipping an upgrade (i.e. `unsafe-skip-upgrade`) and creating a new (fixed) upgrade. + +Read more about [upgrade contingency plans](contigency_plans.md). + +### Manual binary replacement (preferred) + +:::note + +This is the preferred way of resolving consensus-breaking issues. + +**Significant side effect**: this breaks an ability to sync from genesis **without manual interventions**. +For example, when a consensus-breaking issue occurs on a node that is synching from the first block, node operators need +to manually replace the binary with the new one. There are efforts underway to mitigate this issue, including +configuration for `cosmovisor` that could automate the process. + + + +::: + +Since the chain is not moving, **it is impossible** to issue an automatic upgrade with an upgrade plan. Instead, +we need **social consensus** to manually replace the binary and get the chain moving. + +The steps to doing so are: + +1. Prepare and verify a new binary that addresses the consensus-breaking issue. +2. Reach out to the community and validators so they can upgrade the binary manually. +3. Update [the documentation](upgrade_list.md) to include a range a height when the binary needs + to be replaced. + +:::warning + +TODO_MAINNET(@okdas): + +1. **For step 2**: Investigate if the CometBFT rounds/steps need to be aligned as in Morse chain halts. See [this ref](https://docs.cometbft.com/v1.0/spec/consensus/consensus). +2. **For step 3**: Add `cosmovisor` documentation so its configured to automatically replace the binary when synching from genesis. + +::: + +```mermaid +sequenceDiagram + participant DevTeam + participant Community + participant Validators + participant Documentation + participant Network + + DevTeam->>DevTeam: 1. Prepare and verify new binary + DevTeam->>Community: 2. Announce new binary and instructions + DevTeam->>Validators: 2. Notify validators to upgrade manually + Validators->>Validators: 2. Manually replace the binary + Validators->>Network: 2. Restart nodes with new binary + DevTeam->>Documentation: 3. Update documentation (GitHub Release and Upgrade List to include instructions) + Validators-->>Network: Network resumes operation + +``` + +### Rollback, fork and upgrade + +:::info + +These instructions are only relevant to Pocket Network's Shannon release. + +We do not currently use `x/gov` or on-chain voting for upgrades. +Instead, all participants in our DAO vote on upgrades off-chain, and the Foundation +executes transactions on their behalf. + +::: + +:::warning + +This should be avoided or more testing is required. In our tests, the full nodes were +propagating the existing blocks signed by the Validators, making it hard to rollback. + +::: + +**Performing a rollback is analogous to forking the network at the older height.** + +However, if necessary, the instructions to follow are: + +1. Prepare & verify a new binary that addresses the consensus-breaking issue. +2. [Create a release](release_process.md). +3. [Prepare an upgrade transaction](upgrade_procedure.md#writing-an-upgrade-transaction) to the new version. +4. Disconnect the `Validator set` from the rest of the network **3 blocks** prior to the height of the chain halt. For example: + - Assume an issue at height `103`. + - Revert the `validator set` to height `100`. + - Submit an upgrade transaction at `101`. + - Upgrade the chain at height `102`. + - Avoid the issue at height `103`. +5. Ensure all validators rolled back to the same height and use the same snapshot ([how to get a snapshot](#data-rollback---retrieving-snapshot-at-a-specific-height-step-5)) + - The snapshot should be imported into each Validator's data directory. + - This is necessary to ensure data continuity and prevent forks. +6. Isolate the `validator set` from full nodes - ([why this is necessary](#validator-isolation---risks-step-6)). + - This is necessary to avoid full nodes from gossiping blocks that have been rolled back. + - This may require using a firewall or a private network. + - Validators should only be permitted to gossip blocks amongst themselves. +7. Start the `validator set` and perform the upgrade. For example, reiterating the process above: + - Start all Validators at height `100`. + - On block `101`, submit the `MsgSoftwareUpgrade` transaction with a `Plan.height` set to `102`. + - `x/upgrade` will perform the upgrade in the `EndBlocker` of block `102`. + - The node will stop climbing with an error waiting for the upgrade to be performed. + - Cosmovisor deployments automatically replace the binary. + - Manual deployments will require a manual replacement at this point. + - Start the node back up. +8. Wait for the network to reach the height of the previous ledger (`104`+). +9. Allow validators to open their network to full nodes again. + - **Note**: full nodes will need to perform the rollback or use a snapshot as well. + +```mermaid +sequenceDiagram + participant DevTeam + participant Foundation + participant Validators + participant FullNodes + %% participant Network + + DevTeam->>DevTeam: 1. Prepare & verify new binary + DevTeam->>DevTeam: 2 & 3. Create a release & prepare upgrade transaction + Validators->>Validators: 4 & 5. Roll back to height before issue or import snapshot + Validators->>Validators: 6. Isolate from Full Nodes + Foundation->>Validators: 7. Distribute upgrade transaction + Validators->>Validators: 7. Start network and perform upgrade + + break + Validators->>Validators: 8. Wait until previously problematic height elapses + end + + Validators-->FullNodes: 9. Open network connections + FullNodes-->>Validators: 9. Sync with updated network + note over Validators,FullNodes: Network resumes operation +``` + +### Troubleshooting + +#### Data rollback - retrieving snapshot at a specific height (step 5) + +There are two ways to get a snapshot from a prior height: + +1. Execute + + ```bash + poktrolld rollback --hard + ``` + + repeately, until the command responds with the desired block number. + +2. Use a snapshot from below the halt height (e.g. `100`) and start the node with `--halt-height=100` parameter so it only syncs up to certain height and then + gracefully shuts down. Add this argument to `poktrolld start` like this: + + ```bash + poktrolld start --halt-height=100 + ``` + +#### Validator Isolation - risks (step 6) + +Having at least one node that has knowledge of the forking ledger can jeopardize the whole process. In particular, the +following errors in logs are the sign of the nodes syncing blocks from the wrong fork: + +- `found conflicting vote from ourselves; did you unsafe_reset a validator?` +- `conflicting votes from validator` diff --git a/docusaurus/docs/protocol/upgrades/release_process.md b/docusaurus/docs/operate/upgrades/release_process.md similarity index 80% rename from docusaurus/docs/protocol/upgrades/release_process.md rename to docusaurus/docs/operate/upgrades/release_process.md index 2845f4c84..26ff4b94e 100644 --- a/docusaurus/docs/protocol/upgrades/release_process.md +++ b/docusaurus/docs/operate/upgrades/release_process.md @@ -7,22 +7,15 @@ sidebar_position: 4 - [1. Determine if the Release is Consensus-Breaking](#1-determine-if-the-release-is-consensus-breaking) - [2. Create a GitHub Release](#2-create-a-github-release) - - [Legend](#legend) -- [3. Write an Upgrade Plan](#3-write-an-upgrade-plan) -- [4. Issue Upgrade on TestNet](#4-issue-upgrade-on-testnet) -- [5. Issue Upgrade on MainNet](#5-issue-upgrade-on-mainnet) +- [3. Update the homebrew-tap formula](#3-update-the-homebrew-tap-formula) +- [4. Write an Upgrade Plan](#4-write-an-upgrade-plan) +- [5. Issue Upgrade on TestNet](#5-issue-upgrade-on-testnet) +- [6. Issue Upgrade on MainNet](#6-issue-upgrade-on-mainnet) :::info This document is for the Pocket Network protocol team's internal use only. ::: -- [1. Determine if the Release is Consensus-Breaking](#1-determine-if-the-release-is-consensus-breaking) -- [2. Create a GitHub Release](#2-create-a-github-release) - - [Legend](#legend) -- [3. Write an Upgrade Plan](#3-write-an-upgrade-plan) -- [4. Issue Upgrade on TestNet](#4-issue-upgrade-on-testnet) -- [5. Issue Upgrade on MainNet](#5-issue-upgrade-on-mainnet) - ### 1. Determine if the Release is Consensus-Breaking :::note @@ -35,7 +28,7 @@ TODO(#791): The process of adding the `consensus-breaking` label is still not fo If any exist, assume the release will require an upgrade. [Here is a link](https://github.com/pokt-network/poktroll/pulls?q=sort%3Aupdated-desc+is%3Apr+is%3Amerged+label%3Aconsensus-breaking) for convenience. -- **Verify a Full Node**: Deploy a Full Node on TestNet and allow it to sync and operate for a few days to verify that no accidentally introduced consensus-breaking changes affect the ability to sync. See the instructions in the [Quickstart Guide](../../operate/quickstart/docker_compose_debian_cheatsheet.md) for deploying a Full Node. +- **Verify a Full Node**: Deploy a Full Node on TestNet and allow it to sync and operate for a few days to verify that no accidentally introduced consensus-breaking changes affect the ability to sync. See the instructions in the [Quickstart Guide](../../operate/cheat_sheets/docker_compose_debian_cheatsheet.md for deploying a Full Node. - **Update Upgrade List**: If the new release includes an upgrade transaction for automatic upgrades, add the new release to the table in the [Upgrades List](./upgrade_list.md). @@ -59,23 +52,41 @@ You can find an example [here](https://github.com/pokt-network/poktroll/releases ```text ## Protocol Upgrades + + - **Planned Upgrade:** ❌ Not applicable for this release. - **Breaking Change:** ❌ Not applicable for this release. - **Manual Intervention Required:** ✅ Yes, but only for Alpha TestNet participants. If you are participating, please follow the [instructions provided here](https://dev.poktroll.com/operate/quickstart/docker_compose_walkthrough#restarting-a-full-node-after-re-genesis-) for restarting your full node after re-genesis. - **Upgrade Height:** ❌ Not applicable for this release. ## What's Changed + ``` -#### Legend +**Legend**: - ✅ - Yes - ❌ - No - ❓ - Unknown/To Be Determined - ⚠️ - Warning/Caution Required -### 3. Write an Upgrade Plan +### 3. Update the homebrew-tap formula + +```bash +git clone git@github.com:pokt-network/homebrew-poktroll.git +cd homebrew-poktroll +make tap_update_version +git commit -am "Update poktroll tap from v.X1.Y1.Z1 to vX1.Y2.Z2 +git push +``` + +See the [poktrolld CLI docs](../../tools/user_guide/poktrolld_cli.md) for more information. + +### 4. Write an Upgrade Plan Protocol upgrades are only necessary for `consensus-breaking` changes. However, we can still issue an upgrade transaction to require Full Nodes and Validators to use a new version. @@ -91,12 +102,12 @@ You can use the following template as a starting point. - [ ] Prepare a contingency plan to address potential issues. ``` -### 4. Issue Upgrade on TestNet +### 5. Issue Upgrade on TestNet - Follow the [Upgrade Procedure](./upgrade_procedure.md) to upgrade existing/running Full Nodes and Validators to the new version of `poktroll`. - Monitor the network's health metrics to identify any significant changes, such as the loss of many validators due to an unexpected consensus-breaking change. -### 5. Issue Upgrade on MainNet +### 6. Issue Upgrade on MainNet - Repeat the upgrade process on the MainNet, following the same steps as on the TestNet. - Ensure that the upgrade height is set correctly and communicated to the community. diff --git a/docusaurus/docs/protocol/upgrades/upgrade_list.md b/docusaurus/docs/operate/upgrades/upgrade_list.md similarity index 76% rename from docusaurus/docs/protocol/upgrades/upgrade_list.md rename to docusaurus/docs/operate/upgrades/upgrade_list.md index 6480086c3..bd2d816b0 100644 --- a/docusaurus/docs/protocol/upgrades/upgrade_list.md +++ b/docusaurus/docs/operate/upgrades/upgrade_list.md @@ -27,6 +27,7 @@ Coming... | Version | Planned | Breaking | Requires Manual Intervention | Upgrade Height | | -------------------------------------------------------------------------------- | :-----: | :------: | :--------------------------: | -------------- | +| [`v0.0.12`](https://github.com/pokt-network/poktroll/releases/tag/v0.0.12) | ✅ | ✅ | ❌ | TBA | | [`v0.0.11-rc`](https://github.com/pokt-network/poktroll/releases/tag/v0.0.11-rc) | N/A | N/A | ❌ genesis version | N/A | ## Alpha TestNet @@ -36,12 +37,14 @@ Some manual steps are currently required to sync to the latest block. Please fol -| Version | Planned | Breaking | Requires Manual Intervention | Upgrade Height | -| ---------------------------------------------------------------------------- | :-----: | :------: | :--------------------------------------------------------------------------------------------------------------------------------------------: | -------------------------------------------------------------------------------------------------------------------------------- | -| [`v0.0.10`](https://github.com/pokt-network/poktroll/releases/tag/v0.0.10) | ✅ | ✅ | ❌ (automatic upgrade) | [56860](https://shannon.alpha.testnet.pokt.network/poktroll/tx/4E201E5C397AB881F417266154C907D38404BE00BE9A443DE28E44A2B09C5CFB) | -| [`v0.0.9-4`](https://github.com/pokt-network/poktroll/releases/tag/v0.0.9-4) | ❌ | ✅ | ⚠️ [follow manual upgrade instructions](https://github.com/pokt-network/poktroll/releases/tag/v0.0.9-4) ⚠️ | `46329` | -| [`v0.0.9-3`](https://github.com/pokt-network/poktroll/releases/tag/v0.0.9-3) | ❌ | ✅ | ❌ Active Alpha TestNet Participants Only: [follow manual upgrade instructions](https://github.com/pokt-network/poktroll/releases/tag/v0.0.9-3) | `17102` | -| [`v0.0.9`](https://github.com/pokt-network/poktroll/releases/tag/v0.0.9) | N/A | N/A | ❌ genesis version | N/A | +| Version | Planned | Breaking | Requires Manual Intervention | Upgrade Height | +| ---------------------------------------------------------------------------- | :-----: | :------: | :--------------------------------------------------------------------------------------------------------------------------------------------: | --------------------------------------------------------------------------------------------------------------------------------- | +| [`v0.0.12`](https://github.com/pokt-network/poktroll/releases/tag/v0.0.12) | ✅ | ✅ | ❌ | TBA | +| [`v0.0.11`](https://github.com/pokt-network/poktroll/releases/tag/v0.0.11) | ✅ | ✅ | ❌ (automatic upgrade) | [156245](https://shannon.alpha.testnet.pokt.network/poktroll/tx/EE72B1D0744872CFFF4AC34DA9573B0BC2E32FFF998A8F25BF817FBE44F53543) | +| [`v0.0.10`](https://github.com/pokt-network/poktroll/releases/tag/v0.0.10) | ✅ | ✅ | ❌ (automatic upgrade) | [56860](https://shannon.alpha.testnet.pokt.network/poktroll/tx/4E201E5C397AB881F417266154C907D38404BE00BE9A443DE28E44A2B09C5CFB) | +| [`v0.0.9-4`](https://github.com/pokt-network/poktroll/releases/tag/v0.0.9-4) | ❌ | ✅ | ⚠️ [follow manual upgrade instructions](https://github.com/pokt-network/poktroll/releases/tag/v0.0.9-4) ⚠️ | `46329` | +| [`v0.0.9-3`](https://github.com/pokt-network/poktroll/releases/tag/v0.0.9-3) | ❌ | ✅ | ❌ Active Alpha TestNet Participants Only: [follow manual upgrade instructions](https://github.com/pokt-network/poktroll/releases/tag/v0.0.9-3) | `17102` | +| [`v0.0.9`](https://github.com/pokt-network/poktroll/releases/tag/v0.0.9) | N/A | N/A | ❌ genesis version | N/A | ### Syncing from genesis - manual steps diff --git a/docusaurus/docs/operate/upgrades/upgrade_procedure.md b/docusaurus/docs/operate/upgrades/upgrade_procedure.md new file mode 100644 index 000000000..855f0ae0e --- /dev/null +++ b/docusaurus/docs/operate/upgrades/upgrade_procedure.md @@ -0,0 +1,278 @@ +--- +title: Upgrade procedure +sidebar_position: 2 +--- + +# Upgrade procedure + +:::warning + +This page describes the protocol upgrade process, intended for the protocol team's internal use. + +If you're interested in upgrading your Pocket Network node, please check our [releases page](https://github.com/pokt-network/poktroll/releases) for upgrade instructions and changelogs. + +::: + +- [When is an Upgrade Warranted?](#when-is-an-upgrade-warranted) +- [Implementing the Upgrade](#implementing-the-upgrade) +- [Writing an Upgrade Transaction](#writing-an-upgrade-transaction) + - [Validate the URLs (live network only)](#validate-the-urls-live-network-only) +- [Submitting the upgrade onchain](#submitting-the-upgrade-onchain) +- [Cancelling the upgrade plan](#cancelling-the-upgrade-plan) +- [Testing the Upgrade](#testing-the-upgrade) + - [LocalNet Upgrades](#localnet-upgrades) + - [LocalNet Upgrade Cheat Sheet](#localnet-upgrade-cheat-sheet) + - [DevNet Upgrades](#devnet-upgrades) + - [TestNet Upgrades](#testnet-upgrades) + - [Mainnet Upgrades](#mainnet-upgrades) + +## Overview + +When a consensus-breaking change is made to the protocol, we must carefully evaluate and implement an upgrade path that +allows existing nodes to transition safely from one software version to another without disruption. + +This process involves several key steps: + +1. **Proposal**: The DAO drafts an upgrade proposal using our offchain governance system. +2. **Implementation**: The proposed changes are implemented in the codebase. +3. **Testing**: Thorough testing of the proposed changes is conducted in devnet and testnet environments before mainnet deployment. +4. **Announcement**: Upon successful testing, we announce the upgrade through our social media channels and community forums. +5. **Deployment**: An upgrade transaction is sent to the network, allowing node operators using [Cosmovisor](../../operate/walkthroughs/full_node_walkthrough.md) to automatically upgrade their nodes at the specified block height. +6. **Monitoring**: Post-deployment, we closely monitor the network to ensure everything functions as expected. + +## When is an Upgrade Warranted? + +An upgrade is necessary whenever there's an API, State Machine, or other Consensus breaking change in the version we're about to release. + +## Implementing the Upgrade + +1. When a new version includes a `consensus-breaking` change, plan for the next protocol upgrade: + + - If there's a change to a specific module -> bump that module's consensus version. + - Note any potential parameter changes to include in the upgrade. + +2. Create a new upgrade in `app/upgrades`: + - Refer to `historical.go` for past upgrades and examples. + - Consult Cosmos-sdk documentation on upgrades for additional guidance on [building-apps/app-upgrade](https://docs.cosmos.network/main/build/building-apps/app-upgrade) and [modules/upgrade](https://docs.cosmos.network/main/build/modules/upgrade). + +:::info + +Creating a new upgrade plan **MUST BE DONE** even if there are no state changes. + +::: + +## Writing an Upgrade Transaction + +An upgrade transaction includes a [Plan](https://github.com/cosmos/cosmos-sdk/blob/0fda53f265de4bcf4be1a13ea9fad450fc2e66d4/x/upgrade/proto/cosmos/upgrade/v1beta1/upgrade.proto#L14) with specific details about the upgrade. + +This information helps schedule the upgrade on the network and provides necessary data for automatic upgrades via `Cosmovisor`. + +A typical upgrade transaction includes: + +- `name`: Name of the upgrade. It should match the `VersionName` of `upgrades.Upgrade`. +- `height`: The height at which an upgrade should be executed and the node will be restarted. +- `info`: Can be empty. **Only needed for live networks where we want cosmovisor to upgrade nodes automatically**. + +And looks like the following as an example: + +```json +{ + "body": { + "messages": [ + { + "@type": "/cosmos.upgrade.v1beta1.MsgSoftwareUpgrade", + "authority": "pokt10d07y265gmmuvt4z0w9aw880jnsr700j8yv32t", + "plan": { + "name": "v0.0.4", + "height": "30", + "info": "{\"binaries\":{\"linux/amd64\":\"https://github.com/pokt-network/poktroll/releases/download/v0.0.4/poktroll_linux_amd64.tar.gz?checksum=sha256:49d2bcea02702f3dcb082054dc4e7fdd93c89fcd6ff04f2bf50227dacc455638\",\"linux/arm64\":\"https://github.com/pokt-network/poktroll/releases/download/v0.0.4/poktroll_linux_arm64.tar.gz?checksum=sha256:698f3fa8fa577795e330763f1dbb89a8081b552724aa154f5029d16a34baa7d8\",\"darwin/amd64\":\"https://github.com/pokt-network/poktroll/releases/download/v0.0.4/poktroll_darwin_amd64.tar.gz?checksum=sha256:5ecb351fb2f1fc06013e328e5c0f245ac5e815c0b82fb6ceed61bc71b18bf8e9\",\"darwin/arm64\":\"https://github.com/pokt-network/poktroll/releases/download/v0.0.4/poktroll_darwin_arm64.tar.gz?checksum=sha256:a935ab83cd770880b62d6aded3fc8dd37a30bfd15b30022e473e8387304e1c70\"}}" + } + } + ] + } +} +``` + +:::tip + +When `cosmovisor` is configured to automatically download binaries, it will pull the binary from the link provided in +the object about and perform a hash verification (which is also optional). + +**NOTE THAT** we only know the hashes **AFTER** the release has been cut and CI created artifacts for this version. + +::: + +### Validate the URLs (live network only) + +The URLs of the binaries contain checksums. It is critical to ensure they are correct. +Otherwise Cosmovisor won't be able to download the binaries and go through the upgrade. + +The command below (using tools build by the authors of Cosmosvisor) can be used to achieve the above: + +```bash +jq -r '.body.messages[0].plan.info | fromjson | .binaries[]' $PATH_TO_UPGRADE_TRANSACTION_JSON | while IFS= read -r url; do + go-getter "$url" . +done +``` + +The output should look like this: + +```text +2024/09/24 12:40:40 success! +2024/09/24 12:40:42 success! +2024/09/24 12:40:44 success! +2024/09/24 12:40:46 success! +``` + +:::tip + +`go-getter` can be installed using the following command: + +```bash +go install github.com/hashicorp/go-getter/cmd/go-getter@latest +``` + +::: + +## Submitting the upgrade onchain + +The `MsgSoftwareUpgrade` can be submitted using the following command: + +```bash +poktrolld tx authz exec $PATH_TO_UPGRADE_TRANSACTION_JSON --from=pnf +``` + +If the transaction has been accepted, the upgrade plan can be viewed with this command: + +```bash +poktrolld query upgrade plan +``` + +## Cancelling the upgrade plan + +It is possible to cancel the upgrade before the upgrade plan height is reached. To do so, execute the following make target: + +```bash +make localnet_cancel_upgrade +``` + +## Testing the Upgrade + +:::warning +Note that for local testing, `cosmovisor` won't pull the binary from the upgrade Plan's info field. +::: + +### LocalNet Upgrades + +LocalNet **DOES NOT** support `cosmovisor` and automatic upgrades at the moment. + +However, **IT IS NOT NEEDED** to simulate and test the upgrade procedure. + +#### LocalNet Upgrade Cheat Sheet + +For a hypothetical scenario to upgrade from `0.1` to `0.2`: + +1. **Stop LocalNet** to prevent interference. Pull the `poktroll` repo into two separate directories. Let's name them `old` and `new`. It is recommended to open at least two tabs/shell panels in each directory for easier switching between directories. + +2. **(`old` repo)** - Check out the old version. For the test to be accurate, we need to upgrade from the correct version. + + ```bash + git checkout v0.1 + ``` + +3. **(`new` repo)** + + ```bash + git checkout -b branch_to_test + ``` + + Replace `branch_to_test` with the actual branch you want to test. + + :::note + This branch should have an upgrade implemented per the docs in [Implementing the Upgrade](#implementing-the-upgrade). + Here, the upgrade should be named `v0.2`. + ::: + +4. **(BOTH repos)** - We'll use binaries from both versions - old and new. + + ```bash + make go_develop ignite_release ignite_release_extract_binaries + ``` + + :::note + The binary produced by these commands in the old repo should result in the same binary as it was downloaded from [production releases](https://github.com/pokt-network/poktroll/releases). You can use them as an alternative to building the binary from source. + ::: + +5. **(`old` repo)** - Clean up and generate an empty genesis using the old version. + + ```bash + rm -rf ~/.poktroll && ./release_binaries/poktroll_darwin_arm64 comet unsafe-reset-all && make localnet_regenesis + ``` + +6. **(`old` repo)** Write and save [an upgrade transaction](#writing-an-upgrade-transaction) for `v0.2`. The upgrade plan should be named after the version to which you're upgrading. + +7. **(`old` repo)** Start the node: + + ```bash + ./release_binaries/poktroll_darwin_arm64 start + ``` + + The validator node should run and produce blocks as expected. + +8. **(`old` repo)** Submit the upgrade transaction. **NOTE THAT** the upgrade height in the transaction should be higher than the current block height. Adjust and submit if necessary: + + ```bash + ./release_binaries/poktroll_darwin_arm64 tx authz exec tools/scripts/upgrades/local_test_v0.2.json --from=pnf + ``` + + Replace the path to the JSON transaction with your prepared upgrade transaction. Verify the upgrade plan was submitted and accepted: + + ```bash + ./release_binaries/poktroll_darwin_arm64 query upgrade plan + ``` + +9. Wait for the upgrade height to be reached on the old version. The old version should stop working since it has no knowledge of the `v0.2` upgrade. This simulates a real-world scenario. Stop the old node, and switch to the new version. + +10. **(`new` repo)** + + ```bash + ./release_binaries/poktroll_darwin_arm64 start + ``` + +11. **Observe the output:** + + - A successful upgrade should output `applying upgrade "v0.2" at height: 20 module=x/upgrade`. + - The node on the new version should continue producing blocks. + - If there were errors during the upgrade, investigate and address them. + +12. **(`new` repo, optional**) - If parameters were changed during the upgrade, test if these changes were applied. For example: + + ```bash + ./release_binaries/poktroll_darwin_arm64 q application params + ``` + +### DevNet Upgrades + +DevNets currently do not support `cosmovisor`. + +We use Kubernetes to manage software versions, including validators. Introducing another component to manage versions would be complex, requiring a re-architecture of our current solution to accommodate this change. + +### TestNet Upgrades + +We currently deploy TestNet validators using Kubernetes with helm charts, which prevents us from managing the validator with `cosmovisor`. We do not control what other TestNet participants are running. However, if participants have deployed their nodes using the [cosmovisor guide](../../operate/walkthroughs/full_node_walkthrough.md), their nodes will upgrade automatically. + +Until we transition to [cosmos-operator](https://github.com/strangelove-ventures/cosmos-operator), which supports scheduled upgrades (although not fully automatic like `cosmovisor`), we need to manually manage the process: + +1. Estimate when the upgrade height will be reached. +2. When validator node(s) stop due to an upgrade, manually perform an ArgoCD apply and clean up old resources. +3. Monitor validator node(s) as they start and begin producing blocks. + +:::tip + +If you are a member of Grove, you can find the instructions to access the infrastructure [on notion](https://www.notion.so/buildwithgrove/How-to-re-genesis-a-Shannon-TestNet-a6230dd8869149c3a4c21613e3cfad15?pvs=4). + +::: + +### Mainnet Upgrades + +The Mainnet upgrade process is to be determined. We aim to develop and implement improved tooling for this environment. diff --git a/docusaurus/docs/operate/walkthroughs/_category_.json b/docusaurus/docs/operate/walkthroughs/_category_.json new file mode 100644 index 000000000..e2c2e3336 --- /dev/null +++ b/docusaurus/docs/operate/walkthroughs/_category_.json @@ -0,0 +1,8 @@ +{ + "label": "Stake & Deploy Walkthroughs", + "position": 2, + "link": { + "type": "generated-index", + "description": "Walkthroughs for staking and operating Pocket Network actors." + } +} diff --git a/docusaurus/docs/operate/quickstart/docker_compose_walkthrough.md b/docusaurus/docs/operate/walkthroughs/docker_compose_walkthrough.md similarity index 94% rename from docusaurus/docs/operate/quickstart/docker_compose_walkthrough.md rename to docusaurus/docs/operate/walkthroughs/docker_compose_walkthrough.md index e79bf73af..b5269cff9 100644 --- a/docusaurus/docs/operate/quickstart/docker_compose_walkthrough.md +++ b/docusaurus/docs/operate/walkthroughs/docker_compose_walkthrough.md @@ -1,5 +1,5 @@ --- -sidebar_position: 1 +sidebar_position: 7 title: Docker Compose Walkthrough --- @@ -38,7 +38,7 @@ transitioning to `Shannon`. This document has a lot of details and explanations. If you're looking for a copy-paste quickstart guide to set all of it up on a Debian server, check out -the [Debian cheat sheet](./docker_compose_debian_cheatsheet.md). +the [Debian cheat sheet](../cheat_sheets/docker_compose_debian_cheatsheet.md). ::: @@ -60,11 +60,11 @@ This is a text heavy walkthrough, but if all goes well, you should have somethin - `Node` - A `Morse` actor that stakes to provide Relay services. - In `Morse` - All `Validator` are nodes but only the top 1000 stakes `Node`s are `Validator`s - This actor is not present in `Shannon` and decoupled into `Supplier` and a `RelayMiner`. -- `Supplier` - The on-chain actor that stakes to provide Relay services. +- `Supplier` - The onchain actor that stakes to provide Relay services. - In `Shannon` - This actor is responsible needs access to a Full Node (sovereign or node). -- `RelayMiner` - The off-chain service that provides Relay services on behalf of a `Supplier`. +- `RelayMiner` - The offchain service that provides Relay services on behalf of a `Supplier`. - In `Shannon` - This actor is responsible for providing the Relay services. -- `PATH Gateway` - The off-chain service that provides Relay services on behalf of an `Application` or `Gateway`. +- `PATH Gateway` - The offchain service that provides Relay services on behalf of an `Application` or `Gateway`. For more details, please refer to the [Shannon actors documentation](https://dev.poktroll.com/actors). @@ -76,15 +76,15 @@ multiple node types in the upcoming `Shannon` requires some explanation. In `Shannon`, the `Supplier` role is separated from the `Full node` role. In `Morse`, a `Validator` or a staked `Node` was responsible for both holding -a copy of the on-chain data, as well as performing relays. With `Shannon`, the +a copy of the onchain data, as well as performing relays. With `Shannon`, the `RelayMiner` software, which runs the supplier logic, is distinct from the full-node/validator. Furthermore, `Shannon` uses [`PATH Gateway`](https://github.com/buildwithgrove/path), a software component that acts on behalf of either `Applications` or `Gateways` to access services provided by Pocket Network `Supplier`s via `RelayMiners`. -The following diagram from the [actors](../../protocol/actors/) page captures the relationship -between on-chain records (actors) and off-chain operators (servers). +The following diagram from the [actors](../../protocol/actors) page captures the relationship +between onchain records (actors) and offchain operators (servers). ```mermaid --- @@ -92,13 +92,13 @@ title: Actors --- flowchart TB - subgraph on-chain + subgraph onchain A([Application]) G([Gateway]) S([Supplier]) end - subgraph off-chain + subgraph offchain PG[PATH Gateway] RM[Relay Miner] end @@ -132,7 +132,7 @@ Make sure to replace `olshansky` with your username. You can generally do everything as the `root` user, but it's recommended to create a new user and give it sudo permissions. -This is necessary, in particular, if you want to use [homebrew](https://brew.sh/) [to install `poktrolld`](../user_guide/install.md). +This is necessary, in particular, if you want to use [homebrew](https://brew.sh/) [to install `poktrolld`](../../tools/user_guide/poktrolld_cli.md). ```bash adduser poktroll @@ -190,7 +190,7 @@ sed -i -e s/NODE_HOSTNAME=/NODE_HOSTNAME=69.42.690.420/g .env You can generally do everything as the `root` user, but it's recommended to create a new user and give it sudo permissions. -This is necessary, in particular, if you want to use [homebrew](https://brew.sh/) [to install `poktrolld`](../user_guide/install.md). +This is necessary, in particular, if you want to use [homebrew](https://brew.sh/) [to install `poktrolld`](../../tools/user_guide/poktrolld_cli.md). You can create a new user (e.g. poktroll), provide sudo permissions and switch users like so: @@ -216,7 +216,7 @@ poktroll ALL=(ALL) NOPASSWD:ALL :::warning The Alpha TestNet currently requires manual steps to sync the node to the latest block. Please find the affected block(s) -in [this document](../../protocol/upgrades/upgrade_list.md), which leads to the manual upgrade instructions. +in [this document](../upgrades/upgrade_list.md), which leads to the manual upgrade instructions. ::: _Note: You may need to replace `docker compose` with `docker-compose` if you are @@ -325,7 +325,7 @@ which can be updated based on the `PATH Gateway` images available at ## B. Creating a Supplier and Deploying a RelayMiner -A Supplier is an on-chain record that advertises services it'll provide. +A Supplier is an onchain record that advertises services it'll provide. A RelayMiner is an operator / service that provides services to offer on the Pocket Network. @@ -702,5 +702,5 @@ done Why? - Suppliers may have been staked, but the RelayMiner is no longer running. -- Pocket does not currently have on-chain quality-of-service +- Pocket does not currently have onchain quality-of-service - Pocket does not currently have supplier jailing diff --git a/docusaurus/docs/operate/run_a_node/full_node_docker.md b/docusaurus/docs/operate/walkthroughs/full_node_docker.md similarity index 87% rename from docusaurus/docs/operate/run_a_node/full_node_docker.md rename to docusaurus/docs/operate/walkthroughs/full_node_docker.md index 7fb3005da..3fb180cf4 100644 --- a/docusaurus/docs/operate/run_a_node/full_node_docker.md +++ b/docusaurus/docs/operate/walkthroughs/full_node_docker.md @@ -44,7 +44,7 @@ There are two types of Full Nodes: ## Pocket Network Full Nodes Within Pocket Network, the role of Full Nodes is pivotal for Node Runners. These -nodes needed for off-chain entities like [RelayMiners (Suppliers)](./supplier_walkthrough.md) and +nodes needed for offchain entities like [RelayMiners (Suppliers)](./supplier_walkthrough.md) and [Gateways](./gateway_walkthrough.md), which rely on interaction with the Pocket Network blockchain for full functionality. @@ -52,11 +52,11 @@ This guide outlines how to configure, deploy and maintain Full Nodes. ## Hardware requirements -Please see the [Hardware Requirements](./hardware_requirements.md#validator--full-node) page. +Please see the [Hardware Requirements](../configs/hardware_requirements.md#validator--full-node) page. ## Docker Compose Example -Please refer to the `Deploying a Full Node` section in [Docker Compose Walkthrough](../quickstart/docker_compose_walkthrough.md) +Please refer to the `Deploying a Full Node` section in [Docker Compose Walkthrough](../walkthroughs/docker_compose_walkthrough.md) on how to deploy a Full Node using `docker-compose`. ## Kubernetes Example diff --git a/docusaurus/docs/operate/run_a_node/full_node_walkthrough.md b/docusaurus/docs/operate/walkthroughs/full_node_walkthrough.md similarity index 50% rename from docusaurus/docs/operate/run_a_node/full_node_walkthrough.md rename to docusaurus/docs/operate/walkthroughs/full_node_walkthrough.md index 2a19269fb..26aea9883 100644 --- a/docusaurus/docs/operate/run_a_node/full_node_walkthrough.md +++ b/docusaurus/docs/operate/walkthroughs/full_node_walkthrough.md @@ -1,63 +1,50 @@ --- title: Full Node Walkthrough -sidebar_position: 2 +sidebar_position: 1 --- -## Run a Full Node Using Systemd & Cosmovisor +**🧑‍🔬 detailed step-by-step instructions to get you up and running with a `Full Node` on Pocket Network ✅** -This walkthrough provides a detailed step-by-step instructions to install and -configure a Pocket Network Full Node from scratch. +:::warning This is an in-depth walkthrough -:::tip - -If you're comfortable using an automated scripts, or simply want to _copy-pasta_ a -few commands to get started, check out the [Full Node Cheat Sheet](../quickstart/full_node_cheatsheet.md). +See the [Full Node Cheat Sheet](../cheat_sheets/full_node_cheatsheet.md) if you want to just copy-pasta a few commands. ::: -- [Introduction](#introduction) -- [Pre-Requisites](#pre-requisites) -- [1. Install Dependencies](#1-install-dependencies) -- [2. Create a New User](#2-create-a-new-user) -- [3. Set Up Environment Variables for Cosmovisor](#3-set-up-environment-variables-for-cosmovisor) -- [4. Install Cosmovisor](#4-install-cosmovisor) -- [5. Install `poktrolld`](#5-install-poktrolld) -- [6. Retrieve the latest genesis file](#6-retrieve-the-latest-genesis-file) -- [7. Network Configuration](#7-network-configuration) -- [8. Set Up `systemd` Service](#8-set-up-systemd-service) -- [9. Configure your Firewall](#9-configure-your-firewall) -- [FAQ \& Troubleshooting](#faq--troubleshooting) - - [How do I check the node is accessible from another machine?](#how-do-i-check-the-node-is-accessible-from-another-machine) - - [How do I view the node status?](#how-do-i-view-the-node-status) - - [How do I view the node logs?](#how-do-i-view-the-node-logs) - - [How do I stop my node?](#how-do-i-stop-my-node) - - [How do I start my node?](#how-do-i-start-my-node) - - [How do I restart my node?](#how-do-i-restart-my-node) - - [How do I query the latest block (i.e. check the node height)?](#how-do-i-query-the-latest-block-ie-check-the-node-height) - - [How do I access my CometBFT endpoint externally?](#how-do-i-access-my-cometbft-endpoint-externally) - - [How do I check the node version?](#how-do-i-check-the-node-version) - - [How do I check the Cosmosvisor directory structure?](#how-do-i-check-the-cosmosvisor-directory-structure) - - [How do I check if an upgrade is available?](#how-do-i-check-if-an-upgrade-is-available) - - [How do I view node configuration?](#how-do-i-view-node-configuration) - -### Introduction - -This guide will help you install a Full Node for Pocket Network, from scratch, manually, -**giving you control over each step of the process**. +--- -Running a Full Node is the first step toward becoming a Validator, Supplier, or Gateway. +## Table of Contents + +- [Introduction - why run a Full Node?](#introduction---why-run-a-full-node) +- [Pre-Requisites \& Requirements](#pre-requisites--requirements) +- [Instructions](#instructions) + - [1. Install Dependencies](#1-install-dependencies) + - [2. Create a New User](#2-create-a-new-user) + - [3. Set Up Environment Variables for Cosmovisor](#3-set-up-environment-variables-for-cosmovisor) + - [4. Install Cosmovisor](#4-install-cosmovisor) + - [5. Install `poktrolld`](#5-install-poktrolld) + - [6. Retrieve the latest genesis file](#6-retrieve-the-latest-genesis-file) + - [7. Network Configuration](#7-network-configuration) + - [8. Set Up `systemd` Service](#8-set-up-systemd-service) + - [9. Configure your Firewall](#9-configure-your-firewall) + +## Introduction - why run a Full Node? -These instructions are **intended to be run on a Linux machine**. +This guide will guide through, step-by-step, through running a Full Node for Pocket Network. + +Running a Full Node is the first step toward becoming a Validator, Supplier, or Gateway. The instructions outlined here use [Cosmovisor](https://docs.cosmos.network/v0.45/run-node/cosmovisor.html) to enable automatic binary upgrades. -### Pre-Requisites +## Pre-Requisites & Requirements 1. **Linux-based System**: Preferably Debian-based distributions. 2. **Root or Sudo Access**: Administrative privileges are required. 3. **Dedicated Server or Virtual Machine**: Any provider is acceptable. +## Instructions + ### 1. Install Dependencies Update your package list and install necessary dependencies: @@ -89,7 +76,7 @@ sudo su - poktroll ### 3. Set Up Environment Variables for Cosmovisor -Create a `.poktrollrc` file and set environment variables: +Create a `.poktrollrc` file and set the following environment variables: ```bash touch ~/.poktrollrc @@ -106,15 +93,14 @@ source ~/.profile ### 4. Install Cosmovisor -:::info -Instead of following the instructions below, you can follow the [official cosmovisor installation instructions](https://docs.cosmos.network/main/build/tooling/cosmovisor#installation). -::: +**Option 1**: You can follow the official Cosmovisor installation instructions [here](https://docs.cosmos.network/main/build/tooling/cosmovisor#installation). -Download and install Cosmovisor: +**Option 2**: You can simply copy-paste the following commands to download and install Cosmovisor: ```bash mkdir -p $HOME/.local/bin COSMOVISOR_VERSION="v1.6.0" + ARCH=$(uname -m) if [ "$ARCH" = "x86_64" ]; then ARCH="amd64" @@ -130,7 +116,7 @@ source ~/.profile ### 5. Install `poktrolld` -Follow the instructions in the [CLI Installation Guide](../user_guide/install.md) page to install `poktrolld`. +Follow the instructions in the [poktrolld Installation Guide](../../tools/user_guide/poktrolld_cli.md) page to install `poktrolld`. Create a symlink of the binary so Comosvisor knows where to find it: @@ -160,7 +146,10 @@ curl -s -o $HOME/.poktroll/config/genesis.json "$GENESIS_URL" :::note You may see a message saying `genesis.json file already exists`. -This is expected since we downloaded the genesis file in Step 5. The initialization will still complete successfully and set up the required configuration files. +This is expected since we downloaded the genesis file in one of the steps above. + +The initialization will still complete successfully and set up the required configuration files. + ::: Run the following commands to configure your network environment appropriately: @@ -243,112 +232,3 @@ This may involve one or more of the following: ```bash nc -vz {EXTERNAL_IP} 26656 ``` - -### FAQ & Troubleshooting - -#### How do I check the node is accessible from another machine? - -```bash -nc -vz {EXTERNAL_IP} 26656 -``` - -#### How do I view the node status? - -```bash -sudo systemctl status cosmovisor.service -``` - -#### How do I view the node logs? - -```bash -sudo journalctl -u cosmovisor.service -f -``` - -#### How do I stop my node? - -```bash -sudo systemctl stop cosmovisor.service -``` - -#### How do I start my node? - -```bash -sudo systemctl start cosmovisor.service -``` - -#### How do I restart my node? - -```bash -sudo systemctl restart cosmovisor.service -``` - -#### How do I query the latest block (i.e. check the node height)? - -Using poktrolld: - -```bash -poktrolld query block --type=height --node http://localhost:26657 -``` - -Or, using curl: - -```bash -curl -X GET http://localhost:26657/block | jq -``` - -#### How do I access my CometBFT endpoint externally? - -The default CometBFT port is at `26657`. - -To make it accessible externally, you'll need to port all the instructions from -port `26656` on this page to port `26657`. Specifically: - -```bash -# Update your firewall -sudo ufw allow 26657/tcp - -# Alternatively, if ufw is not available, update your iptables -sudo iptables -A INPUT -p tcp --dport 26657 -j ACCEPT - -# Update your Cosmovisor config -sed -i 's|laddr = "tcp://127.0.0.1:26657"|laddr = "tcp://0.0.0.0:26657"|' $HOME/.poktroll/config/config.toml -sed -i 's|cors_allowed_origins = \[\]|cors_allowed_origins = ["*"]|' $HOME/.poktroll/config/config.toml - -# Restart the service -sudo systemctl restart cosmovisor.service - -# Test the connection -nc -vz {EXTERNAL_IP} 26657 -``` - -Learn more [here](https://docs.cometbft.com/main/rpc/). - -:::warning - -Be careful about making this public as adversarial actors may try to DDoS your node. - -::: - -#### How do I check the node version? - -```bash -poktrolld version -``` - -#### How do I check the Cosmosvisor directory structure? - -```bash -ls -la /home/poktroll/.poktroll/cosmovisor/ -``` - -#### How do I check if an upgrade is available? - -```bash -ls -la /home/poktroll/.poktroll/cosmovisor/upgrades/ -``` - -#### How do I view node configuration? - -```bash -cat /home/poktroll/.poktroll/config/config.toml -``` diff --git a/docusaurus/docs/operate/run_a_node/gateway_walkthrough.md b/docusaurus/docs/operate/walkthroughs/gateway_walkthrough.md similarity index 76% rename from docusaurus/docs/operate/run_a_node/gateway_walkthrough.md rename to docusaurus/docs/operate/walkthroughs/gateway_walkthrough.md index 5a9f0f6c6..43e49b821 100644 --- a/docusaurus/docs/operate/run_a_node/gateway_walkthrough.md +++ b/docusaurus/docs/operate/walkthroughs/gateway_walkthrough.md @@ -21,8 +21,8 @@ details on how to deploy and operate it. A PATH Gateway requires the following: -1. A staked on-chain [Application](../../protocol/actors/application.md) to pay for services. -2. An optional on-chain [Gateway](../../protocol/actors/gateway.md) to optionally proxy services. +1. A staked onchain [Application](../../protocol/actors/application.md) to pay for services. +2. An optional onchain [Gateway](../../protocol/actors/gateway.md) to optionally proxy services. 3. A connection to a [Full Node](./full_node_docker.md) to interact with the blockchain. :::tip @@ -32,11 +32,11 @@ This ensures the necessary infrastructure for blockchain communication is in pla ## Hardware requirements -Please see the [Hardware Requirements](./hardware_requirements.md#path-gateway) page. +Please see the [Hardware Requirements](../configs/hardware_requirements.md#path-gateway) page. ## Docker Compose Example -Please refer to the `Deploying a PATH Gateway` section in [Docker compose walkthrough](../quickstart/docker_compose_walkthrough#d-creating-a-gateway-deploying-a-path-gateway) +Please refer to the `Deploying a PATH Gateway` section in [Docker compose walkthrough](../../operate/walkthroughs/docker_compose_walkthrough.md) for detailed instructions on how to deploy a `PATH Gateway` using `docker-compose`. ## Kubernetes Example diff --git a/docusaurus/docs/operate/run_a_node/supplier_walkthrough.md b/docusaurus/docs/operate/walkthroughs/supplier_walkthrough.md similarity index 83% rename from docusaurus/docs/operate/run_a_node/supplier_walkthrough.md rename to docusaurus/docs/operate/walkthroughs/supplier_walkthrough.md index b119b641f..b56cc424e 100644 --- a/docusaurus/docs/operate/run_a_node/supplier_walkthrough.md +++ b/docusaurus/docs/operate/walkthroughs/supplier_walkthrough.md @@ -23,7 +23,7 @@ details on how to deploy and operate it. A RelayMiner requires the following: -1. A staked on-chain [Supplier](../../protocol/actors/supplier.md) to provide services. +1. A staked onchain [Supplier](../../protocol/actors/supplier.md) to provide services. 2. A connection to a [Full Node](./full_node_docker.md) to interact with the blockchain. :::tip @@ -33,11 +33,11 @@ This ensures the necessary infrastructure for blockchain communication is in pla ## Hardware requirements -Please see the [Hardware Requirements](./hardware_requirements.md#relayminer) page. +Please see the [Hardware Requirements](../configs/hardware_requirements.md#relayminer) page. ## Docker Compose Example -Please refer to the `Deploying a RelayMiner` section in [Docker compose walkthrough](../quickstart/docker_compose_walkthrough#b-creating-a-supplier-and-deploying-a-relayminer) +Please refer to the `Deploying a RelayMiner` section in [Docker compose walkthrough](../../operate/walkthroughs/docker_compose_walkthrough.md) for detailed instructions on how to deploy a `RelayMiner` using `docker-compose`. _TODO_DOCUMENT: Move over the relevant information from the `poktroll-docker-compose-example` repository into the docs_ diff --git a/docusaurus/docs/operate/run_a_node/validator_walkthrough.md b/docusaurus/docs/operate/walkthroughs/validator_walkthrough.md similarity index 84% rename from docusaurus/docs/operate/run_a_node/validator_walkthrough.md rename to docusaurus/docs/operate/walkthroughs/validator_walkthrough.md index 6c8842f52..753075f98 100644 --- a/docusaurus/docs/operate/run_a_node/validator_walkthrough.md +++ b/docusaurus/docs/operate/walkthroughs/validator_walkthrough.md @@ -12,7 +12,7 @@ This walkthrough provides a detailed step-by-step instructions to run a validato :::tip If you're comfortable using an automated scripts, or simply want to _copy-pasta_ a -few commands to get started, check out the [Validator Cheat Sheet](../quickstart/validator_cheatsheet.md). +few commands to get started, check out the [Validator Cheat Sheet](../cheat_sheets/validator_cheatsheet.md) instead. ::: @@ -26,4 +26,4 @@ This guide will help you install a Validator on Pocket Network, from scratch, ma ## Pre-Requisites -1. **Run a Full Node**: Make sure you have followed the [Full Node Walkthrough](../run_a_node/full_node_walkthrough.md) to install and run a Full Node first +1. **Run a Full Node**: Make sure you have followed the [Full Node Walkthrough](full_node_walkthrough.md) to install and run a Full Node first diff --git a/docusaurus/docs/protocol/actors/_category_.json b/docusaurus/docs/protocol/actors/_category_.json index 72bcbd38d..68ee2cc75 100644 --- a/docusaurus/docs/protocol/actors/_category_.json +++ b/docusaurus/docs/protocol/actors/_category_.json @@ -1,5 +1,5 @@ { - "label": "Actors", + "label": "Protocol Actors", "position": 1, "link": { "type": "generated-index", diff --git a/docusaurus/docs/protocol/actors/actors.md b/docusaurus/docs/protocol/actors/actors.md index d69371ce0..4b99768c1 100644 --- a/docusaurus/docs/protocol/actors/actors.md +++ b/docusaurus/docs/protocol/actors/actors.md @@ -6,21 +6,21 @@ sidebar_position: 1 # Pocket Network Actors - [Overview](#overview) -- [On-Chain Actors](#on-chain-actors) +- [Onchain Actors](#onchain-actors) - [Risks \& Misbehavior](#risks--misbehavior) -- [Off-Chain Actors](#off-chain-actors) +- [Offchain Actors](#offchain-actors) ## Overview -Pocket Network protocol is composed of both on-chain and off-chain actors. +Pocket Network protocol is composed of both onchain and offchain actors. -There are 3 on-chain actors: +There are 3 onchain actors: - [Applications](./application.md) - [Suppliers](./supplier.md) - [Gateways](./gateway.md) -There are 2 off-chain actors: +There are 2 offchain actors: - [RelayMiners](./relay_miner.md) - [PATH Gateways](./path_gateway.md) @@ -31,13 +31,13 @@ title: Actors --- flowchart TB - subgraph on-chain + subgraph onchain A([Application]) G([Gateway]) S([Supplier]) end - subgraph off-chain + subgraph offchain PG[PATH Gateway] RM[Relay Miner] end @@ -47,9 +47,9 @@ flowchart TB S -..- RM ``` -## On-Chain Actors +## Onchain Actors -On-Chain actors are part of the Pocket Network distributed ledger. They are the +Onchain actors are part of the Pocket Network distributed ledger. They are the _"Web3"_ part of Pocket. They can thought of as a `record`, a `registration` or a piece of `state` at a @@ -64,15 +64,15 @@ This is an open work in progress and an active area of research. ```mermaid mindmap - (On-Chain Actors) + (Onchain Actors) Gateway Risks Intentional overservicing - Off-chain only? + Offchain only? Misbehavior Low volume exploit - On-chain, there are few/any? expectations of gateway actors; basically a registry to track gateways and application delegations - On-chain, we cannot robustly distinguish requests sent by gateways from those sent by applications acting sovereignly + Onchain, there are few/any? expectations of gateway actors; basically a registry to track gateways and application delegations + Onchain, we cannot robustly distinguish requests sent by gateways from those sent by applications acting sovereignly Application Risks Insufficient funds to pay for services received @@ -87,12 +87,12 @@ mindmap Invalid/missing proofs ``` -## Off-Chain Actors +## Offchain Actors -Off-Chain actors are all the operators that make up Pocket Network. They are the +Offchain actors are all the operators that make up Pocket Network. They are the _"Web2"_ part of Pocket. They can be thought of as `servers`, `processes` or `clients`. -Off-chain actors play a key role in executing off-chain business logic that is -verified on-chain and drives on-chain state transitions. +Offchain actors play a key role in executing offchain business logic that is +verified onchain and drives onchain state transitions. diff --git a/docusaurus/docs/protocol/actors/application.md b/docusaurus/docs/protocol/actors/application.md index 56c174eff..94fff7f21 100644 --- a/docusaurus/docs/protocol/actors/application.md +++ b/docusaurus/docs/protocol/actors/application.md @@ -17,7 +17,7 @@ services available on Pocket Network as a function of volume and time. ## Schema -The on-chain representation of an `Application` can be found at [application.proto](https://github.com/pokt-network/poktroll/blob/main/proto/poktroll/application/application.proto). +The onchain representation of an `Application` can be found at [application.proto](https://github.com/pokt-network/poktroll/blob/main/proto/poktroll/application/application.proto). ## Configuration diff --git a/docusaurus/docs/protocol/actors/gateway.md b/docusaurus/docs/protocol/actors/gateway.md index 1cfbe4ebb..97286f448 100644 --- a/docusaurus/docs/protocol/actors/gateway.md +++ b/docusaurus/docs/protocol/actors/gateway.md @@ -17,7 +17,7 @@ on behalf of an [Application](./application.md). ## Schema -The on-chain representation of a `Gateway` can be found at [gateway.proto](https://github.com/pokt-network/poktroll/blob/main/proto/poktroll/gateway/gateway.proto). +The onchain representation of a `Gateway` can be found at [gateway.proto](https://github.com/pokt-network/poktroll/blob/main/proto/poktroll/gateway/gateway.proto). ## Configuration diff --git a/docusaurus/docs/protocol/actors/relay_miner.md b/docusaurus/docs/protocol/actors/relay_miner.md index 31121f362..7616a081c 100644 --- a/docusaurus/docs/protocol/actors/relay_miner.md +++ b/docusaurus/docs/protocol/actors/relay_miner.md @@ -11,7 +11,7 @@ sidebar_position: 5 ## Overview -A `RelayMiner` is a specialized operation node (not an on-chain actor) designed +A `RelayMiner` is a specialized operation node (not an onchain actor) designed for individuals to **offer services** through Pocket Network alongside a staked `Supplier`. It is responsible for proxying `RelayRequests` between a `PATH Gateway` and the supplied `Service`. diff --git a/docusaurus/docs/protocol/actors/supplier.md b/docusaurus/docs/protocol/actors/supplier.md index 4e9f500ea..5d84e11a8 100644 --- a/docusaurus/docs/protocol/actors/supplier.md +++ b/docusaurus/docs/protocol/actors/supplier.md @@ -27,7 +27,7 @@ providing services as a function of volume and time. ## Schema -The on-chain representation of a `Supplier` can be found at [supplier.proto](https://github.com/pokt-network/poktroll/blob/main/proto/poktroll/shared/supplier.proto). +The onchain representation of a `Supplier` can be found at [supplier.proto](https://github.com/pokt-network/poktroll/blob/main/proto/poktroll/shared/supplier.proto). ## Configuration @@ -36,7 +36,7 @@ Configurations to stake an `Supplier` can be found at [supplier_staking_config.m ## Modules The `Supplier` actor depends on both the [`supplier`](https://github.com/pokt-network/poktroll/tree/main/x/supplier) -and [`proof`](https://github.com/pokt-network/poktroll/tree/main/x/proof) on-chain modules. +and [`proof`](https://github.com/pokt-network/poktroll/tree/main/x/proof) onchain modules. These two modules' concerns are separated as follows: ### Supplier Module diff --git a/docusaurus/docs/protocol/governance/params.md b/docusaurus/docs/protocol/governance/params.md index a98a0546e..569a48f81 100644 --- a/docusaurus/docs/protocol/governance/params.md +++ b/docusaurus/docs/protocol/governance/params.md @@ -1,16 +1,14 @@ --- -title: Pocket Network Governance Params +title: Governance Params sidebar_position: 1 --- -# Governance Parameters +## Governance Parameters :::warning DO NOT EDIT: this file was generated by make docs_update_gov_params_page ::: -- [Access Control](#access-control) -- [Updating governance parameter values](#updating-governance-parameter-values) - [Updating this page](#updating-this-page) - [Adding a new parameter](#adding-a-new-parameter) - [Parameters](#parameters) @@ -27,27 +25,26 @@ Please follow the instructions in [this guide](../../develop/developer_guide/add ## Parameters - -|Module | Field Type | Field Name |Comment | -|-------|------------|------------|--------| -| `application` | `uint64` | `max_delegated_gateways` | max_delegated_gateways defines the maximum number of gateways that a single application can delegate to. This is used to prevent performance issues in case the relay ring signature becomes too large. | -| `application` | `cosmos.base.v1beta1.Coin` | `min_stake` | min_stake is the minimum stake in upokt that an application must have to remain staked. | -| `gateway` | `cosmos.base.v1beta1.Coin` | `min_stake` | min_stake is the minimum amount of uPOKT that a gateway must stake. | -| `proof` | `cosmos.base.v1beta1.Coin` | `proof_missing_penalty` | proof_missing_penalty is the number of tokens (uPOKT) which should be slashed from a supplier when a proof is required (either via proof_requirement_threshold or proof_missing_penalty) but is not provided. TODO_MAINNET: Consider renaming this to `proof_missing_penalty_upokt`. | -| `proof` | `double` | `proof_request_probability` | proof_request_probability is the probability of a session requiring a proof if it's cost (i.e. compute unit consumption) is below the ProofRequirementThreshold. | -| `proof` | `cosmos.base.v1beta1.Coin` | `proof_requirement_threshold` | proof_requirement_threshold is the session cost (i.e. compute unit consumption) threshold which asserts that a session MUST have a corresponding proof when its cost is equal to or above the threshold. This is in contrast to the this requirement being determined probabilistically via ProofRequestProbability. TODO_MAINNET: Consider renaming this to `proof_requirement_threshold_upokt`. | -| `proof` | `cosmos.base.v1beta1.Coin` | `proof_submission_fee` | proof_submission_fee is the number of tokens (uPOKT) which should be paid by the supplier operator when submitting a proof. This is needed to account for the cost of storing proofs on-chain and prevent spamming (i.e. sybil bloat attacks) the network with non-required proofs. TODO_MAINNET: Consider renaming this to `proof_submission_fee_upokt`. | -| `service` | `cosmos.base.v1beta1.Coin` | `add_service_fee` | The amount of uPOKT required to add a new service. This will be deducted from the signer's account balance, and transferred to the pocket network foundation. | -| `session` | `uint64` | `num_suppliers_per_session` | num_suppliers_per_session is the maximun number of suppliers per session (applicaiton:supplier pair for a given session number). | -| `shared` | `uint64` | `application_unbonding_period_sessions` | application_unbonding_period_sessions is the number of sessions that an application must wait after unstaking before their staked assets are moved to their account balance. On-chain business logic requires, and ensures, that the corresponding block count of the application unbonding period will exceed the end of its corresponding proof window close height. | -| `shared` | `uint64` | `claim_window_close_offset_blocks` | claim_window_close_offset_blocks is the number of blocks after the claim window open height, at which the claim window closes. | -| `shared` | `uint64` | `claim_window_open_offset_blocks` | claim_window_open_offset_blocks is the number of blocks after the session grace period height, at which the claim window opens. | -| `shared` | `uint64` | `compute_units_to_tokens_multiplier` | The amount of upokt that a compute unit should translate to when settling a session. DEV_NOTE: This used to be under x/tokenomics but has been moved here to avoid cyclic dependencies. | -| `shared` | `uint64` | `grace_period_end_offset_blocks` | grace_period_end_offset_blocks is the number of blocks, after the session end height, during which the supplier can still service payable relays. Suppliers will need to recreate a claim for the previous session (if already created) to get paid for the additional relays. | -| `shared` | `uint64` | `num_blocks_per_session` | num_blocks_per_session is the number of blocks between the session start & end heights. | -| `shared` | `uint64` | `proof_window_close_offset_blocks` | proof_window_close_offset_blocks is the number of blocks after the proof window open height, at which the proof window closes. | -| `shared` | `uint64` | `proof_window_open_offset_blocks` | proof_window_open_offset_blocks is the number of blocks after the claim window close height, at which the proof window opens. | -| `shared` | `uint64` | `supplier_unbonding_period_sessions` | supplier_unbonding_period_sessions is the number of sessions that a supplier must wait after unstaking before their staked assets are moved to their account balance. On-chain business logic requires, and ensures, that the corresponding block count of the unbonding period will exceed the end of any active claim & proof lifecycles. | -| `supplier` | `cosmos.base.v1beta1.Coin` | `min_stake` | min_stake is the minimum amount of uPOKT that a supplier must stake to be included in network sessions and remain staked. | -| `tokenomics` | `string` | `dao_reward_address` | dao_reward_address is the address to which mint_allocation_dao percentage of the minted tokens are at the end of claim settlement. | -| `tokenomics` | `MintAllocationPercentages` | `mint_allocation_percentages` | mint_allocation_percentages represents the distribution of newly minted tokens, at the end of claim settlement, as a result of the Global Mint TLM. | +| Module | Field Type | Field Name | Comment | +| ------------- | --------------------------- | --------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `application` | `uint64` | `max_delegated_gateways` | max_delegated_gateways defines the maximum number of gateways that a single application can delegate to. This is used to prevent performance issues in case the relay ring signature becomes too large. | +| `application` | `cosmos.base.v1beta1.Coin` | `min_stake` | min_stake is the minimum stake in upokt that an application must have to remain staked. | +| `gateway` | `cosmos.base.v1beta1.Coin` | `min_stake` | min_stake is the minimum amount of uPOKT that a gateway must stake. | +| `proof` | `cosmos.base.v1beta1.Coin` | `proof_missing_penalty` | proof_missing_penalty is the number of tokens (uPOKT) which should be slashed from a supplier when a proof is required (either via proof_requirement_threshold or proof_missing_penalty) but is not provided. TODO_MAINNET: Consider renaming this to `proof_missing_penalty_upokt`. | +| `proof` | `double` | `proof_request_probability` | proof_request_probability is the probability of a session requiring a proof if it's cost (i.e. compute unit consumption) is below the ProofRequirementThreshold. | +| `proof` | `cosmos.base.v1beta1.Coin` | `proof_requirement_threshold` | proof_requirement_threshold is the session cost (i.e. compute unit consumption) threshold which asserts that a session MUST have a corresponding proof when its cost is equal to or above the threshold. This is in contrast to the this requirement being determined probabilistically via ProofRequestProbability. TODO_MAINNET: Consider renaming this to `proof_requirement_threshold_upokt`. | +| `proof` | `cosmos.base.v1beta1.Coin` | `proof_submission_fee` | proof_submission_fee is the number of tokens (uPOKT) which should be paid by the supplier operator when submitting a proof. This is needed to account for the cost of storing proofs onchain and prevent spamming (i.e. sybil bloat attacks) the network with non-required proofs. TODO_MAINNET: Consider renaming this to `proof_submission_fee_upokt`. | +| `service` | `cosmos.base.v1beta1.Coin` | `add_service_fee` | The amount of uPOKT required to add a new service. This will be deducted from the signer's account balance, and transferred to the pocket network foundation. | +| `session` | `uint64` | `num_suppliers_per_session` | num_suppliers_per_session is the maximun number of suppliers per session (application:supplier pair for a given session number). | +| `shared` | `uint64` | `application_unbonding_period_sessions` | application_unbonding_period_sessions is the number of sessions that an application must wait after unstaking before their staked assets are moved to their account balance. Onchain business logic requires, and ensures, that the corresponding block count of the application unbonding period will exceed the end of its corresponding proof window close height. | +| `shared` | `uint64` | `claim_window_close_offset_blocks` | claim_window_close_offset_blocks is the number of blocks after the claim window open height, at which the claim window closes. | +| `shared` | `uint64` | `claim_window_open_offset_blocks` | claim_window_open_offset_blocks is the number of blocks after the session grace period height, at which the claim window opens. | +| `shared` | `uint64` | `compute_units_to_tokens_multiplier` | The amount of upokt that a compute unit should translate to when settling a session. DEV_NOTE: This used to be under x/tokenomics but has been moved here to avoid cyclic dependencies. | +| `shared` | `uint64` | `grace_period_end_offset_blocks` | grace_period_end_offset_blocks is the number of blocks, after the session end height, during which the supplier can still service payable relays. Suppliers will need to recreate a claim for the previous session (if already created) to get paid for the additional relays. | +| `shared` | `uint64` | `num_blocks_per_session` | num_blocks_per_session is the number of blocks between the session start & end heights. | +| `shared` | `uint64` | `proof_window_close_offset_blocks` | proof_window_close_offset_blocks is the number of blocks after the proof window open height, at which the proof window closes. | +| `shared` | `uint64` | `proof_window_open_offset_blocks` | proof_window_open_offset_blocks is the number of blocks after the claim window close height, at which the proof window opens. | +| `shared` | `uint64` | `supplier_unbonding_period_sessions` | supplier_unbonding_period_sessions is the number of sessions that a supplier must wait after unstaking before their staked assets are moved to their account balance. Onchain business logic requires, and ensures, that the corresponding block count of the unbonding period will exceed the end of any active claim & proof lifecycles. | +| `supplier` | `cosmos.base.v1beta1.Coin` | `min_stake` | min_stake is the minimum amount of uPOKT that a supplier must stake to be included in network sessions and remain staked. | +| `tokenomics` | `string` | `dao_reward_address` | dao_reward_address is the address to which mint_allocation_dao percentage of the minted tokens are at the end of claim settlement. | +| `tokenomics` | `MintAllocationPercentages` | `mint_allocation_percentages` | mint_allocation_percentages represents the distribution of newly minted tokens, at the end of claim settlement, as a result of the Global Mint TLM. | diff --git a/docusaurus/docs/protocol/primitives/claim_and_proof_lifecycle.md b/docusaurus/docs/protocol/primitives/claim_and_proof_lifecycle.md index 7617b5ce7..131afef18 100644 --- a/docusaurus/docs/protocol/primitives/claim_and_proof_lifecycle.md +++ b/docusaurus/docs/protocol/primitives/claim_and_proof_lifecycle.md @@ -15,8 +15,8 @@ to all readers. ::: - [Introduction](#introduction) -- [Session Windows \& On-Chain Parameters](#session-windows--on-chain-parameters) - - [References:](#references) +- [Session Windows \& Onchain Parameters](#session-windows--onchain-parameters) + - [References:](#references) - [Claim Expiration](#claim-expiration) - [Session](#session) - [Session Duration](#session-duration) @@ -72,7 +72,7 @@ sequenceDiagram participant PN as Pocket Network
(Distributed Ledger) loop Session Duration - note over A,S: off-chain + note over A,S: offchain A ->> +S: Relay Request S ->> S: Insert Leaf into
Sparse Merkle Sum Trie S ->> -A: Relay Response @@ -93,7 +93,7 @@ sequenceDiagram end ``` -## Session Windows & On-Chain Parameters +## Session Windows & Onchain Parameters _TODO(@bryanchriswhite): Add message distribution offsets/windows to this picture._ @@ -159,7 +159,7 @@ See [Session](./session.md) for more details. ### Session Duration -After a session is initiated, the majority of it is handled `off-chain`, +After a session is initiated, the majority of it is handled `offchain`, as `Applications` make RPC requests (`relays`) to the `Supplier`. ### Session End @@ -176,16 +176,16 @@ timeline CreateClaim
(Supplier) : Wait for Claim Window to open : Submit CreateClaim Transaction
(root, sum, session, app, supplier, service, etc...) - : Claim stored on-chain + : Claim stored onchain SubmitProof
(Supplier) : Wait for Proof Window to open - : Retrieve seed (entropy) from on-chain data (block hash) + : Retrieve seed (entropy) from onchain data (block hash) : Generate Merkle Proof for path in SMST based on seed : Submit SubmitProof Transaction
(session, merkle proof, leaf, etc...) - : Proof stored on-chain + : Proof stored onchain Proof Validation
(Protocol) - : Retrieve on-chain Claims that need to be settled - : Retrieve corresponding on-chain Proof for every Claim + : Retrieve onchain Claims that need to be settled + : Retrieve corresponding onchain Proof for every Claim : Validate leaf difficulty : Validate Merkle Proof : Validate Leaf Signature @@ -195,7 +195,7 @@ timeline ## Claim -A `Claim` is a structure submitted on-chain by a `Supplier` claiming to have done +A `Claim` is a structure submitted onchain by a `Supplier` claiming to have done some amount of work in servicing `relays` for `Application`. Exactly one claim exists for every `(Application, Supplier, Session)`. @@ -209,13 +209,13 @@ that were necessary to service that request. | Type | Description | | ---------------------------------------------------------------------------------------------------- | ------------------------------------------------------- | -| [`Claim`](https://github.com/pokt-network/poktroll/blob/main/proto/poktroll/proof/claim.proto) | A serialized version of the `Claim` is stored on-chain. | -| [`MsgCreateClaim`](https://github.com/pokt-network/poktroll/blob/main/proto/poktroll/proof/tx.proto) | Submitted by a `Supplier` to store a claim `on-chain`. | +| [`Claim`](https://github.com/pokt-network/poktroll/blob/main/proto/poktroll/proof/claim.proto) | A serialized version of the `Claim` is stored onchain. | +| [`MsgCreateClaim`](https://github.com/pokt-network/poktroll/blob/main/proto/poktroll/proof/tx.proto) | Submitted by a `Supplier` to store a claim `onchain`. | ### CreateClaim Validation When the network receives a [`MsgCreateClaim`](#TODO_link_to_MsgCreateClaim) message, before the claim is persisted -on-chain, it MUST be validated: +onchain, it MUST be validated: ```mermaid stateDiagram-v2 @@ -255,7 +255,7 @@ Validate_Claim --> [*] validation ([`MsgCreateClaim#ValidateBasic()`](https://github.com/pokt-network/poktroll/blob/main/x/proof/types/message_create_claim.go)) - Session header validation ([diagram](#session-header-validation) / [`msgServer#queryAndValidateSessionHeader()`](https://github.com/pokt-network/poktroll/blob/main/x/proof/keeper/session.go)) -- On-chain claim window +- Onchain claim window validation ([diagram](#TODO) / [`msgServer#validateClaimWindow()`](https://github.com/pokt-network/poktroll/blob/main/x/proof/keeper/session.go)) ### Claim Window @@ -267,11 +267,11 @@ or too late, it will be rejected by the protocol. If a `Supplier` fails to submit a `Claim` during the Claim Window, it will forfeit any potential rewards it could earn in exchange for the work done. -See [Session Windows & On-Chain Parameters](#session-windows--on-chain-parameters) for more details. +See [Session Windows & OnChain Parameters](#session-windows--onchain-parameters) for more details. ## Proof -A `Proof` is a structure submitted on-chain by a `Supplier` containing a Merkle +A `Proof` is a structure submitted onchain by a `Supplier` containing a Merkle Proof to a single pseudo-randomly selected leaf from the corresponding `Claim`. At most one `Proof` exists for every `Claim`. @@ -283,13 +283,13 @@ rewarded for the work done. | Type | Description | | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| [`Proof`](https://github.com/pokt-network/poktroll/blob/main/proto/poktroll/proof/proof.proto) | A serialized version of the `Proof` is stored on-chain. | -| [`MsgSubmitProof`](https://github.com/pokt-network/poktroll/blob/main/proto/poktroll/proof/tx.proto) | Submitted by a `Supplier` to store a proof `on-chain`. If the `Proof` is invalid, or if there is no corresponding `Claim` for the `Proof`, the transaction will be rejected. | +| [`Proof`](https://github.com/pokt-network/poktroll/blob/main/proto/poktroll/proof/proof.proto) | A serialized version of the `Proof` is stored onchain. | +| [`MsgSubmitProof`](https://github.com/pokt-network/poktroll/blob/main/proto/poktroll/proof/tx.proto) | Submitted by a `Supplier` to store a proof `onchain`. If the `Proof` is invalid, or if there is no corresponding `Claim` for the `Proof`, the transaction will be rejected. | ### SubmitProof Validation When the network receives a [`MsgSubmitProof`](#TODO_link_to_MsgSubmitProof) message, before the proof is accepted -on-chain, it MUST be validated: +onchain, it MUST be validated: ```mermaid stateDiagram-v2 @@ -361,15 +361,15 @@ If a proof is required (as determined by [Probabilistic Proofs](probabilistic_pr submit a `Proof` during the Proof Window, the Claim will expire, and the supplier will forfeit rewards for the claimed work done. See [Claim Expiration](#claim-expiration) for more. -See [Session Windows & On-Chain Parameters](#session-windows--on-chain-parameters) for more details. +See [Session Windows & Onchain Parameters](#session-windows--onchain-parameters) for more details. ## Proof Security In addition to basic validation as part of processing `SubmitProof` to determine -whether or not the `Proof` should be stored on-chain, there are several additional +whether or not the `Proof` should be stored onchain, there are several additional deep cryptographic validations needed: -1. `Merkle Leaf Validation`: Proof of the off-chain `Supplier`/`Application` interaction during the Relay request & response. +1. `Merkle Leaf Validation`: Proof of the offchain `Supplier`/`Application` interaction during the Relay request & response. 2. `Merkle Proof Selection`: Proof of the amount of work done by the `Supplier` during the `Session`. :::note @@ -387,7 +387,7 @@ After the leaf is validated, two things happen: 1. The stake of `Application` signing the `Relay Request` is decreased through burn 2. The account balance of the `Supplier` owner is increased through mint -The validation on these signatures is done on-chain as part of `Proof Validation`. +The validation on these signatures is done onchain as part of `Proof Validation`. ```mermaid graph LR @@ -415,9 +415,9 @@ graph LR ### Merkle Proof Selection Before the leaf itself is validated, we need to make sure if there is a valid -Merkle Proof for the associated pseudo-random path computed on-chain. +Merkle Proof for the associated pseudo-random path computed onchain. -Since the path that needs to be proven uses an on-chain seed after the `Claim` +Since the path that needs to be proven uses an onchain seed after the `Claim` has been submitted, it is impossible to know the path in advance. Assume a collision resistant hash function `H` that takes a the `block header hash` @@ -684,7 +684,7 @@ state Validate_Session_Header { Get_Session --> if_get_session_error if_get_session_error --> Session_Header_Validation_Error: get session error if_get_session_error --> if_session_id_mismatch - if_session_id_mismatch --> Session_Header_Validation_Error: claim & on-chain session ID mismatch + if_session_id_mismatch --> Session_Header_Validation_Error: claim & onchain session ID mismatch if_session_id_mismatch --> if_supplier_found if_supplier_found --> Session_Header_Validation_Error: claim supplier not in session if_supplier_found --> [*] @@ -825,7 +825,7 @@ state Validate_Relay_Response { state if_supplier_sig_malformed <> [*] --> if_supplier_pubkey_exists - if_supplier_pubkey_exists --> Relay_Response_Signature_Error: no supplier public key on-chain + if_supplier_pubkey_exists --> Relay_Response_Signature_Error: no supplier public key onchain if_supplier_pubkey_exists --> if_supplier_sig_malformed if_supplier_sig_malformed --> Relay_Response_Signature_Error: cannot unmarshal supplier (response) signature } diff --git a/docusaurus/docs/protocol/primitives/gateways.md b/docusaurus/docs/protocol/primitives/gateways.md index b44d0a5da..4d666ddea 100644 --- a/docusaurus/docs/protocol/primitives/gateways.md +++ b/docusaurus/docs/protocol/primitives/gateways.md @@ -22,13 +22,13 @@ to all readers. - [Application -\> Gateway Delegation](#application---gateway-delegation) - [Relay Signatures](#relay-signatures) - [Delegating Application Example](#delegating-application-example) -- [\[WIP\] Gateway Off-Chain Operations](#wip-gateway-off-chain-operations) +- [\[WIP\] Gateway Offchain Operations](#wip-gateway-offchain-operations) ## Introduction The [Gateway Actor](../../protocol/actors/gateway.md) section covers what a Gateway is. Recall that it is a permissionless protocol actor to whom the Application can -**optionally** delegate on-chain trust in order to perform off-chain operations. +**optionally** delegate onchain trust in order to perform offchain operations. This section aims to cover the cryptographic aspects of Gateway interactions, trust delegation, and how they fit into the Pocket Network protocol. @@ -42,22 +42,22 @@ There are three modes of operation to interact with the Suppliers on the network 3. **Gateway Application**: Client trusts Gateway to sign relays on behalf of its Application For the purposes of this discussion, it is important to note that an `Application` -and `Gateway` are on-chain actors/records that stake POKT to participate in the +and `Gateway` are onchain actors/records that stake POKT to participate in the network. The term `Client` is used to represent an application running on a user's device, such as a smartphone or a web browser. -The goal of Gateways is to enable free-market off-chain economics tie into -on-chain interactions. +The goal of Gateways is to enable free-market offchain economics tie into +onchain interactions. ### Sovereign Application -A Sovereign Application is one where the `Client` manages its own on-chain `Application` +A Sovereign Application is one where the `Client` manages its own onchain `Application` and interacts with the Pocket Supplier Network directly. The Application is responsible for: - Protecting it's own `Application` private key on the `Client` -- Maintaining and updating it's own on-chain stake to pay for `Supplier` services +- Maintaining and updating it's own onchain stake to pay for `Supplier` services - Determining which `Supplier` to use from the available list in the session ```mermaid @@ -88,13 +88,13 @@ sequenceDiagram A Delegated Application is one where an `Application` delegates to one or more `Gateways`. Agreements (authentication, payments, etc) between the `Client` and -`Gateway` are then managed off-chain, but payment for the on-chain `Supplier` +`Gateway` are then managed offchain, but payment for the onchain `Supplier` services still comes from the `Application`s stake. The Application is responsible for: - Protecting it's own `Application` private key somewhere in hot/cold storage -- Maintaining and updating it's own on-chain stake to pay for `Supplier` services +- Maintaining and updating it's own onchain stake to pay for `Supplier` services - Managing, through (un)delegation, which Gateway(s) can sign requests on ts behalf The Gateway is responsible for: @@ -138,10 +138,10 @@ sequenceDiagram ### Gateway Application A Gateway Application is one where the `Gateway` takes full onus, on behalf of -`Client`s to manage all on-chain `Application` interactions to access the +`Client`s to manage all onchain `Application` interactions to access the Pocket `Supplier` Network. Agreements (authentication, payments, etc) between -the `Client` and `Gateway` are then managed off-chain, and payment for the -on-chain `Supplier` services will comes from the `Application`s stake, which +the `Client` and `Gateway` are then managed offchain, and payment for the +onchain `Supplier` services will comes from the `Application`s stake, which is now maintained by the `Gateway`. It is responsible for: @@ -149,7 +149,7 @@ It is responsible for: The Gateway is responsible for: - Protecting it's own `Application` private key somewhere in hot/cold storage -- Maintaining and updating it's own on-chain stake to pay for `Supplier` services +- Maintaining and updating it's own onchain stake to pay for `Supplier` services - Providing tooling and infrastructure to coordinate with the `Client` - Determining which `Supplier` to use from the available list in the session @@ -188,7 +188,7 @@ sequenceDiagram An Application that chooses to delegate trust to a gateway by submitting a one-time `DelegateMsg` transaction. Once this is done, the `Gateway` will be able to sign relay requests on behalf of the `Application` that'll use the -`Application`s on-chain stake to pay for service to access the Pocket `Supplier` Network. +`Application`s onchain stake to pay for service to access the Pocket `Supplier` Network. This can be done any number of times, so an `Application` can delegate to multiple `Gateways` simultaneously. @@ -329,9 +329,9 @@ stateDiagram-v2 sigCheck --> Invalid: No ``` -## [WIP] Gateway Off-Chain Operations +## [WIP] Gateway Offchain Operations -Gateways can design and manage off-chain operations to coordinate with the `Client` +Gateways can design and manage offchain operations to coordinate with the `Client` including by not limited to: - Dashboards & user management @@ -340,7 +340,7 @@ including by not limited to: - Providing altruist backups - QoS (SLA, SLO) guarantees - Prove & validate data integrity -- Provide additional off-chain services +- Provide additional offchain services - Guarantee certain SLAs and SLOs -- Manage on-chain Pocket logic (account top-ups, etc...) +- Manage onchain Pocket logic (account top-ups, etc...) - Etc... diff --git a/docusaurus/docs/protocol/primitives/probabilistic_proofs.md b/docusaurus/docs/protocol/primitives/probabilistic_proofs.md index 5b7b8d169..6fedbffa0 100644 --- a/docusaurus/docs/protocol/primitives/probabilistic_proofs.md +++ b/docusaurus/docs/protocol/primitives/probabilistic_proofs.md @@ -17,7 +17,7 @@ document as a reference for writing this. ## Introduction Probabilistic Proofs is the solution to solving for the long tail of low relay -sessions that can cause on-chain bloat. +sessions that can cause onchain bloat. This complements the design of [Relay Mining](./relay_mining.md) to solve for all scenarios. diff --git a/docusaurus/docs/protocol/primitives/relay_mining.md b/docusaurus/docs/protocol/primitives/relay_mining.md index e15edf50a..6bf9c2f6e 100644 --- a/docusaurus/docs/protocol/primitives/relay_mining.md +++ b/docusaurus/docs/protocol/primitives/relay_mining.md @@ -16,7 +16,7 @@ the [relay mining paper](https://arxiv.org/abs/2305.10672) as a reference for wr ## Introduction -tl;dr Modulate on-chain difficulty up (similar to Bitcoin) so we can accommodate +tl;dr Modulate onchain difficulty up (similar to Bitcoin) so we can accommodate surges in relays and have no upper limit on the number of relays per session. Relay Mining is the only solution in Web3 to incentivize read-only requests @@ -154,8 +154,8 @@ sequenceDiagram Note over proto_part,proto_actor: ref: Interaction (other seq. diagram) - proto_part--xproto_actor: An action of protocol participant updates on-chain state of protocol actor - proto_part-xproto_actor: An action of protocol participant references on-chain state of protocol actor + proto_part--xproto_actor: An action of protocol participant updates onchain state of protocol actor + proto_part-xproto_actor: An action of protocol participant references onchain state of protocol actor break Time gap proto_actor->>proto_actor: Protocol actor performs some independent action diff --git a/docusaurus/docs/protocol/primitives/session.md b/docusaurus/docs/protocol/primitives/session.md index 1dedb2cc8..ac0b1525c 100644 --- a/docusaurus/docs/protocol/primitives/session.md +++ b/docusaurus/docs/protocol/primitives/session.md @@ -15,5 +15,5 @@ TODO_DOCUMENT(@Olshansk): This is just a placeholder. Use the session part of th ## Introduction -Sessions are an on-chain mechanism to pair `Application`s to `Supplier`s for a -period of time to service relays off-chain. +Sessions are an onchain mechanism to pair `Application`s to `Supplier`s for a +period of time to service relays offchain. diff --git a/docusaurus/docs/protocol/tokenomics/token_logic_modules.md b/docusaurus/docs/protocol/tokenomics/token_logic_modules.md index 917d808c9..3dcb8e2e7 100644 --- a/docusaurus/docs/protocol/tokenomics/token_logic_modules.md +++ b/docusaurus/docs/protocol/tokenomics/token_logic_modules.md @@ -66,13 +66,13 @@ by the supplier adheres to the optimistic maxIA set per the limits of the Relay Pocket Network can be seen as a probabilistic, optimistic permissionless multi-tenant rate limiter. This works by putting funds in escrow, burning it after work is done, and putting optimistic limits -in place whose work volume is proven on-chain. +in place whose work volume is proven onchain. ::: Suppliers always have the option to over-service an Application (**i.e. do free work**), in order to ensure high quality service in the network. This may lead to offchain -reputation benefits (e.g. Gateways favoring them), but suppliers' on-chain rewards +reputation benefits (e.g. Gateways favoring them), but suppliers' onchain rewards are always limited by the cumulative amounts Applications' stakes (at session start; per service) and the number of Suppliers in the session. @@ -131,7 +131,7 @@ to only be able to stake for EXACTLY ONE service. :::note TODO_POST_MAINNET: After the Shannon upgrade, the team at Grove has a lot of ideas -related to on-chain reputation, [supplier overlay networks](https://www.notion.so/buildwithgrove/Off-chain-Application-Stake-Tracking-6a8bebb107db4f7f9dc62cbe7ba555f7?pvs=4), and +related to onchain reputation, [supplier overlay networks](https://www.notion.so/buildwithgrove/Off-chain-Application-Stake-Tracking-6a8bebb107db4f7f9dc62cbe7ba555f7?pvs=4), and much more, all of which is out of scope for the initial implementation. ::: @@ -418,7 +418,7 @@ Later, PNF, on behalf of the DAO, will review the reimbursement requests and app ```mermaid --- -title: "Off-Chain Reimbursement Request Flow" +title: "Offchain Reimbursement Request Flow" --- sequenceDiagram participant PNF as Pocket Network Foundation @@ -449,10 +449,10 @@ The application `PAYS` the supplier for work done (i.e. Mint=Burn). The application `GETS REIMBURSED` for the inflation (i.e. Global Mint). This will require staked Applications (sovereign or those managed by Gateways) to periodically -"top up" their balances to cover not only the on-chain costs/burn, but also the inflation +"top up" their balances to cover not only the onchain costs/burn, but also the inflation until it is reimbursed by the DAO/PNF. -#### Will there be on-chain enforcement of how Applications get reimbursed? +#### Will there be onchain enforcement of how Applications get reimbursed? _tl;dr Unfortunately, no._ @@ -460,11 +460,11 @@ The Applications will indeed have to trust the DAO/PNF to reimburse them. The following is an example of the approach PNF could take. 1. Assume Application staking by Gateways is permissionless and done. -2. Applications pay on-chain for costs and inflation +2. Applications pay onchain for costs and inflation 3. PNF KYCs Gateways who seek reimbursement. 4. Gateways that don't go through the KYC process cover the cost of inflation out of pocket. -5. A script that retrieves on-chain reimbursement requests will be written that +5. A script that retrieves onchain reimbursement requests will be written that automatically send funds to previously KYCed gateways 6. The script above, and the trust that it'll be maintained, updated and executed relies in the Gateways' trust in the PNF. @@ -473,7 +473,7 @@ This is similar, in spirit, but still an improvement on top of the trust between Gateways and PNF in Morse today in order to: - Get access to the limited supply of Gateway keys -- Gateways paying the on-chain burn manually +- Gateways paying the onchain burn manually #### How does this solution scale for Sovereign Applications? @@ -485,7 +485,7 @@ _Read more about about their differences and similarities [here](./../../protoco #### What kind of resources are needed to scale and automate reimbursement? -This will be a combination of on-chain and off-chain resources (EventReader, TxSubmission, Accounting, etc...). In particular: +This will be a combination of onchain and offchain resources (EventReader, TxSubmission, Accounting, etc...). In particular: -- **On-chain**: load testing will show if events take up too much on-chain space. This is unlikely to be an issue relative to proofs. -- **Off-chain**: PNF Directors are aware and approve of the operational overhead this will require. This will require some off-chain scripting to automate the process. +- **Onchain**: load testing will show if events take up too much onchain space. This is unlikely to be an issue relative to proofs. +- **Offchain**: PNF Directors are aware and approve of the operational overhead this will require. This will require some offchain scripting to automate the process. diff --git a/docusaurus/docs/protocol/upgrades/upgrade_procedure.md b/docusaurus/docs/protocol/upgrades/upgrade_procedure.md deleted file mode 100644 index 2e0998251..000000000 --- a/docusaurus/docs/protocol/upgrades/upgrade_procedure.md +++ /dev/null @@ -1,129 +0,0 @@ ---- -title: Upgrade procedure -sidebar_position: 2 ---- - -# Upgrade procedure - -:::warning -This page describes the protocol upgrade process, which is internal to the protocol team. If you're interested in upgrading your Pocket Network node, please check our [releases page](https://github.com/pokt-network/poktroll/releases) for upgrade instructions and changelogs. -::: - -- [When is an Upgrade Warranted?](#when-is-an-upgrade-warranted) -- [Implementing the Upgrade](#implementing-the-upgrade) -- [Writing an Upgrade Transaction](#writing-an-upgrade-transaction) -- [Submitting the upgrade on-chain](#submitting-the-upgrade-on-chain) -- [Testing the Upgrade](#testing-the-upgrade) - - [LocalNet](#localnet) - - [DevNet](#devnet) - - [TestNet](#testnet) - - [Mainnet](#mainnet) - -## Overview - -When a consensus-breaking change is made to the protocol, we must carefully evaluate and implement an upgrade path that allows existing nodes to transition safely from one software version to another without disruption. This process involves several key steps: - -1. **Proposal**: The DAO drafts an upgrade proposal using our off-chain governance system. -2. **Implementation**: The proposed changes are implemented in the codebase. -3. **Testing**: Thorough testing of the proposed changes is conducted in devnet and testnet environments before mainnet deployment. -4. **Announcement**: Upon successful testing, we announce the upgrade through our social media channels and community forums. -5. **Deployment**: An upgrade transaction is sent to the network, allowing node operators using [Cosmovisor](../../operate/run_a_node/full_node_walkthrough.md) to automatically upgrade their nodes at the specified block height. -6. **Monitoring**: Post-deployment, we closely monitor the network to ensure everything functions as expected. - -## When is an Upgrade Warranted? - -An upgrade is necessary whenever there's an API, State Machine, or other Consensus breaking change in the version we're about to release. - -## Implementing the Upgrade - -1. When a new version includes a consensus-breaking change, plan for the next protocol upgrade: - - If there's a change to a specific module, bump that module's consensus version. - - Note any potential parameter changes to include in the upgrade. -2. Create a new upgrade in `app/upgrades`: - - Refer to `historical.go` for past upgrades and examples. - - Consult Cosmos-sdk documentation on upgrades for additional guidance [here](https://docs.cosmos.network/main/build/building-apps/app-upgrade) and [here](https://docs.cosmos.network/main/build/modules/upgrade). - -## Writing an Upgrade Transaction - -An upgrade transaction includes a [Plan](https://github.com/cosmos/cosmos-sdk/blob/0fda53f265de4bcf4be1a13ea9fad450fc2e66d4/x/upgrade/proto/cosmos/upgrade/v1beta1/upgrade.proto#L14) with specific details about the upgrade. This information helps schedule the upgrade on the network and provides necessary data for automatic upgrades via `Cosmovisor`. A typical upgrade transaction will look like the following: - -```json -{ - "body": { - "messages": [ - { - "@type": "/cosmos.upgrade.v1beta1.MsgSoftwareUpgrade", - "authority": "pokt10d07y265gmmuvt4z0w9aw880jnsr700j8yv32t", - "plan": { - "name": "v0.0.4", - "height": "30", - "info": "{\"binaries\":{\"linux/amd64\":\"https://github.com/pokt-network/poktroll/releases/download/v0.0.4/poktroll_linux_amd64.tar.gz?checksum=sha256:49d2bcea02702f3dcb082054dc4e7fdd93c89fcd6ff04f2bf50227dacc455638\",\"linux/arm64\":\"https://github.com/pokt-network/poktroll/releases/download/v0.0.4/poktroll_linux_arm64.tar.gz?checksum=sha256:698f3fa8fa577795e330763f1dbb89a8081b552724aa154f5029d16a34baa7d8\",\"darwin/amd64\":\"https://github.com/pokt-network/poktroll/releases/download/v0.0.4/poktroll_darwin_amd64.tar.gz?checksum=sha256:5ecb351fb2f1fc06013e328e5c0f245ac5e815c0b82fb6ceed61bc71b18bf8e9\",\"darwin/arm64\":\"https://github.com/pokt-network/poktroll/releases/download/v0.0.4/poktroll_darwin_arm64.tar.gz?checksum=sha256:a935ab83cd770880b62d6aded3fc8dd37a30bfd15b30022e473e8387304e1c70\"}}" - } - } - ] - } -} -``` - -- `name`: Name of the upgrade. It should match the `VersionName` of `upgrades.Upgrade`. -- `height`: The height at which an upgrade should be executed and the node will be restarted. -- `info`: While this field can theoretically contain any information about the upgrade, in practice, `cosmovisor`uses it to obtain information about the binaries. When`cosmovisor` is configured to automatically download binaries, it will pull the binary from the link provided in this field and perform a hash verification (which is optional). - -## Submitting the upgrade on-chain - -The `MsgSoftwareUpgrade` can be submitted using the following command: - -```bash -poktrolld tx authz exec PATH_TO_TRANSACTION_JSON --from pnf -``` - -If the transaction has been accepted, upgrade plan can be viewed with this command: - -```bash -poktrolld query upgrade plan -``` - -## Testing the Upgrade - -:::warning -Note that for local testing, `cosmovisor` won't pull the binary from the info field. -::: - -### LocalNet - -LocalNet currently does not support `cosmovisor` and automatic upgrades. However, we have provided scripts to facilitate local testing in the `tools/scripts/upgrades` directory: - -1. Modify `tools/scripts/upgrades/authz_upgrade_tx_example_v0.0.4_height_30.json` to reflect the name of the upgrade and the height at which it should be scheduled. - -2. Check and update the `tools/scripts/upgrades/cosmovisor-start-node.sh` to point to the correct binaries: - - - The old binary should be compiled to work before the upgrade. - - The new binary should contain the upgrade logic to be executed immediately after the node is started using the new binary. - -3. Run `bash tools/scripts/upgrades/cosmovisor-start-node.sh` to wipe the `~/.poktroll` directory and place binaries in the correct locations. - -4. Execute the transaction as shown in [Submitting the upgrade on-chain](#submitting-the-upgrade-on-chain) section above. - -### DevNet - -DevNets currently do not support `cosmovisor`. - -We use Kubernetes to manage software versions, including validators. Introducing another component to manage versions would be complex, requiring a re-architecture of our current solution to accommodate this change. - -### TestNet - -We currently deploy TestNet validators using Kubernetes with helm charts, which prevents us from managing the validator with `cosmovisor`. We do not control what other TestNet participants are running. However, if participants have deployed their nodes using the [cosmovisor guide](../../operate/run_a_node/full_node_walkthrough.md), their nodes will upgrade automatically. - -Until we transition to [cosmos-operator](https://github.com/strangelove-ventures/cosmos-operator), which supports scheduled upgrades (although not fully automatic like `cosmovisor`), we need to manually manage the process: - -1. Estimate when the upgrade height will be reached. -2. When validator node(s) stop due to an upgrade, manually perform an ArgoCD apply and clean up old resources. -3. Monitor validator node(s) as they start and begin producing blocks. - -:::tip -If you are a member of Grove, you can find the instructions to access the infrastructure [here](https://www.notion.so/buildwithgrove/How-to-re-genesis-a-Shannon-TestNet-a6230dd8869149c3a4c21613e3cfad15?pvs=4). -::: - -### Mainnet - -The Mainnet upgrade process is to be determined. We aim to develop and implement improved tooling for this environment. diff --git a/docusaurus/docs/explore/_category_.json b/docusaurus/docs/tools/_category_.json similarity index 100% rename from docusaurus/docs/explore/_category_.json rename to docusaurus/docs/tools/_category_.json diff --git a/docusaurus/docs/tools/endpoints/_category_.json b/docusaurus/docs/tools/endpoints/_category_.json new file mode 100644 index 000000000..42be32e63 --- /dev/null +++ b/docusaurus/docs/tools/endpoints/_category_.json @@ -0,0 +1,8 @@ +{ + "label": "RPC Endpoints", + "position": 2, + "link": { + "type": "generated-index", + "description": "RPC Endpoints" + } +} diff --git a/docusaurus/docs/explore/rpc.md b/docusaurus/docs/tools/endpoints/shannon_rpc.md similarity index 89% rename from docusaurus/docs/explore/rpc.md rename to docusaurus/docs/tools/endpoints/shannon_rpc.md index 5a407e2ce..b85486e4c 100644 --- a/docusaurus/docs/explore/rpc.md +++ b/docusaurus/docs/tools/endpoints/shannon_rpc.md @@ -1,5 +1,5 @@ --- -title: RPC Endpoints +title: Shannon RPC Endpoints sidebar_position: 3 --- @@ -10,6 +10,7 @@ sidebar_position: 3 - [Alpha TestNet](#alpha-testnet) - [Alpha RPC Endpoints](#alpha-rpc-endpoints) - [Alpha JSON-RPC Example](#alpha-json-rpc-example) +- [Genesis](#genesis) ## Types of RPC Endpoints @@ -62,3 +63,7 @@ Using the `poktrolld` binary: ```bash poktrolld query block --type=height 1 --node https://shannon-testnet-grove-seed-rpc.alpha.poktroll.com ``` + +## Genesis + +The genesis file for the Pocket Network is located at [pokt-network-genesis](https://github.com/pokt-network/pocket-network-genesis). diff --git a/docusaurus/docs/operate/user_guide/_category_.json b/docusaurus/docs/tools/tools/_category_.json similarity index 59% rename from docusaurus/docs/operate/user_guide/_category_.json rename to docusaurus/docs/tools/tools/_category_.json index 4f71de3e6..b8a7c0e2e 100644 --- a/docusaurus/docs/operate/user_guide/_category_.json +++ b/docusaurus/docs/tools/tools/_category_.json @@ -1,6 +1,6 @@ { - "label": "User Guide", - "position": 2, + "label": "Explorers, Faucets, Wallets, and More", + "position": 3, "link": { "type": "generated-index", "description": "poktrolld CLI documentation" diff --git a/docusaurus/docs/tools/tools/shannon_alpha.md b/docusaurus/docs/tools/tools/shannon_alpha.md new file mode 100644 index 000000000..6f351ed97 --- /dev/null +++ b/docusaurus/docs/tools/tools/shannon_alpha.md @@ -0,0 +1,9 @@ +--- +title: Alpha TestNet +sidebar_position: 1 +--- + +- 🪙 [Token Faucet](https://faucet.alpha.testnet.pokt.network/) +- 🗺️ [Explorer](https://shannon.alpha.testnet.pokt.network) +- 🗺️ [POKTScan's Explorer](https://shannon-alpha.poktscan.com/) +- 👨‍💻 [POKTScan's GraphQL Playground](https://shannon-alpha-api.poktscan.com/) diff --git a/docusaurus/docs/tools/tools/shannon_beta.md b/docusaurus/docs/tools/tools/shannon_beta.md new file mode 100644 index 000000000..ccb7096f5 --- /dev/null +++ b/docusaurus/docs/tools/tools/shannon_beta.md @@ -0,0 +1,9 @@ +--- +title: Beta TestNet +sidebar_position: 1 +--- + +- 🪙 [Token Faucet](https://faucet.beta.testnet.pokt.network/) +- 🗺️ [Explorer](https://shannon.beta.testnet.pokt.network) +- 🗺️ [POKTScan's Explorer](https://shannon-beta.poktscan.com/) +- 👨‍💻 [POKTScan's GraphQL Playground](https://shannon-beta-api.poktscan.com/) diff --git a/docusaurus/docs/tools/tools/source_code.md b/docusaurus/docs/tools/tools/source_code.md new file mode 100644 index 000000000..6b6fa5db8 --- /dev/null +++ b/docusaurus/docs/tools/tools/source_code.md @@ -0,0 +1,7 @@ +--- +title: Source Code +sidebar_position: 1 +--- + +- 🧑‍💻 [Shannon SDK](https://github.com/pokt-network/shannon-sdk) +- 🖥️ [Shannon source code](https://github.com/pokt-network/poktroll) diff --git a/docusaurus/docs/tools/user_guide/_category_.json b/docusaurus/docs/tools/user_guide/_category_.json new file mode 100644 index 000000000..5d3ef69ee --- /dev/null +++ b/docusaurus/docs/tools/user_guide/_category_.json @@ -0,0 +1,8 @@ +{ + "label": "poktrolld CLI", + "position": 1, + "link": { + "type": "generated-index", + "description": "User Guide for the poktrolld CLI" + } +} diff --git a/docusaurus/docs/operate/user_guide/app-transfer.md b/docusaurus/docs/tools/user_guide/app-transfer.md similarity index 99% rename from docusaurus/docs/operate/user_guide/app-transfer.md rename to docusaurus/docs/tools/user_guide/app-transfer.md index 12ca76b19..884564f80 100644 --- a/docusaurus/docs/operate/user_guide/app-transfer.md +++ b/docusaurus/docs/tools/user_guide/app-transfer.md @@ -1,6 +1,6 @@ --- -title: Application Transfer -sidebar_position: 5 +title: Application Stake Transfer +sidebar_position: 6 --- # Transferring an Application diff --git a/docusaurus/docs/operate/user_guide/check-balance.md b/docusaurus/docs/tools/user_guide/check-balance.md similarity index 96% rename from docusaurus/docs/operate/user_guide/check-balance.md rename to docusaurus/docs/tools/user_guide/check-balance.md index 98557295a..40a19f0be 100644 --- a/docusaurus/docs/operate/user_guide/check-balance.md +++ b/docusaurus/docs/tools/user_guide/check-balance.md @@ -1,6 +1,6 @@ --- title: Balance check -sidebar_position: 3 +sidebar_position: 4 --- # Checking Your Wallet Account Balance @@ -26,7 +26,7 @@ balance using the `poktrolld` command-line interface (CLI). ## Pre-requisites -1. `poktrolld` is installed on your system; see the [installation guide](./install) for more details +1. `poktrolld` is installed on your system; see the [installation guide](./poktrolld_cli.md) for more details 2. You have the address of the wallet you wish to check 3. You know the token denomination you wish to check; `upokt` for POKT tokens diff --git a/docusaurus/docs/operate/user_guide/create-new-wallet.md b/docusaurus/docs/tools/user_guide/create-new-wallet.md similarity index 96% rename from docusaurus/docs/operate/user_guide/create-new-wallet.md rename to docusaurus/docs/tools/user_guide/create-new-wallet.md index 8df204d14..140929994 100644 --- a/docusaurus/docs/operate/user_guide/create-new-wallet.md +++ b/docusaurus/docs/tools/user_guide/create-new-wallet.md @@ -1,6 +1,6 @@ --- title: Create a New Wallet -sidebar_position: 1 +sidebar_position: 2 --- # Create a New Wallet @@ -51,7 +51,7 @@ refer to the [Cosmos SDK Keyring documentation](https://docs.cosmos.network/main Ensure you have `poktrolld` installed on your system. -Follow the [installation guide](./install) specific to your operating system. +Follow the [installation guide](./poktrolld_cli.md) specific to your operating system. ## Step 2: Creating the Wallet diff --git a/docusaurus/docs/operate/user_guide/install.md b/docusaurus/docs/tools/user_guide/poktrolld_cli.md similarity index 82% rename from docusaurus/docs/operate/user_guide/install.md rename to docusaurus/docs/tools/user_guide/poktrolld_cli.md index dab4f98b2..84120bf71 100644 --- a/docusaurus/docs/operate/user_guide/install.md +++ b/docusaurus/docs/tools/user_guide/poktrolld_cli.md @@ -1,6 +1,6 @@ --- -title: CLI Installation -sidebar_position: 0 +title: poktrolld Installation +sidebar_position: 1 --- :::warning @@ -16,6 +16,7 @@ brew install poktrolld - [MacOS \& Linux Users](#macos--linux-users) - [Using Homebrew](#using-homebrew) + - [Troubleshooting Homebrew](#troubleshooting-homebrew) - [From Source](#from-source) - [Installing dependencies](#installing-dependencies) - [Installing poktrolld](#installing-poktrolld) @@ -48,6 +49,27 @@ repository for details on how to install homebrew or other details to install or debug the CLI. ::: +#### Troubleshooting Homebrew + +The source code for the Homebrew formula is available in the [homebrew-poktroll](https://github.com/pokt-network/homebrew-poktroll) repository. + +If you encounter any issues, like being unable to install the latest version, you can try the following: + +```bash +brew update +brew upgrade poktrolld +``` + +Or as a last resort, you can try the following: + +```bash +brew tap --repair +brew untap pokt-network/poktroll +brew uninstall poktrolld +brew tap pokt-network/poktroll +brew install poktrolld +``` + ### From Source #### Installing dependencies diff --git a/docusaurus/docs/operate/user_guide/recover-with-mnemonic.md b/docusaurus/docs/tools/user_guide/recover-with-mnemonic.md similarity index 96% rename from docusaurus/docs/operate/user_guide/recover-with-mnemonic.md rename to docusaurus/docs/tools/user_guide/recover-with-mnemonic.md index ca561ec80..c6b13ff19 100644 --- a/docusaurus/docs/operate/user_guide/recover-with-mnemonic.md +++ b/docusaurus/docs/tools/user_guide/recover-with-mnemonic.md @@ -1,6 +1,6 @@ --- title: Mnemonic Seed Phrase Recovery -sidebar_position: 2 +sidebar_position: 3 --- # Recovering an Account from a Mnemonic Seed Phrase @@ -24,7 +24,7 @@ seed phrase, recovering your account is straightforward! ## Pre-requisites - You have the mnemonic seed phrase of the wallet you wish to recover -- `poktrolld` is installed on your system; see the [installation guide](./install) for more details +- `poktrolld` is installed on your system; see the [installation guide](./poktrolld_cli.md) for more details ## Step 1: Prepare to Recover Your Wallet diff --git a/docusaurus/docs/operate/user_guide/send-tokens.md b/docusaurus/docs/tools/user_guide/send-tokens.md similarity index 97% rename from docusaurus/docs/operate/user_guide/send-tokens.md rename to docusaurus/docs/tools/user_guide/send-tokens.md index dbff2914d..898e4789c 100644 --- a/docusaurus/docs/operate/user_guide/send-tokens.md +++ b/docusaurus/docs/tools/user_guide/send-tokens.md @@ -1,6 +1,6 @@ --- title: Send tokens -sidebar_position: 4 +sidebar_position: 5 --- # Sending Tokens Between Accounts @@ -17,7 +17,7 @@ Pocket Network using the `poktrolld` command-line interface (CLI). ## Pre-requisites -1. `poktrolld` is installed on your system; see the [installation guide](./install) for more details +1. `poktrolld` is installed on your system; see the [installation guide](./poktrolld_cli.md) for more details 2. You have access to your wallet with sufficient tokens for the transaction and fees 3. You have the recipient's address diff --git a/docusaurus/docusaurus.config.js b/docusaurus/docusaurus.config.js index 288e013b8..89c43ab15 100644 --- a/docusaurus/docusaurus.config.js +++ b/docusaurus/docusaurus.config.js @@ -83,14 +83,13 @@ const config = { ({ docs: { sidebar: { - hideable: false, - autoCollapseCategories: false, + hideable: true, + autoCollapseCategories: true, }, }, - // image: "img/docusaurus-social-card.jpg", style: "dark", navbar: { - title: "Pocket Network", + // title: "Pocket Network", logo: { alt: "Pocket Network Logo", src: "img/logo.png", @@ -100,25 +99,25 @@ const config = { type: "docSidebar", position: "left", sidebarId: "operateSidebar", - label: "⚙️ Operate", + label: "⚙️ Guides & Deployment", }, { type: "docSidebar", position: "left", - sidebarId: "developSidebar", - label: "💻 Develop", + sidebarId: "toolsSidebar", + label: "🗺 Tools & Explorers", }, { type: "docSidebar", position: "left", - sidebarId: "protocolSidebar", - label: "🧠 Protocol", + sidebarId: "developSidebar", + label: "🧑‍💻️ Core Developers", }, { type: "docSidebar", position: "left", - sidebarId: "exploreSidebar", - label: "🗺 Explore", + sidebarId: "protocolSidebar", + label: "🧠 Protocol Specification", }, ], }, diff --git a/docusaurus/sidebars.js b/docusaurus/sidebars.js index 1984be244..3090a3837 100644 --- a/docusaurus/sidebars.js +++ b/docusaurus/sidebars.js @@ -20,10 +20,10 @@ const sidebars = { dirName: "protocol", }, ], - exploreSidebar: [ + toolsSidebar: [ { type: "autogenerated", - dirName: "explore", + dirName: "tools", }, ], }; diff --git a/docusaurus/static/img/logo-large-white.png b/docusaurus/static/img/logo-large-white.png new file mode 100644 index 000000000..c59c8f885 Binary files /dev/null and b/docusaurus/static/img/logo-large-white.png differ diff --git a/docusaurus/static/img/logo-large.png b/docusaurus/static/img/logo-large.png new file mode 100644 index 000000000..f8e8a7d3a Binary files /dev/null and b/docusaurus/static/img/logo-large.png differ diff --git a/docusaurus/static/img/logo-monochrome-black.png b/docusaurus/static/img/logo-monochrome-black.png new file mode 100644 index 000000000..0a2deb17e Binary files /dev/null and b/docusaurus/static/img/logo-monochrome-black.png differ diff --git a/docusaurus/static/img/logo-monochrome-white.png b/docusaurus/static/img/logo-monochrome-white.png new file mode 100644 index 000000000..2bc6495ba Binary files /dev/null and b/docusaurus/static/img/logo-monochrome-white.png differ diff --git a/docusaurus/static/img/logo.png b/docusaurus/static/img/logo.png index 3ccb91ef1..c59c8f885 100644 Binary files a/docusaurus/static/img/logo.png and b/docusaurus/static/img/logo.png differ diff --git a/e2e/tests/init_test.go b/e2e/tests/init_test.go index 680806c87..08804373d 100644 --- a/e2e/tests/init_test.go +++ b/e2e/tests/init_test.go @@ -171,7 +171,7 @@ func (s *suite) ThePocketdBinaryShouldExitWithoutError() { func (s *suite) TheUserRunsTheCommand(cmd string) { cmds := strings.Split(cmd, " ") res, err := s.pocketd.RunCommand(cmds...) - require.NoError(s, err, "error running command %s", cmd) + require.NoError(s, err, "error running command %s due to: %v", cmd, err) s.pocketd.result = res } @@ -192,7 +192,7 @@ func (s *suite) TheUserSendsUpoktFromAccountToAccount(amount int64, accName1, ac "-y", } res, err := s.pocketd.RunCommandOnHost("", args...) - require.NoError(s, err, "error sending upokt from %q to %q", accName1, accName2) + require.NoError(s, err, "error sending upokt from %q to %q due to: %v", accName1, accName2, err) s.pocketd.result = res } @@ -267,6 +267,7 @@ func (s *suite) TheUserStakesAWithUpoktFromTheAccount(actorType string, amount i "-y", } res, err := s.pocketd.RunCommandOnHost("", args...) + require.NoError(s, err, "error staking %s due to: %v", actorType, err) // Remove the temporary config file err = os.Remove(configFile.Name()) @@ -301,7 +302,7 @@ func (s *suite) TheUserStakesAWithUpoktForServiceFromTheAccount(actorType string "-y", } res, err := s.pocketd.RunCommandOnHost("", args...) - require.NoError(s, err, "error staking %s for service %s", actorType, serviceId) + require.NoError(s, err, "error staking %s for service %s due to: %v", actorType, serviceId, err) // Remove the temporary config file err = os.Remove(configFile.Name()) @@ -372,7 +373,7 @@ func (s *suite) TheUserUnstakesAFromTheAccount(actorType string, accName string) } res, err := s.pocketd.RunCommandOnHost("", args...) - require.NoError(s, err, "error unstaking %s", actorType) + require.NoError(s, err, "error unstaking %s due to: %v", actorType, err) // Get current balance balanceKey := accBalanceKey(accName) @@ -463,7 +464,7 @@ func (s *suite) TheApplicationSendsTheSupplierASuccessfulRequestForServiceWithPa appAddr := accNameToAddrMap[appName] res, err := s.pocketd.RunCurlWithRetry(pathUrl, serviceId, method, path, appAddr, requestData, 5) - require.NoError(s, err, "error sending relay request from app %q to supplier %q for service %q", appName, supplierOperatorName, serviceId) + require.NoError(s, err, "error sending relay request from app %q to supplier %q for service %q due to: %v", appName, supplierOperatorName, serviceId, err) var jsonContent json.RawMessage err = json.Unmarshal([]byte(res.Stdout), &jsonContent) @@ -569,11 +570,22 @@ func (s *suite) TheUserWaitsForTheApplicationForAccountPeriodToFinish(accName, p func (s *suite) getStakedAmount(actorType, accName string) (int, bool) { s.Helper() + + listCommand := fmt.Sprintf("list-%s", actorType) + // TODO_TECHDEBT(@olshansky): As of #1028, we started migrating some parts + // of the CLI to use AutoCLI which made list commands pluralized. + // E.g. "list-suppliers" instead of "list-supplier". + // Over time, all actor commands will be updated like so and this if can + // be removed. + if actorType == suppliertypes.ModuleName { + listCommand = fmt.Sprintf("%ss", listCommand) + } args := []string{ "query", actorType, - fmt.Sprintf("list-%s", actorType), + listCommand, } + res, err := s.pocketd.RunCommandOnHostWithRetry("", numQueryRetries, args...) require.NoError(s, err, "error getting %s", actorType) s.pocketd.result = res @@ -662,7 +674,7 @@ func (s *suite) buildSupplierMap() { argsAndFlags := []string{ "query", "supplier", - "list-supplier", + "list-suppliers", fmt.Sprintf("--%s=json", cometcli.OutputFlag), } res, err := s.pocketd.RunCommandOnHostWithRetry("", numQueryRetries, argsAndFlags...) @@ -752,7 +764,7 @@ func (s *suite) getSupplierInfo(supplierOperatorName string) *sharedtypes.Suppli } res, err := s.pocketd.RunCommandOnHostWithRetry("", numQueryRetries, args...) - require.NoError(s, err, "error getting supplier %s", supplierOperatorAddr) + require.NoError(s, err, "error getting supplier %s due to error: %v", supplierOperatorAddr, err) s.pocketd.result = res var resp suppliertypes.QueryGetSupplierResponse diff --git a/e2e/tests/node.go b/e2e/tests/node.go index 826b3ef71..d49970d8c 100644 --- a/e2e/tests/node.go +++ b/e2e/tests/node.go @@ -5,7 +5,6 @@ package e2e import ( "bytes" "fmt" - "net" "net/url" "os" "os/exec" @@ -26,11 +25,6 @@ var ( defaultHome = os.Getenv("POKTROLLD_HOME") // defaultPathURL used by curl commands to send relay requests defaultPathURL = os.Getenv("PATH_URL") - // defaultPathHostOverride overrides the host in the URL used to send requests - // Since the current DevNet infrastructure does not support arbitrary subdomains, - // this is used to specify the host to connect to and the full host (with the service as a subdomain) - // will be sent in the "Host" request header. - defaultPathHostOverride = os.Getenv("PATH_HOST_OVERRIDE") // defaultDebugOutput provides verbose output on manipulations with binaries (cli command, stdout, stderr) defaultDebugOutput = os.Getenv("E2E_DEBUG_OUTPUT") ) @@ -99,7 +93,18 @@ func (p *pocketdBin) RunCommandOnHostWithRetry(rpcUrl string, numRetries uint8, if err == nil { return res, nil } - // TODO_HACK: Figure out a better solution for retries. A parameter? Exponential backoff? What else? + // DEV_NOTE: Intentionally keeping a print statement here so errors are + // very visible even though the output may be noisy. + fmt.Printf(` +---------------------------------------- +Retrying command due to error: + - RPC URL: %s + - Arguments: %v + - Response: %v + - Error: %v +---------------------------------------- +`, rpcUrl, args, res, err) + // TODO_TECHDEBT(@bryanchriswhite): Figure out a better solution for retries. A parameter? Exponential backoff? What else? time.Sleep(5 * time.Second) return p.RunCommandOnHostWithRetry(rpcUrl, numRetries-1, args...) } @@ -182,29 +187,13 @@ func (p *pocketdBin) runPocketCmd(args ...string) (*commandResult, error) { return r, err } -// runCurlPostCmd is a helper to run a command using the local pocketd binary with the flags provided +// runCurlCmd is a helper to run a command using the local pocketd binary with the flags provided func (p *pocketdBin) runCurlCmd(rpcBaseURL, service, method, path, appAddr, data string, args ...string) (*commandResult, error) { rpcUrl, err := url.Parse(rpcBaseURL) if err != nil { return nil, err } - // Get the virtual host that will be sent in the "Host" request header - virtualHost := getVirtualHostFromUrlForService(rpcUrl, service) - - // TODO_HACK: As of PR #879, the DevNet infrastructure does not support routing - // requests to arbitrary subdomains due to TLS certificate-related complexities. - // In such environment, defaultPathHostOverride (which contains no subdomain) - // is used as: - // 1. The gateway's 'host:port' to connect to - // 2. A base to which the service is added as a subdomain then set as the "Host" request header. - // (i.e. Host: .) - // - // Override the actual connection address if the environment requires it. - if defaultPathHostOverride != "" { - rpcUrl.Host = defaultPathHostOverride - } - // Ensure that if a path is provided, it starts with a "/". // This is required for RESTful APIs that use a path to identify resources. // For JSON-RPC APIs, the resource path should be empty, so empty paths are allowed. @@ -225,8 +214,9 @@ func (p *pocketdBin) runCurlCmd(rpcBaseURL, service, method, path, appAddr, data "-v", // verbose output "-sS", // silent with error "-H", `Content-Type: application/json`, // HTTP headers - "-H", fmt.Sprintf("Host: %s", virtualHost), // Add virtual host header + "-H", fmt.Sprintf("Host: %s", rpcUrl.Host), // Add virtual host header "-H", fmt.Sprintf("X-App-Address: %s", appAddr), + "-H", fmt.Sprintf("target-service-id: %s", service), rpcUrl.String(), } @@ -262,40 +252,3 @@ func (p *pocketdBin) runCurlCmd(rpcBaseURL, service, method, path, appAddr, data return r, err } - -// formatURLString returns RESTful or JSON-RPC API endpoint URL depending -// on the parameters provided. -func formatURLString(serviceAlias, rpcUrl, path string) string { - // For JSON-RPC APIs, the path should be empty - if len(path) == 0 { - return fmt.Sprintf("http://%s.%s/v1", serviceAlias, rpcUrl) - } - - // For RESTful APIs, the path should not be empty. - // We remove the leading / to make the format string below easier to read. - if path[0] == '/' { - path = path[1:] - } - return fmt.Sprintf("http://%s.%s/v1/%s", serviceAlias, rpcUrl, path) -} - -// getVirtualHostFromUrlForService returns a virtual host taking into consideration -// the URL's host and the service if it's non-empty. -// Specifically, it: -// 1. Extract's the host from the rpcURL -// 2. Prefixes the service as a subdomain to (1) the given rpcUrl host stripped of the port -// -// TODO_HACK: This is needed as of PR #879 because the DevNet infrastructure does -// not support arbitrary subdomains due to TLS certificate-related complexities. -func getVirtualHostFromUrlForService(rpcUrl *url.URL, service string) string { - // Strip port if it exists and add service prefix - host, _, err := net.SplitHostPort(rpcUrl.Host) - if err != nil { - // err is non-nil if rpcUrl.Host does not have a port. - // Use the entire host as is - host = rpcUrl.Host - } - virtualHost := fmt.Sprintf("%s.%s", service, host) - - return virtualHost -} diff --git a/e2e/tests/reset_params_test.go b/e2e/tests/reset_params_test.go index 404ecd176..3b0c0ab1d 100644 --- a/e2e/tests/reset_params_test.go +++ b/e2e/tests/reset_params_test.go @@ -28,7 +28,7 @@ func (s *suite) resetAllModuleParamsToDefaults() { s.sendAuthzExecTx(s.granteeName, resetTxJSONFile.Name()) } -// allMoudlesMsgUpdateParamsToDefaultsAny returns a slice of Any messages, each corresponding +// allModulesMsgUpdateParamsToDefaultsAny returns a slice of Any messages, each corresponding // to a MsgUpdateParams for a module, populated with the respective default values. func (s *suite) allModulesMsgUpdateParamsToDefaultsAny() []*codectypes.Any { s.Helper() diff --git a/e2e/tests/session.feature b/e2e/tests/session.feature index df5f3f66a..12a230d17 100644 --- a/e2e/tests/session.feature +++ b/e2e/tests/session.feature @@ -17,7 +17,7 @@ Feature: Session Namespace When the supplier "supplier1" has serviced a session with "5" relays for service "anvil" for application "app1" And the user should wait for the "proof" module "CreateClaim" Message to be submitted And the user should wait for the "proof" module "ClaimCreated" tx event to be broadcast - Then the claim created by supplier "supplier1" for service "svc1" for application "app1" should be persisted on-chain + Then the claim created by supplier "supplier1" for service "svc1" for application "app1" should be persisted onchain And the user should wait for the "proof" module "SubmitProof" Message to be submitted And the user should wait for the "proof" module "ProofSubmitted" tx event to be broadcast Then the claim created by supplier "supplier1" for service "anvil" for application "app1" should be successfully settled @@ -37,7 +37,7 @@ Feature: Session Namespace # Then the supplier "supplier1" replys with a relay response for service "svc1" for application "app1" with session number "1" # And the application "app1" receives a successful relay response signed by "supplier1" for session number "1" # And after the supplier "supplier1" updates a claim for session number "1" for service "svc1" for application "app1" - # Then the claim created by supplier "supplier1" for service "svc1" for application "app1" should be persisted on-chain + # Then the claim created by supplier "supplier1" for service "svc1" for application "app1" should be persisted onchain # Scenario: A late Relay outside the SessionGracePeriod is rejected # Given the user has the pocketd binary installed diff --git a/e2e/tests/session_steps_test.go b/e2e/tests/session_steps_test.go index b5e35aedd..e035a5616 100644 --- a/e2e/tests/session_steps_test.go +++ b/e2e/tests/session_steps_test.go @@ -52,8 +52,10 @@ func (s *suite) TheUserShouldWaitForTheModuleMessageToBeSubmitted(module, msgTyp // so that next steps that assert on supplier rewards can do it without having // the proof submission fee skewing the results. switch msgType { + case "CreateClaim": + fallthrough case "SubmitProof": - supplierOperatorAddress := getMsgSubmitProofSenderAddress(event) + supplierOperatorAddress := getMsgSenderAddress(event) require.NotEmpty(s, supplierOperatorAddress) supplierAccName := accAddrToNameMap[supplierOperatorAddress] @@ -146,13 +148,13 @@ func (s *suite) TheSupplierHasServicedASessionWithRelaysForServiceForApplication require.NoError(s, err) // Query for any existing claims so that we can compare against them in - // future assertions about changes in on-chain claims. + // future assertions about changes in onchain claims. allClaimsRes, err := s.proofQueryClient.AllClaims(ctx, &prooftypes.QueryAllClaimsRequest{}) require.NoError(s, err) s.scenarioState[preExistingClaimsKey] = allClaimsRes.Claims // Query for any existing proofs so that we can compare against them in - // future assertions about changes in on-chain proofs. + // future assertions about changes in onchain proofs. allProofsRes, err := s.proofQueryClient.AllProofs(ctx, &prooftypes.QueryAllProofsRequest{}) require.NoError(s, err) s.scenarioState[preExistingProofsKey] = allProofsRes.Proofs @@ -417,8 +419,8 @@ func combineEventMatchFns(fns ...func(*abci.Event) bool) func(*abci.Event) bool } } -// getMsgSubmitProofSenderAddress returns the sender address from the given event. -func getMsgSubmitProofSenderAddress(event *abci.Event) string { +// getMsgSenderAddress returns the sender address from the given event. +func getMsgSenderAddress(event *abci.Event) string { senderAttrIdx := slices.IndexFunc(event.Attributes, func(attr abci.EventAttribute) bool { return attr.Key == "sender" }) diff --git a/e2e/tests/stake_supplier.feature b/e2e/tests/stake_supplier.feature index b24a579d9..3d9607fdc 100644 --- a/e2e/tests/stake_supplier.feature +++ b/e2e/tests/stake_supplier.feature @@ -30,19 +30,23 @@ Feature: Stake Supplier Namespace And the user verifies the "supplier" for account "supplier2" is not staked And the account balance of "supplier2" should be "1000070" uPOKT "more" than before - Scenario: User can restake a Supplier waiting for it to become active again - Given the user has the pocketd binary installed - # Reduce the application unbonding period to avoid timeouts and speed up scenarios. - And the "supplier" unbonding period param is successfully set to "1" sessions of "2" blocks - And the user verifies the "supplier" for account "supplier2" is not staked - Then the user stakes a "supplier" with "1000070" uPOKT for "anvil" service from the account "supplier2" - And the user should wait for the "supplier" module "StakeSupplier" message to be submitted - Then the user should see that the supplier for account "supplier2" is staked - But the session for application "app1" and service "anvil" does not contain "supplier2" - When the user waits for supplier "supplier2" to become active for service "anvil" - Then the session for application "app1" and service "anvil" contains the supplier "supplier2" - # Cleanup to make this feature idempotent. - And the user unstakes a "supplier" from the account "supplier2" - And the supplier for account "supplier2" is unbonding - And the user should wait for the "supplier" module "SupplierUnbondingBegin" tx event to be broadcast - And a "supplier" module "SupplierUnbondingEnd" end block event is broadcast + # TODO_MAINNET(@olshansk, #1033): Since the "to become active for service" step + # requires reading "ServicesActivationHeightsMap", which is temporarily set to nil, + # this test has been commented out. See #1033 for details and re-enable this test + # once that data is retrievable through a different method. + # Scenario: User can restake a Supplier waiting for it to become active again + # Given the user has the pocketd binary installed + # # Reduce the application unbonding period to avoid timeouts and speed up scenarios. + # And the "supplier" unbonding period param is successfully set to "1" sessions of "2" blocks + # And the user verifies the "supplier" for account "supplier2" is not staked + # Then the user stakes a "supplier" with "1000070" uPOKT for "anvil" service from the account "supplier2" + # And the user should wait for the "supplier" module "StakeSupplier" message to be submitted + # Then the user should see that the supplier for account "supplier2" is staked + # But the session for application "app1" and service "anvil" does not contain "supplier2" + # When the user waits for supplier "supplier2" to become active for service "anvil" + # Then the session for application "app1" and service "anvil" contains the supplier "supplier2" + # # Cleanup to make this feature idempotent. + # And the user unstakes a "supplier" from the account "supplier2" + # And the supplier for account "supplier2" is unbonding + # And the user should wait for the "supplier" module "SupplierUnbondingBegin" tx event to be broadcast + # And a "supplier" module "SupplierUnbondingEnd" end block event is broadcast diff --git a/load-testing/config/load_test_manifest_reader.go b/load-testing/config/load_test_manifest_reader.go index db20b21fc..81b94a630 100644 --- a/load-testing/config/load_test_manifest_reader.go +++ b/load-testing/config/load_test_manifest_reader.go @@ -22,7 +22,7 @@ type LoadTestManifestYAML struct { // IsEphemeralChain is a flag that indicates whether the test is expected to be // run on LocalNet or long-living remote chain (i.e. TestNet/DevNet). IsEphemeralChain bool `yaml:"is_ephemeral_chain"` - TestNetNode string `yaml:"testnet_node"` + RPCNode string `yaml:"rpc_node"` ServiceId string `yaml:"service_id"` Suppliers []ProvisionedActorConfig `yaml:"suppliers"` Gateways []ProvisionedActorConfig `yaml:"gateways"` @@ -67,6 +67,10 @@ func validatedEphemeralChainManifest(manifest *LoadTestManifestYAML) (*LoadTestM return nil, ErrEphemeralChainLoadTestInvalidManifest.Wrap("empty funding account address") } + if len(manifest.RPCNode) == 0 { + return nil, ErrEphemeralChainLoadTestInvalidManifest.Wrap("empty rpc node url") + } + for _, gateway := range manifest.Gateways { if len(gateway.Address) == 0 { return nil, ErrEphemeralChainLoadTestInvalidManifest.Wrap("empty gateway address") @@ -107,8 +111,8 @@ func validatedNonEphemeralChainManifest(manifest *LoadTestManifestYAML) (*LoadTe return nil, ErrNonEphemeralChainLoadTestInvalidManifest.Wrap("suppliers entry forbidden") } - if len(manifest.TestNetNode) == 0 { - return nil, ErrNonEphemeralChainLoadTestInvalidManifest.Wrap("empty testnet node url") + if len(manifest.RPCNode) == 0 { + return nil, ErrNonEphemeralChainLoadTestInvalidManifest.Wrap("empty rpc node url") } if len(manifest.ServiceId) == 0 { diff --git a/load-testing/loadtest_manifest_example.yaml b/load-testing/loadtest_manifest_example.yaml index 840fafdab..47c33f07c 100644 --- a/load-testing/loadtest_manifest_example.yaml +++ b/load-testing/loadtest_manifest_example.yaml @@ -2,16 +2,16 @@ # It is intended to target a remote environment, such as a devnet or testnet. is_ephemeral_chain: false -# testnet_node is the URL of the node that the load test will use to query the +# rpc_node is the URL of the RPC node that the load test will use to query the # chain and submit transactions. -testnet_node: https://devnet-sophon-validator-rpc.poktroll.com +rpc_node: https://devnet-sophon-validator-rpc.poktroll.com # The service ID to request relays from. service_id: "anvil" # The address of the account that will be used to fund the application accounts -# so that they can stake on the network. -funding_account_address: pokt1awtlw5sjmw2f5lgj8ekdkaqezphgz88rdk93sk # address for faucet account +# so that they can stake on the local network. +funding_account_address: pokt1eeeksh2tvkh7wzmfrljnhw4wrhs55lcuvmekkw # address for faucet account # In non-ephemeral chains, the gateways are identified by their address. gateways: diff --git a/load-testing/loadtest_manifest_localnet.yaml b/load-testing/loadtest_manifest_localnet.yaml index 763771576..da7d729ba 100644 --- a/load-testing/loadtest_manifest_localnet.yaml +++ b/load-testing/loadtest_manifest_localnet.yaml @@ -3,12 +3,16 @@ is_ephemeral_chain: true # This should be `true` for LocalNet as it is an ephemeral network +# rpc_node is the URL of the RPC node that the load test will use to query the +# chain and submit transactions. +rpc_node: http://localhost:26657 + # The service ID to use for the load test. service_id: anvil # The address of the account that will be used to fund the application, -# gateway and supplier accounts so that they can stake on the network. -funding_account_address: pokt1awtlw5sjmw2f5lgj8ekdkaqezphgz88rdk93sk # address for faucet account +# gateway and supplier accounts so that they can stake on the local network. +funding_account_address: pokt1eeeksh2tvkh7wzmfrljnhw4wrhs55lcuvmekkw # address for faucet account # List of pre-provisioned suppliers used for load testing. # These suppliers will be progressively staked during the load test, according @@ -24,7 +28,7 @@ suppliers: # RelayMiner 1; http://localhost:10350/r/relayminer1/overview - address: pokt19a3t4yunp0dlpfjrp7qwnzwlrzd5fzs2gjaaaj - # The advertised URL used by the supplier when it submits a stake message on-chain. + # The advertised URL used by the supplier when it submits a stake message onchain. exposed_url: http://relayminer1:8545 # RelayMiner 2; http://localhost:10350/r/relayminer2/overview @@ -48,12 +52,12 @@ gateways: # Gateway 1; http://localhost:10350/r/gateway1/overview - address: pokt15vzxjqklzjtlz7lahe8z2dfe9nm5vxwwmscne4 - exposed_url: http://anvil.localhost/v1:3000 # The gateway url that the user sends relays to (e.g. curl) + exposed_url: http://localhost:3000/v1/ # The gateway url that the user sends relays to (e.g. curl) # Gateway 2; http://localhost:10350/r/gateway2/overview - address: pokt15w3fhfyc0lttv7r585e2ncpf6t2kl9uh8rsnyz - exposed_url: http://anvil.localhost/v1:3001 + exposed_url: http://localhost:3001/v1/ # Gateway 3; http://localhost:10350/r/gateway3/overview - address: pokt1zhmkkd0rh788mc9prfq0m2h88t9ge0j83gnxya - exposed_url: http://anvil.localhost/v1:3002 + exposed_url: http://localhost:3002/v1/ diff --git a/load-testing/loadtest_manifest_localnet_single_supplier.yaml b/load-testing/loadtest_manifest_localnet_single_supplier.yaml index c455eaa8f..e2a87e5d7 100644 --- a/load-testing/loadtest_manifest_localnet_single_supplier.yaml +++ b/load-testing/loadtest_manifest_localnet_single_supplier.yaml @@ -3,12 +3,16 @@ is_ephemeral_chain: true # This should be `true` for LocalNet as it is an ephemeral network +# rpc_node is the URL of the RPC node that the load test will use to query the +# chain and submit transactions. +rpc_node: http://localhost:26657 + # The service ID to use for the load test. service_id: anvil # The address of the account that will be used to fund the application, -# gateway and supplier accounts so that they can stake on the network. -funding_account_address: pokt1awtlw5sjmw2f5lgj8ekdkaqezphgz88rdk93sk # address for faucet account +# gateway and supplier accounts so that they can stake on the local network. +funding_account_address: pokt1eeeksh2tvkh7wzmfrljnhw4wrhs55lcuvmekkw # address for faucet account # List of pre-provisioned suppliers used for load testing. # These suppliers will be progressively staked during the load test, according @@ -24,7 +28,7 @@ suppliers: # RelayMiner 1; http://localhost:10350/r/relayminer1/overview - address: pokt19a3t4yunp0dlpfjrp7qwnzwlrzd5fzs2gjaaaj - # The advertised URL used by the supplier when it submits a stake message on-chain. + # The advertised URL used by the supplier when it submits a stake message onchain. exposed_url: http://relayminer1:8545 # List of pre-provisioned gateways used for load testing. @@ -40,12 +44,12 @@ gateways: # Gateway 1; http://localhost:10350/r/gateway1/overview - address: pokt15vzxjqklzjtlz7lahe8z2dfe9nm5vxwwmscne4 - exposed_url: http://anvil.localhost/v1:3000 # The gateway url that the user sends relays to (e.g. curl) + exposed_url: http://localhost:3000/v1/ # The gateway url that the user sends relays to (e.g. curl) # Gateway 2; http://localhost:10350/r/gateway2/overview - address: pokt15w3fhfyc0lttv7r585e2ncpf6t2kl9uh8rsnyz - exposed_url: http://anvil.localhost/v1:3001 + exposed_url: http://localhost:3001/v1/ # Gateway 3; http://localhost:10350/r/gateway3/overview - address: pokt1zhmkkd0rh788mc9prfq0m2h88t9ge0j83gnxya - exposed_url: http://anvil.localhost/v1:3002 + exposed_url: http://localhost:3002/v1/ diff --git a/load-testing/tests/relays_stress.feature b/load-testing/tests/relays_stress.feature index 5aa3f63a0..d6981c95e 100644 --- a/load-testing/tests/relays_stress.feature +++ b/load-testing/tests/relays_stress.feature @@ -14,4 +14,12 @@ Feature: Loading gateway server with relays | gateway | 1 | 10 | 3 | | supplier | 1 | 10 | 3 | When a load of concurrent relay requests are sent from the applications - Then the correct pairs count of claim and proof messages should be committed on-chain \ No newline at end of file + Then the number of failed relay requests is "0" + # TODO_FOLLOWUP(@red-0ne): Implement the following steps + # Then "0" over servicing events are observed + # And "0" slashing events are observed + # And "0" expired claim events are observed + # And there is as many reimbursement requests as the number of settled claims + # And the number of claims submitted and claims settled is the same + # And the number of proofs submitted and proofs required is the same + # And the actors onchain balances are as expected \ No newline at end of file diff --git a/load-testing/tests/relays_stress_helpers_test.go b/load-testing/tests/relays_stress_helpers_test.go index aa55dcf49..5eea3fd03 100644 --- a/load-testing/tests/relays_stress_helpers_test.go +++ b/load-testing/tests/relays_stress_helpers_test.go @@ -5,10 +5,11 @@ package tests import ( "context" "fmt" + "io" "net/http" - "net/url" "os" "path/filepath" + "slices" "strings" "sync" "testing" @@ -17,6 +18,9 @@ import ( "cosmossdk.io/depinject" "cosmossdk.io/math" "github.com/cometbft/cometbft/abci/types" + "github.com/cometbft/cometbft/libs/json" + cmtcoretypes "github.com/cometbft/cometbft/rpc/core/types" + rpctypes "github.com/cometbft/cometbft/rpc/jsonrpc/types" sdkclient "github.com/cosmos/cosmos-sdk/client" codectypes "github.com/cosmos/cosmos-sdk/codec/types" "github.com/cosmos/cosmos-sdk/crypto/keys/secp256k1" @@ -25,23 +29,26 @@ import ( "github.com/cosmos/cosmos-sdk/x/authz" banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" + "github.com/cosmos/gogoproto/proto" "github.com/regen-network/gocuke" "github.com/stretchr/testify/require" + "google.golang.org/grpc" "github.com/pokt-network/poktroll/load-testing/config" "github.com/pokt-network/poktroll/pkg/client" - "github.com/pokt-network/poktroll/pkg/client/events" "github.com/pokt-network/poktroll/pkg/client/query" - "github.com/pokt-network/poktroll/pkg/client/tx" "github.com/pokt-network/poktroll/pkg/observable/channel" "github.com/pokt-network/poktroll/pkg/sync2" - testsession "github.com/pokt-network/poktroll/testutil/session" + testdelays "github.com/pokt-network/poktroll/testutil/delays" + "github.com/pokt-network/poktroll/testutil/events" "github.com/pokt-network/poktroll/testutil/testclient" - "github.com/pokt-network/poktroll/testutil/testclient/testeventsquery" + "github.com/pokt-network/poktroll/testutil/testclient/testblock" apptypes "github.com/pokt-network/poktroll/x/application/types" gatewaytypes "github.com/pokt-network/poktroll/x/gateway/types" + prooftypes "github.com/pokt-network/poktroll/x/proof/types" sharedtypes "github.com/pokt-network/poktroll/x/shared/types" suppliertypes "github.com/pokt-network/poktroll/x/supplier/types" + tokenomicstypes "github.com/pokt-network/poktroll/x/tokenomics/types" ) // actorLoadTestIncrementPlans is a struct that holds the parameters for incrementing @@ -75,29 +82,53 @@ type actorLoadTestIncrementPlan struct { maxActorCount int64 } -// setupTxEventListeners sets up the transaction event listeners to observe the -// transactions committed on-chain. -func (s *relaysSuite) setupTxEventListeners() { - eventsQueryClient := testeventsquery.NewLocalnetClient(s.TestingT.(*testing.T)) +// setupEventListeners sets up the event listeners for the relays suite. +// It listens to both tx and block events to keep track of the events that are happening +// onchain. +func (s *relaysSuite) setupEventListeners(rpcNode string) { + // Set up the blockClient that will be notifying the suite about the committed blocks. + eventsObs, eventsObsCh := channel.NewObservable[[]types.Event]() + s.committedEventsObs = eventsObs + + extractBlockEvents := func(ctx context.Context, block client.Block) { + // Query the block results endpoint for each observed block to get the tx and block events. + // Ref: https://docs.cometbft.com/main/rpc/#/Info/block_results + blockResultsUrl := fmt.Sprintf("%s/block_results?height=%d", rpcNode, block.Height()) + blockResultsResp, err := http.DefaultClient.Get(blockResultsUrl) + require.NoError(s, err) - deps := depinject.Supply(eventsQueryClient) - eventsReplayClient, err := events.NewEventsReplayClient( - s.ctx, - deps, - newTxEventSubscriptionQuery, - tx.UnmarshalTxResult, - eventsReplayClientBufferSize, - ) - require.NoError(s, err) + defer blockResultsResp.Body.Close() + + blockResultsRespBz, err := io.ReadAll(blockResultsResp.Body) + require.NoError(s, err) + + var rpcResponse rpctypes.RPCResponse + err = json.Unmarshal(blockResultsRespBz, &rpcResponse) + require.NoError(s, err) + + var blockResults cmtcoretypes.ResultBlockResults + err = json.Unmarshal(rpcResponse.Result, &blockResults) + require.NoError(s, err) - // Map the eventsReplayClient.EventsSequence which is a replay observable - // to a regular observable to avoid replaying txResults from old blocks. - s.newTxEventsObs = channel.Map( + numEvents := len(blockResults.TxsResults) + len(blockResults.FinalizeBlockEvents) + events := make([]types.Event, 0, numEvents) + + // Flatten all tx result events and block event results into one slice. + for _, txResult := range blockResults.TxsResults { + events = append(events, txResult.Events...) + } + + events = append(events, blockResults.FinalizeBlockEvents...) + + s.latestBlock = block + eventsObsCh <- events + } + + s.blockClient = testblock.NewLocalnetClient(s.ctx, s.TestingT.(*testing.T)) + channel.ForEach( s.ctx, - eventsReplayClient.EventsSequence(s.ctx), - func(ctx context.Context, txResult *types.TxResult) (*types.TxResult, bool) { - return txResult, false - }, + s.blockClient.CommittedBlocksSequence(s.ctx), + extractBlockEvents, ) } @@ -173,9 +204,9 @@ func (s *relaysSuite) mapSessionInfoForLoadTestDurationFn( sessionInfo := &sessionInfoNotif{ blockHeight: blockHeight, - sessionNumber: testsession.GetSessionNumberWithDefaultParams(blockHeight), - sessionStartBlockHeight: testsession.GetSessionStartHeightWithDefaultParams(blockHeight), - sessionEndBlockHeight: testsession.GetSessionEndHeightWithDefaultParams(blockHeight), + sessionNumber: sharedtypes.GetSessionNumber(s.sharedParams, blockHeight), + sessionStartBlockHeight: sharedtypes.GetSessionStartHeight(s.sharedParams, blockHeight), + sessionEndBlockHeight: sharedtypes.GetSessionEndHeight(s.sharedParams, blockHeight), } infoLogger := logger.Info(). @@ -231,10 +262,12 @@ func (s *relaysSuite) mapSessionInfoForLoadTestDurationFn( testProgressBlocksRelativeToTestStartHeight, s.relayLoadDurationBlocks, ) - if sessionInfo.blockHeight == sessionInfo.sessionEndBlockHeight { - newSessionsCount := len(s.activeApplications) * len(s.activeSuppliers) - s.expectedClaimsAndProofsCount = s.expectedClaimsAndProofsCount + newSessionsCount - } + logger.Info().Msgf( + "Relays sent: %d; Success: %d; Failed: %d", + s.numRelaysSent.Load(), + s.successfulRelays.Load(), + s.failedRelays.Load(), + ) // If the current block is the start of any new session, activate the prepared // actors to be used in the current session. @@ -457,16 +490,17 @@ func (s *relaysSuite) mapSessionInfoWhenStakingNewSuppliersAndGatewaysFn() chann // For each notification received, it waits for the new actors' staking/funding // txs to be committed before sending staking & delegation txs for new applications. func (s *relaysSuite) mapStakingInfoWhenStakingAndDelegatingNewApps( - _ context.Context, + ctx context.Context, notif *stakingInfoNotif, ) (*stakingInfoNotif, bool) { // Ensure that new gateways and suppliers are staked. - // Ensure that new applications are funded and have an account entry on-chain + // Ensure that new applications are funded and have an account entry onchain // so that they can stake and delegate in the next block. - txResults := s.waitForTxsToBeCommitted() - s.ensureFundedActors(txResults, notif.newApps) - s.ensureStakedActors(txResults, EventActionMsgStakeGateway, notif.newGateways) - s.ensureStakedActors(txResults, EventActionMsgStakeSupplier, notif.newSuppliers) + testdelays.WaitAll( + func() { s.ensureStakedActors(ctx, notif.newSuppliers) }, + func() { s.ensureStakedActors(ctx, notif.newGateways) }, + func() { s.ensureFundedActors(ctx, notif.newApps) }, + ) // Update the list of staked suppliers. s.activeSuppliers = append(s.activeSuppliers, notif.newSuppliers...) @@ -627,11 +661,13 @@ func (s *relaysSuite) createApplicationAccount( // cost, and the block duration. func (s *relaysSuite) getAppFundingAmount(currentBlockHeight int64) sdk.Coin { currentTestDuration := s.testStartHeight + s.relayLoadDurationBlocks - currentBlockHeight + // Compute the cost of all relays throughout the test duration. + totalRelayCostDuringTestUPOKT := s.relayRatePerApp * s.relayCoinAmountCost * currentTestDuration * blockDurationSec // Multiply by 2 to make sure the application does not run out of funds // based on the number of relays it needs to send. Theoretically, `+1` should // be enough, but probabilistic and time based mechanisms make it hard // to predict exactly. - appFundingAmount := s.relayRatePerApp * s.relayCoinAmountCost * currentTestDuration * blockDuration * 2 + appFundingAmount := math.Max(totalRelayCostDuringTestUPOKT, s.appParams.MinStake.Amount.Int64()*2) return sdk.NewCoin("upokt", math.NewInt(appFundingAmount)) } @@ -724,7 +760,7 @@ func (plan *actorLoadTestIncrementPlan) shouldIncrementActorCount( return false } - initialSessionNumber := testsession.GetSessionNumberWithDefaultParams(startBlockHeight) + initialSessionNumber := sharedtypes.GetSessionNumber(sharedParams, startBlockHeight) actorSessionIncRate := plan.blocksPerIncrement / int64(sharedParams.GetNumBlocksPerSession()) nextSessionNumber := sessionInfo.sessionNumber + 1 - initialSessionNumber isSessionStartHeight := sessionInfo.blockHeight == sessionInfo.sessionStartBlockHeight @@ -750,7 +786,7 @@ func (plan *actorLoadTestIncrementPlan) shouldIncrementSupplierCount( return false } - initialSessionNumber := testsession.GetSessionNumberWithDefaultParams(startBlockHeight) + initialSessionNumber := sharedtypes.GetSessionNumber(sharedParams, startBlockHeight) supplierSessionIncRate := plan.blocksPerIncrement / int64(sharedParams.GetNumBlocksPerSession()) nextSessionNumber := sessionInfo.sessionNumber + 1 - initialSessionNumber isSessionEndHeight := sessionInfo.blockHeight == sessionInfo.sessionEndBlockHeight @@ -798,6 +834,9 @@ func (s *relaysSuite) addPendingStakeSupplierMsg(supplier *accountInfo) { RpcType: sharedtypes.RPCType_JSON_RPC, }, }, + RevShare: []*sharedtypes.ServiceRevenueShare{ + {Address: supplier.address, RevSharePercentage: 100}, + }, }, }, )) @@ -943,7 +982,9 @@ func (s *relaysSuite) sendPendingMsgsTx(actor *accountInfo) { err := txBuilder.SetMsgs(actor.pendingMsgs...) require.NoError(s, err) - txBuilder.SetTimeoutHeight(uint64(s.latestBlock.Height() + 1)) + // Set the transaction timeout height to 2 blocks beyond the current block height. + // This ensures the transaction won't be rejected if the next block commit is imminent. + txBuilder.SetTimeoutHeight(uint64(s.latestBlock.Height() + 2)) txBuilder.SetGasLimit(690000042) accAddress := sdk.MustAccAddressFromBech32(actor.address) @@ -973,33 +1014,6 @@ func (s *relaysSuite) sendPendingMsgsTx(actor *accountInfo) { }() } -// waitForTxsToBeCommitted waits for transactions to be observed on-chain. -// It is used to ensure that the transactions are committed before taking -// dependent actions. -func (s *relaysSuite) waitForTxsToBeCommitted() (txResults []*types.TxResult) { - ctx, cancel := context.WithCancel(s.ctx) - defer cancel() - - ch := s.newTxEventsObs.Subscribe(ctx).Ch() - for { - txResult := <-ch - txResults = append(txResults, txResult) - - // The number of transactions to be observed is not available in the TxResult - // event, so this number is taken from the last block event. - // The block received from s.latestBlock may be the previous one, it is - // necessary to wait until the block matching the txResult height is received - // in order to get the right number of transaction events to collect. - numTxs := s.waitUntilLatestBlockHeightEquals(txResult.Height) - - // If all transactions are observed, break the loop. - if len(txResults) == numTxs { - break - } - } - return txResults -} - // waitUntilLatestBlockHeightEquals blocks until s.latestBlock.Height() equals the targetHeight. // NB: s.latestBlock is updated asynchronously via a subscription to the block client observable. func (s *relaysSuite) waitUntilLatestBlockHeightEquals(targetHeight int64) int { @@ -1034,161 +1048,215 @@ func (s *relaysSuite) sendRelay(iteration uint64, relayPayload string) (appAddre gateway := s.activeGateways[iteration%uint64(len(s.activeGateways))] application := s.activeApplications[iteration%uint64(len(s.activeApplications))] - gatewayUrl, err := url.Parse(s.gatewayUrls[gateway.address]) - require.NoError(s, err) - - // Include the application address in the query to the gateway. - query := gatewayUrl.Query() - query.Add("applicationAddr", application.address) - query.Add("relayCount", fmt.Sprintf("%d", iteration)) - gatewayUrl.RawQuery = query.Encode() - - // Use the pre-defined service ID that all application and suppliers are staking for. - gatewayUrl.Path = testedServiceId - // TODO_MAINNET: Capture the relay response to check for failing relays. // Send the relay request within a goroutine to avoid blocking the test batches // when suppliers or gateways are unresponsive. - go func(gwURL, payload string) { - _, err = http.DefaultClient.Post( - gwURL, - "application/json", - strings.NewReader(payload), - ) + sendRelayRequest := func(gatewayURL, appAddr, payload string) { + req, err := http.NewRequest("POST", gatewayURL, strings.NewReader(payload)) + + // TODO_TECHDEBT(red-0ne): Use 'app-address' instead of 'X-App-Address' once PATH Gateway + // deprecates the X-App-Address header. + // This is needed by the PATH Gateway's trusted mode to identify the application + // that is sending the relay request. + req.Header.Add("X-App-Address", appAddr) + req.Header.Add("target-service-id", "anvil") + res, err := http.DefaultClient.Do(req) require.NoError(s, err) - }(gatewayUrl.String(), relayPayload) + + if res.StatusCode == http.StatusOK { + s.successfulRelays.Add(1) + } else { + s.failedRelays.Add(1) + } + } + + gatewayURL := s.gatewayUrls[gateway.address] + go sendRelayRequest(gatewayURL, application.address, relayPayload) return application.address, gateway.address } // ensureFundedActors checks if the actors are funded by observing the transfer events // in the transactions results. -func (s *relaysSuite) ensureFundedActors( - txResults []*types.TxResult, - actors []*accountInfo, -) { - for _, actor := range actors { - actorFunded := false - for _, txResult := range txResults { - for _, event := range txResult.Result.Events { - // Skip non-relevant events. - if event.Type != "transfer" { - continue - } - - attrs := event.Attributes - // Check if the actor is the recipient of the transfer event. - if actorFunded = hasEventAttr(attrs, "recipient", actor.address); actorFunded { - break - } +func (s *relaysSuite) ensureFundedActors(ctx context.Context, actors []*accountInfo) { + if len(actors) == 0 { + s.Logf("No actors to fund") + return + } + + fundedActors := make(map[string]struct{}) + actorsAddrs := make([]string, len(actors)) + for i, actor := range actors { + actorsAddrs[i] = actor.address + } + + // Add 1 second to the block duration to make sure the deadline is after the next block. + deadline := time.Now().Add(time.Second * time.Duration(blockDurationSec+1)) + ctx, cancel := context.WithDeadline(ctx, deadline) + channel.ForEach(ctx, s.committedEventsObs, func(ctx context.Context, events []types.Event) { + for _, event := range events { + // In the context of ensuring the actors are funded, only the transfer events + // are relevant; filtering out the other events. + if event.GetType() != "transfer" { + continue + } + + attrs := event.GetAttributes() + // Check if the actor is the recipient of the transfer event. + fundedActorAddr, ok := getEventAttr(attrs, "recipient") + if !ok { + continue } - // If the actor is funded, no need to check the other transactions. - if actorFunded { - break + if !slices.Contains(actorsAddrs, fundedActorAddr) { + continue } + + fundedActors[fundedActorAddr] = struct{}{} } - // If no transfer event is found for the actor, the test is canceled. - if !actorFunded { - s.logAndAbortTest(txResults, "actor not funded") - return + // Cancel this scope once all expected actors are successfully funded before + // the deadline was reached. + if allActorsFunded(actors, fundedActors) { + cancel() } + }) + + <-ctx.Done() + if !allActorsFunded(actors, fundedActors) { + s.logAndAbortTest("at least one actor was not funded successfully") } } +// allActorsFunded checks if all the expected actors are funded. +// An error is returned if any (at least one) of the expected actors was not funded. +func allActorsFunded(expectedActors []*accountInfo, fundedActors map[string]struct{}) bool { + for _, actor := range expectedActors { + if _, ok := fundedActors[actor.address]; !ok { + return false + } + } + + return true +} + // ensureStakedActors checks if the actors are staked by observing the message events // in the transactions results. func (s *relaysSuite) ensureStakedActors( - txResults []*types.TxResult, - msg string, + ctx context.Context, actors []*accountInfo, ) { - for _, actor := range actors { - actorStaked := false - for _, txResult := range txResults { - for _, event := range txResult.Result.Events { - // Skip non-relevant events. - if event.Type != "message" { - continue - } - - attrs := event.Attributes - // Check if the actor is the sender of the message event. - if hasEventAttr(attrs, "action", msg) && hasEventAttr(attrs, "sender", actor.address) { - actorStaked = true - break - } - } + if len(actors) == 0 { + return + } - // If the actor is staked, no need to check the other transactions. - if actorStaked { - break + stakedActors := make(map[string]struct{}) + + // Add 1 second to the block duration to make sure the deadline is after the next block. + deadline := time.Now().Add(time.Second * time.Duration(blockDurationSec+1)) + ctx, cancel := context.WithDeadline(ctx, deadline) + typedEventsObs := events.AbciEventsToTypedEvents(ctx, s.committedEventsObs) + channel.ForEach(ctx, typedEventsObs, func(ctx context.Context, blockEvents []proto.Message) { + for _, event := range blockEvents { + switch e := event.(type) { + case *suppliertypes.EventSupplierStaked: + stakedActors[e.Supplier.GetOperatorAddress()] = struct{}{} + case *gatewaytypes.EventGatewayStaked: + stakedActors[e.Gateway.GetAddress()] = struct{}{} + case *apptypes.EventApplicationStaked: + stakedActors[e.Application.GetAddress()] = struct{}{} } } - // If no message event is found for the actor, log the transaction results - // and cancel the test. - if !actorStaked { - s.logAndAbortTest(txResults, fmt.Sprintf("actor not staked: %s", actor.address)) - return + // Cancel this scope once all expected actors are successfully staked before + // the deadline was reached. + if allActorsStaked(actors, stakedActors) { + cancel() + } + }) + + <-ctx.Done() + if !allActorsStaked(actors, stakedActors) { + s.logAndAbortTest("at least one actor was not staked successfully") + return + } +} + +// allActorsStaked checks if all the expected actors are staked. +// An error is returned if any of the expected actors was not staked. +func allActorsStaked(expectedActors []*accountInfo, stakedActors map[string]struct{}) bool { + for _, actor := range expectedActors { + if _, ok := stakedActors[actor.address]; !ok { + return false } } + + return true } // ensureDelegatedActors checks if the actors are delegated by observing the // delegation events in the transactions results. func (s *relaysSuite) ensureDelegatedApps( - txResults []*types.TxResult, + ctx context.Context, applications, gateways []*accountInfo, ) { - for _, application := range applications { - numDelegatees := 0 - for _, txResult := range txResults { - for _, event := range txResult.Result.Events { - // Skip non-EventDelegation events. - if event.Type != EventTypeRedelegation { - continue - } - - attrs := event.Attributes - appAddr := fmt.Sprintf("%q", application.address) - // Skip the event if the application is not the delegator. - if !hasEventAttr(attrs, "app_address", appAddr) { - break - } - - // Check if the application is delegated to each of the gateways. - for _, gateway := range gateways { - gwAddr := fmt.Sprintf("%q", gateway.address) - if hasEventAttr(attrs, "gateway_address", gwAddr) { - numDelegatees++ - break - } - } + if len(applications) == 0 || len(gateways) == 0 { + return + } + + appsToGateways := make(map[string][]string) + + deadline := time.Now().Add(time.Second * time.Duration(blockDurationSec+1)) + ctx, cancel := context.WithDeadline(ctx, deadline) + typedEventsObs := events.AbciEventsToTypedEvents(ctx, s.committedEventsObs) + channel.ForEach(ctx, typedEventsObs, func(ctx context.Context, blockEvents []proto.Message) { + for _, event := range blockEvents { + redelegationEvent, ok := event.(*apptypes.EventRedelegation) + if ok { + app := redelegationEvent.GetApplication() + appsToGateways[app.GetAddress()] = app.GetDelegateeGatewayAddresses() } } - // If the number of delegatees is not equal to the number of gateways, - // the test is canceled. - if numDelegatees != len(gateways) { - s.logAndAbortTest(txResults, "applications not delegated to all gateways") - return + // Cancel this scope once all expected applications are successfully delegated + // to the expected gateways before the deadline was reached. + if allAppsDelegatedToAllGateways(applications, gateways, appsToGateways) { + cancel() } + }) + + <-ctx.Done() + if !allAppsDelegatedToAllGateways(applications, gateways, appsToGateways) { + s.logAndAbortTest("applications not delegated to all gateways") + return } } +// allAppsDelegatedToAllGateways checks if all applications are delegated to all gateways. +func allAppsDelegatedToAllGateways( + applications, gateways []*accountInfo, + appsToGateways map[string][]string, +) bool { + for _, app := range applications { + if _, ok := appsToGateways[app.address]; !ok { + return false + } + + for _, gateway := range gateways { + if !slices.Contains(appsToGateways[app.address], gateway.address) { + return false + } + } + } + + return true +} + // getRelayCost fetches the relay cost from the tokenomics module. func (s *relaysSuite) getRelayCost() int64 { - // Set up the tokenomics client. - flagSet := testclient.NewLocalnetFlagSet(s) - clientCtx := testclient.NewLocalnetClientCtx(s, flagSet) - sharedClient := sharedtypes.NewQueryClient(clientCtx) - - res, err := sharedClient.Params(s.ctx, &sharedtypes.QueryParamsRequest{}) - require.NoError(s, err) + relayCost := s.testedService.ComputeUnitsPerRelay * s.sharedParams.ComputeUnitsToTokensMultiplier - return int64(res.Params.ComputeUnitsToTokensMultiplier) + return int64(relayCost) } // getProvisionedActorsCurrentStakedAmount fetches the current stake amount of @@ -1242,15 +1310,15 @@ func (s *relaysSuite) activatePreparedActors(notif *sessionInfoNotif) { } } -// hasEventAttr checks if the event attributes contain a given key-value pair. -func hasEventAttr(attributes []types.EventAttribute, key, value string) bool { +// getEventAttr returns the event attribute value corresponding to the provided key. +func getEventAttr(attributes []types.EventAttribute, key string) (value string, found bool) { for _, attribute := range attributes { - if attribute.Key == key && attribute.Value == value { - return true + if attribute.Key == key { + return attribute.Value, true } } - return false + return "", false } // sendAdjustMaxDelegationsParamTx sends a transaction to adjust the max_delegated_gateways @@ -1258,20 +1326,17 @@ func hasEventAttr(attributes []types.EventAttribute, key, value string) bool { func (s *relaysSuite) sendAdjustMaxDelegationsParamTx(maxGateways int64) { authority := authtypes.NewModuleAddress(govtypes.ModuleName).String() - appMsgUpdateParams := &apptypes.MsgUpdateParams{ + appMsgUpdateMaxDelegatedGatewaysParam := &apptypes.MsgUpdateParam{ Authority: authority, - Params: apptypes.Params{ - // Set the max_delegated_gateways parameter to the number of gateways - // that are currently used in the test. - MaxDelegatedGateways: uint64(maxGateways), - }, + Name: "max_delegated_gateways", + AsType: &apptypes.MsgUpdateParam_AsUint64{AsUint64: uint64(maxGateways)}, } - appMsgUpdateParamsAny, err := codectypes.NewAnyWithValue(appMsgUpdateParams) + appMsgUpdateParamAny, err := codectypes.NewAnyWithValue(appMsgUpdateMaxDelegatedGatewaysParam) require.NoError(s, err) authzExecMsg := &authz.MsgExec{ Grantee: s.fundingAccountInfo.address, - Msgs: []*codectypes.Any{appMsgUpdateParamsAny}, + Msgs: []*codectypes.Any{appMsgUpdateParamAny}, } s.fundingAccountInfo.addPendingMsg(authzExecMsg) @@ -1334,32 +1399,20 @@ func (s *relaysSuite) parseActorLoadTestIncrementPlans( return actorPlans } -// countClaimAndProofs asynchronously counts the number of claim and proof messages -// in the observed transaction events. -func (s *relaysSuite) countClaimAndProofs() { +// forEachSettlement asynchronously captures the settlement events and processes them. +func (s *relaysSuite) forEachSettlement(ctx context.Context) { + typedEventsObs := events.AbciEventsToTypedEvents(ctx, s.committedEventsObs) channel.ForEach( s.ctx, - s.newTxEventsObs, - func(ctx context.Context, txEvent *types.TxResult) { - for _, event := range txEvent.Result.Events { - if event.Type != "message" { - continue - } - - if hasEventAttr(event.Attributes, "action", EventActionMsgCreateClaim) { - s.currentClaimCount++ - } - - if hasEventAttr(event.Attributes, "action", EventActionMsgSubmitProof) { - s.currentProofCount++ - } - - } + typedEventsObs, + func(_ context.Context, _ []proto.Message) { + // TODO_FOLLOWUP(@red-0ne): Capture all settlement related events and use + // them to calculate the expected actor balances. }, ) } -// querySharedParams queries the current on-chain shared module parameters for use +// querySharedParams queries the current onchain shared module parameters for use // over the duration of the test. func (s *relaysSuite) querySharedParams(queryNodeRPCURL string) { s.Helper() @@ -1379,19 +1432,107 @@ func (s *relaysSuite) querySharedParams(queryNodeRPCURL string) { s.sharedParams = sharedParams } +// queryAppParams queries the current onchain application module parameters for use +// over the duration of the test. +func (s *relaysSuite) queryAppParams(queryNodeRPCURL string) { + s.Helper() + + deps := depinject.Supply(s.txContext.GetClientCtx()) + + blockQueryClient, err := sdkclient.NewClientFromNode(queryNodeRPCURL) + require.NoError(s, err) + deps = depinject.Configs(deps, depinject.Supply(blockQueryClient)) + + appQueryclient, err := query.NewApplicationQuerier(deps) + require.NoError(s, err) + + appParams, err := appQueryclient.GetParams(s.ctx) + require.NoError(s, err) + + s.appParams = appParams +} + +// queryProofParams queries the current onchain proof module parameters for use +// over the duration of the test. +func (s *relaysSuite) queryProofParams(queryNodeRPCURL string) { + s.Helper() + + deps := depinject.Supply(s.txContext.GetClientCtx()) + + blockQueryClient, err := sdkclient.NewClientFromNode(queryNodeRPCURL) + require.NoError(s, err) + deps = depinject.Configs(deps, depinject.Supply(blockQueryClient)) + + proofQueryclient, err := query.NewProofQuerier(deps) + require.NoError(s, err) + + params, err := proofQueryclient.GetParams(s.ctx) + require.NoError(s, err) + + // The proofQueryclient#GetParams returns an Params interface to avoid a circular + // dependency between the proof module and the query module, so it needs to be casted + // to the actual prooftypes.Params type. + proofParams, ok := params.(*prooftypes.Params) + require.True(s, ok) + + s.proofParams = proofParams +} + +// queryTokenomicsParams queries the current onchain tokenomics module parameters for use +// over the duration of the test. +func (s *relaysSuite) queryTokenomicsParams(queryNodeRPCURL string) { + s.Helper() + + deps := depinject.Supply(s.txContext.GetClientCtx()) + + blockQueryClient, err := sdkclient.NewClientFromNode(queryNodeRPCURL) + require.NoError(s, err) + deps = depinject.Configs(deps, depinject.Supply(blockQueryClient)) + + // TODO_TECHDEBT(red-0ne): Use tokenomics client querier instead of the grpc client + // once implemented. + var clientConn *grpc.ClientConn + err = depinject.Inject(deps, clientConn) + require.NoError(s, err) + + tokenomicsQuerier := tokenomicstypes.NewQueryClient(clientConn) + res, err := tokenomicsQuerier.Params(s.ctx, &tokenomicstypes.QueryParamsRequest{}) + require.NoError(s, err) + + s.tokenomicsParams = &res.Params +} + +// queryTestedService queries the current service being tested. +func (s *relaysSuite) queryTestedService(queryNodeRPCURL string) { + s.Helper() + + deps := depinject.Supply(s.txContext.GetClientCtx()) + + blockQueryClient, err := sdkclient.NewClientFromNode(queryNodeRPCURL) + require.NoError(s, err) + deps = depinject.Configs(deps, depinject.Supply(blockQueryClient)) + + serviceQueryclient, err := query.NewServiceQuerier(deps) + require.NoError(s, err) + + service, err := serviceQueryclient.GetService(s.ctx, "anvil") + require.NoError(s, err) + + s.testedService = &service +} + // forEachStakedAndDelegatedAppPrepareApp is a ForEachFn that waits for txs which // were broadcast in previous pipeline stages have been committed. It ensures that // new applications were successfully staked and all application actors are delegated // to all gateways. Then it adds the new application actors to the prepared set, to // be activated & used in the next session. -func (s *relaysSuite) forEachStakedAndDelegatedAppPrepareApp(_ context.Context, notif *stakingInfoNotif) { - // Wait for the next block to commit staking and delegation transactions - // and be able to send relay requests evenly distributed across all gateways. - txResults := s.waitForTxsToBeCommitted() - s.ensureStakedActors(txResults, EventActionMsgStakeApplication, notif.newApps) - s.ensureDelegatedApps(txResults, s.activeApplications, notif.newGateways) - s.ensureDelegatedApps(txResults, notif.newApps, notif.newGateways) - s.ensureDelegatedApps(txResults, notif.newApps, s.activeGateways) +func (s *relaysSuite) forEachStakedAndDelegatedAppPrepareApp(ctx context.Context, notif *stakingInfoNotif) { + testdelays.WaitAll( + func() { s.ensureStakedActors(ctx, notif.newApps) }, + func() { s.ensureDelegatedApps(ctx, s.activeApplications, notif.newGateways) }, + func() { s.ensureDelegatedApps(ctx, notif.newApps, notif.newGateways) }, + func() { s.ensureDelegatedApps(ctx, notif.newApps, s.activeGateways) }, + ) // Add the new applications to the list of prepared applications to be activated in // the next session. @@ -1415,9 +1556,9 @@ func (s *relaysSuite) forEachRelayBatchSendBatch(_ context.Context, relayBatchIn relayInterval := time.Second / time.Duration(relaysPerSec) batchWaitGroup := new(sync.WaitGroup) - batchWaitGroup.Add(relaysPerSec * int(blockDuration)) + batchWaitGroup.Add(relaysPerSec * int(blockDurationSec)) - for i := 0; i < relaysPerSec*int(blockDuration); i++ { + for i := 0; i < relaysPerSec*int(blockDurationSec); i++ { iterationTime := relayBatchInfo.nextBatchTime.Add(time.Duration(i+1) * relayInterval) batchLimiter.Go(s.ctx, func() { @@ -1453,17 +1594,12 @@ func (s *relaysSuite) forEachRelayBatchSendBatch(_ context.Context, relayBatchIn batchWaitGroup.Wait() } -func (s *relaysSuite) logAndAbortTest(txResults []*types.TxResult, errorMsg string) { - for _, txResult := range txResults { - if txResult.Result.Log != "" { - logger.Error().Msgf("tx result log: %s", txResult.Result.Log) - } - } +func (s *relaysSuite) logAndAbortTest(errorMsg string) { s.cancelCtx() s.Fatal(errorMsg) } -// populateWithKnownApplications creates a list of gateways based on the gatewayUrls +// populateWithKnownGateways creates a list of gateways based on the gatewayUrls // provided in the test manifest. It is used in non-ephemeral chain tests where the // gateways are not under the test's control and are expected to be already staked. func (s *relaysSuite) populateWithKnownGateways() (gateways []*accountInfo) { diff --git a/load-testing/tests/relays_stress_single_suppier.feature b/load-testing/tests/relays_stress_single_supplier.feature similarity index 51% rename from load-testing/tests/relays_stress_single_suppier.feature rename to load-testing/tests/relays_stress_single_supplier.feature index 253b82615..34d51a6dd 100644 --- a/load-testing/tests/relays_stress_single_suppier.feature +++ b/load-testing/tests/relays_stress_single_supplier.feature @@ -11,7 +11,16 @@ Feature: Loading gateway server with relays And more actors are staked as follows: | actor | actor inc amount | blocks per inc | max actors | | application | 4 | 10 | 12 | - | gateway | 1 | 10 | 3 | + | gateway | 1 | 10 | 1 | | supplier | 1 | 10 | 1 | When a load of concurrent relay requests are sent from the applications - Then the correct pairs count of claim and proof messages should be committed on-chain \ No newline at end of file + Then the number of failed relay requests is "0" + # TODO_FOLLOWUP(@red-0ne): Implement the following steps + # Then "0" over servicing events are observed + # And "0" slashing events are observed + # And "0" expired claim events are observed + # And there are as many reimbursement requests as the number of settled claims + # And the number of claims submitted and claims settled is the same + # And the number of proofs submitted and proofs required is the same + # And the actors onchain balances are as expected + # TODO_CONSIDERATION: Revisit for additional interesting test cases. \ No newline at end of file diff --git a/load-testing/tests/relays_stress_test.go b/load-testing/tests/relays_stress_test.go index ae7f07a12..8557bfa15 100644 --- a/load-testing/tests/relays_stress_test.go +++ b/load-testing/tests/relays_stress_test.go @@ -23,23 +23,11 @@ import ( "github.com/pokt-network/poktroll/pkg/observable" "github.com/pokt-network/poktroll/pkg/observable/channel" "github.com/pokt-network/poktroll/testutil/testclient" - "github.com/pokt-network/poktroll/testutil/testclient/testblock" "github.com/pokt-network/poktroll/testutil/testclient/testtx" + apptypes "github.com/pokt-network/poktroll/x/application/types" + prooftypes "github.com/pokt-network/poktroll/x/proof/types" sharedtypes "github.com/pokt-network/poktroll/x/shared/types" -) - -// The following constants are used to identify the different types of transactions, -// once committed, which are expected to be observed on-chain during the test. -// NB: The TxResult Events' #Type values are not prefixed with a slash, -// unlike TxResult Events' "action" attribute value. -const ( - EventActionMsgStakeApplication = "/poktroll.application.MsgStakeApplication" - EventActionMsgStakeGateway = "/poktroll.gateway.MsgStakeGateway" - EventActionMsgStakeSupplier = "/poktroll.supplier.MsgStakeSupplier" - EventActionMsgCreateClaim = "/poktroll.proof.MsgCreateClaim" - EventActionMsgSubmitProof = "/poktroll.proof.MsgSubmitProof" - EventActionAppMsgUpdateParams = "/poktroll.application.MsgUpdateParams" - EventTypeRedelegation = "poktroll.application.EventRedelegation" + tokenomicstypes "github.com/pokt-network/poktroll/x/tokenomics/types" ) // The following constants define the expected ordering of the actors when @@ -77,8 +65,6 @@ var ( // maxConcurrentRequestLimit is the maximum number of concurrent requests that can be made. // By default, it is set to the number of logical CPUs available to the process. maxConcurrentRequestLimit = runtime.GOMAXPROCS(0) - // fundingAccountAddress is the address of the account used to fund other accounts. - fundingAccountAddress string // supplierStakeAmount is the amount of tokens to stake by suppliers. supplierStakeAmount sdk.Coin // gatewayStakeAmount is the amount of tokens to stake by gateways. @@ -86,15 +72,9 @@ var ( // testedServiceId is the service ID for that all applications and suppliers will // be using in this test. testedServiceId string - // blockDuration is the duration of a block in seconds. + // blockDurationSec is the duration of a block in seconds. // NB: This value SHOULD be equal to `timeout_propose` in `config.yml`. - blockDuration = int64(2) - // newTxEventSubscriptionQuery is the format string which yields a subscription - // query to listen for on-chain Tx events. - newTxEventSubscriptionQuery = "tm.event='Tx'" - // eventsReplayClientBufferSize is the buffer size for the events replay client - // for the subscriptions above. - eventsReplayClientBufferSize = 100 + blockDurationSec = int64(2) // relayPayloadFmt is the JSON-RPC request relayPayloadFmt to send a relay request. relayPayloadFmt = `{"jsonrpc":"2.0","method":"%s","params":[],"id":%d}` // relayRequestMethod is the method of the JSON-RPC request to be relayed. @@ -127,15 +107,17 @@ type relaysSuite struct { // batchInfoObs is the observable mapping session information to batch information. // It is used to determine when to send a batch of relay requests to the network. batchInfoObs observable.Observable[*relayBatchInfoNotif] - // newTxEventsObs is the observable that notifies the test suite of new - // transactions committed on-chain. - // It is used to check the results of the transactions sent by the test suite. - newTxEventsObs observable.Observable[*types.TxResult] // txContext is the transaction context used to sign and send transactions. txContext client.TxContext - // sharedParams is the shared on-chain parameters used in the test. + + // Protocol governance params used in the test. // It is queried at the beginning of the test. - sharedParams *sharedtypes.Params + sharedParams *sharedtypes.Params + appParams *apptypes.Params + proofParams *prooftypes.Params + tokenomicsParams *tokenomicstypes.Params + + testedService *sharedtypes.Service // numRelaysSent is the number of relay requests sent during the test. numRelaysSent atomic.Uint64 @@ -168,7 +150,7 @@ type relaysSuite struct { plans *actorLoadTestIncrementPlans // gatewayUrls is a map of gatewayAddress->URL representing the provisioned gateways. - // These gateways are not staked yet but have their off-chain instance running + // These gateways are not staked yet but have their offchain instance running // and ready to be staked and used in the test. // Since Gateways are pre-provisioned, and already assigned a signingAddress // and an URL to send relays to, the test suite does not create new ones but picks @@ -181,7 +163,7 @@ type relaysSuite struct { // It is used to ensure that the gateways are staked in the order they are provisioned. availableGatewayAddresses []string // suppliersUrls is a map of supplierOperatorAddress->URL representing the provisioned suppliers. - // These suppliers are not staked yet but have their off-chain instance running + // These suppliers are not staked yet but have their offchain instance running // and ready to be staked and used in the test. // Since RelayMiners are pre-provisioned, and already assigned a signingAddress // and an URL, the test suite does not create new ones but picks from this list. @@ -213,17 +195,17 @@ type relaysSuite struct { // ready to handle relay requests. activeSuppliers []*accountInfo - // Number of claims and proofs observed on-chain during the test. - currentProofCount int - currentClaimCount int - - // expectedClaimsAndProofsCount is the expected number of claims and proofs - // to be committed on-chain during the test. - expectedClaimsAndProofsCount int - // isEphemeralChain is a flag that indicates whether the test is expected to be // run on ephemeral chain setups like localnet or long living ones (i.e. Test/DevNet). isEphemeralChain bool + + // committedEventsObs is the observable that maps committed blocks to onchain events. + committedEventsObs observable.Observable[[]types.Event] + + // successfulRelays is the number of relay requests that returned 200 status code. + successfulRelays atomic.Uint64 + // failedRelays is the number of relay requests that returned non-200 status code. + failedRelays atomic.Uint64 } // accountInfo contains the account info needed to build and send transactions. @@ -270,8 +252,8 @@ func TestLoadRelays(t *testing.T) { gocuke.NewRunner(t, &relaysSuite{}).Path(filepath.Join(".", "relays_stress.feature")).Run() } -func TestLoadRelaysSingleSupplier(t *testing.T) { - gocuke.NewRunner(t, &relaysSuite{}).Path(filepath.Join(".", "relays_stress_single_suppier.feature")).Run() +func TestSingleSupplierLoadRelays(t *testing.T) { + gocuke.NewRunner(t, &relaysSuite{}).Path(filepath.Join(".", "relays_stress_single_supplier.feature")).Run() } func (s *relaysSuite) LocalnetIsRunning() { @@ -318,9 +300,9 @@ func (s *relaysSuite) LocalnetIsRunning() { // CometLocalWebsocketURL to the TestNetNode URL. These variables are used // by the testtx txClient to send transactions to the network. if !s.isEphemeralChain { - testclient.CometLocalTCPURL = loadTestParams.TestNetNode + testclient.CometLocalTCPURL = loadTestParams.RPCNode - webSocketURL, err := url.Parse(loadTestParams.TestNetNode) + webSocketURL, err := url.Parse(loadTestParams.RPCNode) require.NoError(s, err) // TestNet nodes may be exposed over HTTPS, so adjust the scheme accordingly. @@ -332,37 +314,31 @@ func (s *relaysSuite) LocalnetIsRunning() { testclient.CometLocalWebsocketURL = webSocketURL.String() + "/websocket" // Update the block duration when running the test on a non-ephemeral chain. - // TODO_TECHDEBT: Get the block duration value from the chain or the manifest. - blockDuration = 60 + // TODO_TECHDEBT: Get the block duration value from the chain. + blockDurationSec = 60 } - // Set up the blockClient that will be notifying the suite about the committed blocks. - s.blockClient = testblock.NewLocalnetClient(s.ctx, s.TestingT.(*testing.T)) - channel.ForEach( - s.ctx, - s.blockClient.CommittedBlocksSequence(s.ctx), - func(ctx context.Context, block client.Block) { - s.latestBlock = block - }, - ) - // Setup the txContext that will be used to send transactions to the network. s.txContext = testtx.NewLocalnetContext(s.TestingT.(*testing.T)) - // Get the relay cost from the tokenomics module. - s.relayCoinAmountCost = s.getRelayCost() - - // Setup the tx listener for on-chain events to check and assert on transactions results. - s.setupTxEventListeners() + // Setup the event listener for onchain events to check and assert on transactions + // and finalized blocks results. + s.setupEventListeners(loadTestParams.RPCNode) // Initialize the funding account. s.initFundingAccount(loadTestParams.FundingAccountAddress) - // Initialize the on-chain claims and proofs counter. - s.countClaimAndProofs() + // Initialize the onchain settlement events listener. + s.forEachSettlement(s.ctx) - // Query for the current shared on-chain params. - s.querySharedParams(loadTestParams.TestNetNode) + // Query for the current network onchain params. + s.querySharedParams(loadTestParams.RPCNode) + s.queryAppParams(loadTestParams.RPCNode) + s.queryProofParams(loadTestParams.RPCNode) + s.queryTestedService(loadTestParams.RPCNode) + + // Get the relay cost from the tokenomics module. + s.relayCoinAmountCost = s.getRelayCost() // Some suppliers may already be staked at genesis, ensure that staking during // this test succeeds by increasing the sake amount. @@ -402,62 +378,50 @@ func (s *relaysSuite) MoreActorsAreStakedAsFollows(table gocuke.DataTable) { // increment the actor count to the maximum. s.relayLoadDurationBlocks = s.plans.maxActorBlocksToFinalIncrementEnd() - if s.isEphemeralChain { - // Adjust the max delegations parameter to the max gateways to permit all - // applications to delegate to all gateways. - // This is to ensure that requests are distributed evenly across all gateways - // at any given time. - s.sendAdjustMaxDelegationsParamTx(s.plans.gateways.maxActorCount) - s.waitForTxsToBeCommitted() - s.ensureUpdatedMaxDelegations(s.plans.gateways.maxActorCount) - } - // Fund all the provisioned suppliers and gateways since their addresses are // known and they are not created on the fly, while funding only the initially // created applications. fundedSuppliers, fundedGateways, fundedApplications := s.sendFundAvailableActorsTx() // Funding messages are sent in a single transaction by the funding account, // only one transaction is expected to be committed. - txResults := s.waitForTxsToBeCommitted() - s.ensureFundedActors(txResults, fundedSuppliers) - s.ensureFundedActors(txResults, fundedGateways) - s.ensureFundedActors(txResults, fundedApplications) + fundedActors := append(fundedSuppliers, fundedGateways...) + fundedActors = append(fundedActors, fundedApplications...) + s.ensureFundedActors(s.ctx, fundedActors) logger.Info().Msg("Actors funded") // The initial actors are the first actors to stake. - suppliers := fundedSuppliers[:s.supplierInitialCount] - gateways := fundedGateways[:s.gatewayInitialCount] - applications := fundedApplications[:s.appInitialCount] + stakedSuppliers := fundedSuppliers[:s.supplierInitialCount] + stakedGateways := fundedGateways[:s.gatewayInitialCount] + stakedApplications := fundedApplications[:s.appInitialCount] + + stakedActors := append(stakedSuppliers, stakedGateways...) + stakedActors = append(stakedActors, stakedApplications...) - s.sendInitialActorsStakeMsgs(suppliers, gateways, applications) - txResults = s.waitForTxsToBeCommitted() - s.ensureStakedActors(txResults, EventActionMsgStakeSupplier, suppliers) - s.ensureStakedActors(txResults, EventActionMsgStakeGateway, gateways) - s.ensureStakedActors(txResults, EventActionMsgStakeApplication, applications) + s.sendInitialActorsStakeMsgs(stakedSuppliers, stakedGateways, stakedApplications) + s.ensureStakedActors(s.ctx, stakedActors) logger.Info().Msg("Actors staked") // Update the list of staked suppliers. - s.activeSuppliers = append(s.activeSuppliers, suppliers...) + s.activeSuppliers = append(s.activeSuppliers, stakedSuppliers...) // In the case of non-ephemeral chain load tests, the available gateways are // not incrementally staked, but are already staked and delegated to, add all // of them to the list of active gateways at the beginning of the test. if !s.isEphemeralChain { - gateways = s.populateWithKnownGateways() + stakedGateways = s.populateWithKnownGateways() } // Delegate the initial applications to the initial gateways - s.sendDelegateInitialAppsTxs(applications, gateways) - txResults = s.waitForTxsToBeCommitted() - s.ensureDelegatedApps(txResults, applications, gateways) + s.sendDelegateInitialAppsTxs(stakedApplications, stakedGateways) + s.ensureDelegatedApps(s.ctx, stakedApplications, stakedGateways) logger.Info().Msg("Apps delegated") // Applications and gateways are now ready and will be active in the next session. - s.preparedApplications = append(s.preparedApplications, applications...) - s.preparedGateways = append(s.preparedGateways, gateways...) + s.preparedApplications = append(s.preparedApplications, stakedApplications...) + s.preparedGateways = append(s.preparedGateways, stakedGateways...) // relayBatchInfoObs maps session information to batch information used to schedule // the relay requests to be sent on the current block. @@ -508,29 +472,11 @@ func (s *relaysSuite) ALoadOfConcurrentRelayRequestsAreSentFromTheApplications() // Block the feature step until the test is done. <-s.ctx.Done() } -func (s *relaysSuite) TheCorrectPairsCountOfClaimAndProofMessagesShouldBeCommittedOnchain() { - logger.Info(). - Int("claims", s.currentClaimCount). - Int("proofs", s.currentProofCount). - Msg("Claims and proofs count") - - require.Equal(s, - s.currentClaimCount, - s.currentProofCount, - "claims and proofs count mismatch", - ) - // TODO_TECHDEBT: The current counting mechanism for the expected claims and proofs - // is not accurate. The expected claims and proofs count should be calculated based - // on a function of(time_per_block, num_blocks_per_session) -> num_claims_and_proofs. - // The reason (time_per_block) is one of the parameters is because claims and proofs - // are removed from the on-chain state after sessions are settled, only leaving - // events behind. The final solution needs to either account for this timing - // carefully (based on sessions that have passed), or be event driven using - // a replay client of on-chain messages and/or events. - //require.Equal(s, - // s.expectedClaimsAndProofsCount, - // s.currentProofCount, - // "unexpected claims and proofs count", - //) +func (s *relaysSuite) TheNumberOfFailedRelayRequestsIs(expectedFailedRelays string) { + expectedFailedRelaysCount, err := strconv.ParseUint(expectedFailedRelays, 10, 64) + require.NoError(s, err) + + require.EqualValues(s, expectedFailedRelaysCount, s.failedRelays.Load()) + require.EqualValues(s, s.numRelaysSent.Load(), s.successfulRelays.Load()) } diff --git a/localnet/grafana-dashboards/cosmos_sdk_insights.json b/localnet/grafana-dashboards/cosmos_sdk_insights.json index 157314cdc..72e2abbd5 100644 --- a/localnet/grafana-dashboards/cosmos_sdk_insights.json +++ b/localnet/grafana-dashboards/cosmos_sdk_insights.json @@ -794,7 +794,7 @@ "refId": "A" } ], - "title": "On-Chain Relays", + "title": "Onchain Relays", "type": "timeseries" }, { @@ -1311,7 +1311,7 @@ }, "timepicker": {}, "timezone": "browser", - "title": "Protocol / Insights and On-Chain data", + "title": "Protocol / Insights and Onchain data", "uid": "adzickiu028lcb", "version": 1, "weekStart": "" diff --git a/localnet/grafana-dashboards/tokenomics_relays.json b/localnet/grafana-dashboards/tokenomics_relays.json index f6228f499..eff5a3ce2 100644 --- a/localnet/grafana-dashboards/tokenomics_relays.json +++ b/localnet/grafana-dashboards/tokenomics_relays.json @@ -38,7 +38,7 @@ "showLineNumbers": false, "showMiniMap": false }, - "content": "## What does this dashboard show?\n\nAs relays flow through the network\nAppGate -> RelayMiner and RelayMiner creates proofs and claims, we can capture the whole relay cycle.\n\n1. shows the actual amount of relays on AppGate;\n2. shows the actual amount of relays processed by RelayMiner;\n3. the amount of relays from the on-chain information using `EventClaimCreated`;\n4. relays from `EventProofSubmitted`;", + "content": "## What does this dashboard show?\n\nAs relays flow through the network\nAppGate -> RelayMiner and RelayMiner creates proofs and claims, we can capture the whole relay cycle.\n\n1. shows the actual amount of relays on AppGate;\n2. shows the actual amount of relays processed by RelayMiner;\n3. the amount of relays from the onchain information using `EventClaimCreated`;\n4. relays from `EventProofSubmitted`;", "mode": "markdown" }, "pluginVersion": "11.2.2+security-01", @@ -349,7 +349,7 @@ } } ], - "title": "Relays (from on-chain claims)", + "title": "Relays (from onchain claims)", "type": "timeseries" }, { @@ -462,7 +462,7 @@ } } ], - "title": "Relays (from on-chain proofs)", + "title": "Relays (from onchain proofs)", "type": "timeseries" } ], diff --git a/localnet/poktrolld/config/config.toml b/localnet/poktrolld/config/config.toml index bbfa0366f..35dcda640 100644 --- a/localnet/poktrolld/config/config.toml +++ b/localnet/poktrolld/config/config.toml @@ -174,7 +174,7 @@ timeout_broadcast_tx_commit = "10s" max_request_batch_size = 10 # Maximum size of request body, in bytes -max_body_bytes = 1000000 +max_body_bytes = 100000000 # Maximum size of request header, in bytes max_header_bytes = 1048576 @@ -330,7 +330,7 @@ keep-invalid-txs-in-cache = false # Maximum size of a single transaction. # NOTE: the max size of a tx transmitted over the network is {max_tx_bytes}. -max_tx_bytes = 1048576 +max_tx_bytes = 100000000 # Maximum size of a batch of transactions to send to a peer # Including space needed by encoding (one varint per transaction). diff --git a/localnet/poktrolld/config/relayminer_config_localnet_vscode.yaml b/localnet/poktrolld/config/relayminer_config_localnet_vscode.yaml index 451914f9f..de20c4d13 100644 --- a/localnet/poktrolld/config/relayminer_config_localnet_vscode.yaml +++ b/localnet/poktrolld/config/relayminer_config_localnet_vscode.yaml @@ -23,7 +23,7 @@ metrics: addr: :9070 pocket_node: query_node_rpc_url: tcp://localhost:26657 - query_node_grpc_url: tcp://localhost:36658 + query_node_grpc_url: tcp://localhost:9090 tx_node_rpc_url: tcp://localhost:26657 suppliers: - service_id: anvil diff --git a/localnet/poktrolld/config/supplier1_stake_config.yaml b/localnet/poktrolld/config/supplier1_stake_config.yaml index e3d475939..046fddb4c 100644 --- a/localnet/poktrolld/config/supplier1_stake_config.yaml +++ b/localnet/poktrolld/config/supplier1_stake_config.yaml @@ -2,8 +2,8 @@ owner_address: pokt1mrqt5f7qh8uxs27cjm9t7v9e74a9vvdnq5jva4 operator_address: pokt1mrqt5f7qh8uxs27cjm9t7v9e74a9vvdnq5jva4 stake_amount: 1000069upokt default_rev_share_percent: - pokt1mrqt5f7qh8uxs27cjm9t7v9e74a9vvdnq5jva4: 80.5 - pokt1eeeksh2tvkh7wzmfrljnhw4wrhs55lcuvmekkw: 19.5 + pokt1mrqt5f7qh8uxs27cjm9t7v9e74a9vvdnq5jva4: 80 + pokt1eeeksh2tvkh7wzmfrljnhw4wrhs55lcuvmekkw: 20 services: - service_id: anvil endpoints: diff --git a/localnet/poktrolld/config/supplier_stake_config_example.yaml b/localnet/poktrolld/config/supplier_stake_config_example.yaml index ce14f4a08..2fef94f0b 100644 --- a/localnet/poktrolld/config/supplier_stake_config_example.yaml +++ b/localnet/poktrolld/config/supplier_stake_config_example.yaml @@ -30,8 +30,8 @@ stake_amount: 1000069upokt # or include at least one item. default_rev_share_percent: # The sum of all shares MUST equal 100%. Staking will fail otherwise. - pokt1mrqt5f7qh8uxs27cjm9t7v9e74a9vvdnq5jva4: 80.5 - pokt1eeeksh2tvkh7wzmfrljnhw4wrhs55lcuvmekkw: 19.5 + pokt1mrqt5f7qh8uxs27cjm9t7v9e74a9vvdnq5jva4: 80 + pokt1eeeksh2tvkh7wzmfrljnhw4wrhs55lcuvmekkw: 20 services: # The endpoint URL for the Anvil service is provided via the RelayMiner. # The RelayMiner acts as a proxy, forwarding requests to the actual Anvil data node behind it. diff --git a/makefiles/localnet.mk b/makefiles/localnet.mk index d43cdccb6..9278457e6 100644 --- a/makefiles/localnet.mk +++ b/makefiles/localnet.mk @@ -29,3 +29,11 @@ localnet_regenesis: check_yq warn_message_acc_initialize_pubkeys ## Regenerate t .PHONY: cosmovisor_start_node cosmovisor_start_node: ## Starts the node using cosmovisor that waits for an upgrade plan bash tools/scripts/upgrades/cosmovisor-start-node.sh + +.PHONY: localnet_cancel_upgrade +localnet_cancel_upgrade: ## Cancels the planed upgrade on local node + poktrolld tx authz exec tools/scripts/upgrades/authz_cancel_upgrade_tx.json --gas=auto --from=pnf + +.PHONY: localnet_show_upgrade_plan +localnet_show_upgrade_plan: ## Shows the upgrade plan on local node + poktrolld query upgrade plan diff --git a/makefiles/relay.mk b/makefiles/relay.mk index 38c41bfcd..202dba1d7 100644 --- a/makefiles/relay.mk +++ b/makefiles/relay.mk @@ -6,9 +6,9 @@ send_relay_path_JSONRPC: test_e2e_env ## Send a JSONRPC relay through PATH to a local anvil (test ETH) node curl -X POST -H "Content-Type: application/json" \ -H "X-App-Address: pokt1mrqt5f7qh8uxs27cjm9t7v9e74a9vvdnq5jva4" \ + -H "target-service-id: anvil" \ --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}' \ - http://anvil.localhost:3000/v1 -# $(subst http://,http://anvil.,$(PATH_URL))/v1 + http://localhost:3000/v1/ # TODO_MAINNET(@red-0ne): Re-enable this once PATH Gateway supports REST. # See https://github.com/buildwithgrove/path/issues/87 diff --git a/makefiles/suppliers.mk b/makefiles/suppliers.mk index 2cceb2d8f..2e0f885e8 100644 --- a/makefiles/suppliers.mk +++ b/makefiles/suppliers.mk @@ -4,7 +4,15 @@ .PHONY: supplier_list supplier_list: ## List all the staked supplier - poktrolld --home=$(POKTROLLD_HOME) q supplier list-supplier --node $(POCKET_NODE) + poktrolld --home=$(POKTROLLD_HOME) q supplier list-suppliers --node $(POCKET_NODE) + +.PHONY: supplier_list_anvil +supplier_list_anvil: ## List all the staked supplier staked for the anvil service + poktrolld --home=$(POKTROLLD_HOME) q supplier list-suppliers --service-id anvil --node $(POCKET_NODE) + +.PHONY: supplier_show_supplier1 +supplier_show_supplier1: ## Show supplier1 details + poktrolld --home=$(POKTROLLD_HOME) q supplier show-supplier supplier1 --node $(POCKET_NODE) .PHONY: supplier_stake supplier_stake: ## Stake tokens for the supplier specified (must specify the SUPPLIER and SUPPLIER_CONFIG env vars) diff --git a/makefiles/testnet.mk b/makefiles/testnet.mk index 0a13c056c..cd974a8d1 100644 --- a/makefiles/testnet.mk +++ b/makefiles/testnet.mk @@ -4,7 +4,7 @@ .PHONY: testnet_supplier_list testnet_supplier_list: ## List all the staked supplier on TestNet - poktrolld q supplier list-supplier --node=$(TESTNET_RPC) + poktrolld q supplier list-suppliers --node=$(TESTNET_RPC) .PHONY: testnet_gateway_list testnet_gateway_list: ## List all the staked gateways on TestNet diff --git a/makefiles/tests.mk b/makefiles/tests.mk index 7bb292e3d..b1962c845 100644 --- a/makefiles/tests.mk +++ b/makefiles/tests.mk @@ -53,13 +53,13 @@ test_load_relays_stress_custom: ## Run the stress test for E2E relays using cust .PHONY: test_load_relays_stress_localnet test_load_relays_stress_localnet: test_e2e_env warn_message_local_stress_test ## Run the stress test for E2E relays on LocalNet. go test -v -count=1 ./load-testing/tests/... \ - -tags=load,test -run LoadRelays --log-level=debug --timeout=30m \ + -tags=load,test -run TestLoadRelays --log-level=debug --timeout=30m \ --manifest ./load-testing/loadtest_manifest_localnet.yaml .PHONY: test_load_relays_stress_localnet_single_supplier test_load_relays_stress_localnet_single_supplier: test_e2e_env warn_message_local_stress_test ## Run the stress test for E2E relays on LocalNet using exclusively one supplier. go test -v -count=1 ./load-testing/tests/... \ - -tags=load,test -run TestLoadRelaysSingleSupplier --log-level=debug --timeout=30m \ + -tags=load,test -run TestSingleSupplierLoadRelays --log-level=debug --timeout=30m \ --manifest ./load-testing/loadtest_manifest_localnet_single_supplier.yaml .PHONY: test_verbose diff --git a/pkg/client/block/client.go b/pkg/client/block/client.go index b76ecbac2..bbb184496 100644 --- a/pkg/client/block/client.go +++ b/pkg/client/block/client.go @@ -144,7 +144,7 @@ func (b *blockReplayClient) asyncForwardBlockEvent( ) } -// getInitialBlock fetches the latest committed on-chain block at the time the +// getInitialBlock fetches the latest committed onchain block at the time the // client starts up, while concurrently waiting for the next block event, // publishing whichever occurs first to latestBlockPublishCh. // This is necessary to ensure that the most recent block is available to the diff --git a/pkg/client/delegation/godoc.go b/pkg/client/delegation/godoc.go index 1d5b00139..f156662f6 100644 --- a/pkg/client/delegation/godoc.go +++ b/pkg/client/delegation/godoc.go @@ -1,5 +1,5 @@ // Package delegation contains a light wrapper of the EventsReplayClient[Redelegation] // generic which listens for redelegation events on chain and emits them -// through a ReplayObservable. This enables consumers to listen for on-chain +// through a ReplayObservable. This enables consumers to listen for onchain // application redelegation events and react to them asynchronously. package delegation diff --git a/pkg/client/events/godoc.go b/pkg/client/events/godoc.go index b5bbf685f..bd67f94b6 100644 --- a/pkg/client/events/godoc.go +++ b/pkg/client/events/godoc.go @@ -1,4 +1,4 @@ -// Package events provides a generic client for subscribing to on-chain events +// Package events provides a generic client for subscribing to onchain events // via an EventsQueryClient and transforming the received events into the type // defined by the EventsReplayClient's generic type parameter. // diff --git a/pkg/client/events/query_client.go b/pkg/client/events/query_client.go index e04731f8e..ed0475520 100644 --- a/pkg/client/events/query_client.go +++ b/pkg/client/events/query_client.go @@ -63,7 +63,7 @@ func (ebc *eventsBytesAndConn) Close() { } // NewEventsQueryClient returns a new events query client which is used to -// subscribe to on-chain events matching the given query. +// subscribe to onchain events matching the given query. // // Available options: // - WithDialer diff --git a/pkg/client/interface.go b/pkg/client/interface.go index ec3874273..9929b821a 100644 --- a/pkg/client/interface.go +++ b/pkg/client/interface.go @@ -58,7 +58,7 @@ type MsgSubmitProof interface { // able to construct blockchain transactions from pocket protocol-specific messages // related to its role. type SupplierClient interface { - // CreateClaims sends claim messages which creates an on-chain commitment by + // CreateClaims sends claim messages which creates an onchain commitment by // calling supplier to the given smt.SparseMerkleSumTree root hash of the given // session's mined relays. CreateClaims( @@ -67,7 +67,7 @@ type SupplierClient interface { ) error // SubmitProof sends proof messages which contain the smt.SparseCompactMerkleClosestProof, // corresponding to some previously created claim for the same session. - // The proof is validated on-chain as part of the pocket protocol. + // The proof is validated onchain as part of the pocket protocol. SubmitProofs( ctx context.Context, sessionProofs ...MsgSubmitProof, @@ -126,6 +126,13 @@ type TxContext interface { // GetClientCtx returns the cosmos-sdk client context associated with the transaction context. GetClientCtx() cosmosclient.Context + + // GetSimulatedTxGas returns the estimated gas for the given messages. + GetSimulatedTxGas( + ctx context.Context, + signingKeyName string, + msgs ...cosmostypes.Msg, + ) (uint64, error) } // Block is an interface which abstracts the details of a block to its minimal @@ -162,7 +169,7 @@ type BlockClient interface { // CommittedBlocksSequence returns a BlockObservable that emits the // latest blocks that have been committed to the chain. CommittedBlocksSequence(context.Context) BlockReplayObservable - // LastBlock returns the latest block that has been committed on-chain. + // LastBlock returns the latest block that has been committed onchain. LastBlock(context.Context) Block // Close unsubscribes all observers of the committed block sequence // observable and closes the events query client. @@ -255,7 +262,7 @@ type BlockClientOption func(BlockClient) type EventsReplayClientOption[T any] func(EventsReplayClient[T]) // AccountQueryClient defines an interface that enables the querying of the -// on-chain account information +// onchain account information type AccountQueryClient interface { // GetAccount queries the chain for the details of the account provided GetAccount(ctx context.Context, address string) (cosmostypes.AccountI, error) @@ -265,24 +272,27 @@ type AccountQueryClient interface { } // ApplicationQueryClient defines an interface that enables the querying of the -// on-chain application information +// onchain application information type ApplicationQueryClient interface { // GetApplication queries the chain for the details of the application provided GetApplication(ctx context.Context, appAddress string) (apptypes.Application, error) - // GetAllApplications queries all on-chain applications + // GetAllApplications queries all onchain applications GetAllApplications(ctx context.Context) ([]apptypes.Application, error) + + // GetParams queries the chain for the application module parameters. + GetParams(ctx context.Context) (*apptypes.Params, error) } // SupplierQueryClient defines an interface that enables the querying of the -// on-chain supplier information +// onchain supplier information type SupplierQueryClient interface { // GetSupplier queries the chain for the details of the supplier provided GetSupplier(ctx context.Context, supplierOperatorAddress string) (sharedtypes.Supplier, error) } // SessionQueryClient defines an interface that enables the querying of the -// on-chain session information +// onchain session information type SessionQueryClient interface { // GetSession queries the chain for the details of the session provided GetSession( @@ -297,7 +307,7 @@ type SessionQueryClient interface { } // SharedQueryClient defines an interface that enables the querying of the -// on-chain shared module params. +// onchain shared module params. type SharedQueryClient interface { // GetParams queries the chain for the current shared module parameters. GetParams(ctx context.Context) (*sharedtypes.Params, error) @@ -323,7 +333,7 @@ type SharedQueryClient interface { } // BlockQueryClient defines an interface that enables the querying of -// on-chain block information for a given height. If height is nil, the +// onchain block information for a given height. If height is nil, the // latest block is returned. type BlockQueryClient interface { Block(ctx context.Context, height *int64) (*cometrpctypes.ResultBlock, error) @@ -340,14 +350,14 @@ type ProofParams interface { } // ProofQueryClient defines an interface that enables the querying of the -// on-chain proof module params. +// onchain proof module params. type ProofQueryClient interface { - // GetParams queries the chain for the current shared module parameters. + // GetParams queries the chain for the current proof module parameters. GetParams(ctx context.Context) (ProofParams, error) } // ServiceQueryClient defines an interface that enables the querying of the -// on-chain service information +// onchain service information type ServiceQueryClient interface { // GetService queries the chain for the details of the service provided GetService(ctx context.Context, serviceId string) (sharedtypes.Service, error) @@ -355,7 +365,7 @@ type ServiceQueryClient interface { } // BankQueryClient defines an interface that enables the querying of the -// on-chain bank information +// onchain bank information type BankQueryClient interface { // GetBalance queries the chain for the uPOKT balance of the account provided GetBalance(ctx context.Context, address string) (*cosmostypes.Coin, error) diff --git a/pkg/client/query/accquerier.go b/pkg/client/query/accquerier.go index 2b4d9c2bc..932db5836 100644 --- a/pkg/client/query/accquerier.go +++ b/pkg/client/query/accquerier.go @@ -16,7 +16,7 @@ import ( var _ client.AccountQueryClient = (*accQuerier)(nil) // accQuerier is a wrapper around the accounttypes.QueryClient that enables the -// querying of on-chain account information through a single exposed method +// querying of onchain account information through a single exposed method // which returns an accounttypes.AccountI interface type accQuerier struct { clientConn grpc.ClientConn @@ -76,7 +76,7 @@ func (aq *accQuerier) GetAccount( // Fetched accounts must have their public key set. Do not cache accounts // that do not have a public key set, such as the ones resulting from genesis // as they may continue failing due to the caching mechanism, even after they - // got their public key recorded on-chain. + // got their public key recorded onchain. if fetchedAccount.GetPubKey() == nil { return nil, ErrQueryPubKeyNotFound } diff --git a/pkg/client/query/appquerier.go b/pkg/client/query/appquerier.go index 9477c35f9..356ce674c 100644 --- a/pkg/client/query/appquerier.go +++ b/pkg/client/query/appquerier.go @@ -13,7 +13,7 @@ import ( var _ client.ApplicationQueryClient = (*appQuerier)(nil) // appQuerier is a wrapper around the apptypes.QueryClient that enables the -// querying of on-chain application information through a single exposed method +// querying of onchain application information through a single exposed method // which returns an apptypes.Application interface type appQuerier struct { clientConn grpc.ClientConn @@ -62,3 +62,13 @@ func (aq *appQuerier) GetAllApplications(ctx context.Context) ([]apptypes.Applic } return res.Applications, nil } + +// GetParams returns the application module parameters +func (aq *appQuerier) GetParams(ctx context.Context) (*apptypes.Params, error) { + req := apptypes.QueryParamsRequest{} + res, err := aq.applicationQuerier.Params(ctx, &req) + if err != nil { + return nil, err + } + return &res.Params, nil +} diff --git a/pkg/client/query/bankquerier.go b/pkg/client/query/bankquerier.go index 198e5a3d5..ca28a4998 100644 --- a/pkg/client/query/bankquerier.go +++ b/pkg/client/query/bankquerier.go @@ -15,7 +15,7 @@ import ( var _ client.BankQueryClient = (*bankQuerier)(nil) // bankQuerier is a wrapper around the banktypes.QueryClient that enables the -// querying of on-chain balance information. +// querying of onchain balance information. type bankQuerier struct { clientConn grpc.ClientConn bankQuerier banktypes.QueryClient diff --git a/pkg/client/query/proofquerier.go b/pkg/client/query/proofquerier.go index 30c2984cd..6751dc995 100644 --- a/pkg/client/query/proofquerier.go +++ b/pkg/client/query/proofquerier.go @@ -11,7 +11,7 @@ import ( ) // proofQuerier is a wrapper around the prooftypes.QueryClient that enables the -// querying of on-chain proof module params. +// querying of onchain proof module params. type proofQuerier struct { clientConn grpc.ClientConn proofQuerier prooftypes.QueryClient diff --git a/pkg/client/query/servicequerier.go b/pkg/client/query/servicequerier.go index cb0629681..1f5ef2d2a 100644 --- a/pkg/client/query/servicequerier.go +++ b/pkg/client/query/servicequerier.go @@ -14,7 +14,7 @@ import ( var _ client.ServiceQueryClient = (*serviceQuerier)(nil) // serviceQuerier is a wrapper around the servicetypes.QueryClient that enables the -// querying of on-chain service information through a single exposed method +// querying of onchain service information through a single exposed method // which returns a sharedtypes.Service struct type serviceQuerier struct { clientConn grpc.ClientConn diff --git a/pkg/client/query/sessionquerier.go b/pkg/client/query/sessionquerier.go index 8553e3313..fdf6c42e9 100644 --- a/pkg/client/query/sessionquerier.go +++ b/pkg/client/query/sessionquerier.go @@ -13,7 +13,7 @@ import ( var _ client.SessionQueryClient = (*sessionQuerier)(nil) // sessionQuerier is a wrapper around the sessiontypes.QueryClient that enables the -// querying of on-chain session information through a single exposed method +// querying of onchain session information through a single exposed method // which returns an sessiontypes.Session struct type sessionQuerier struct { clientConn grpc.ClientConn @@ -63,7 +63,7 @@ func (sessq *sessionQuerier) GetSession( return res.Session, nil } -// GetParams queries & returns the session module on-chain parameters. +// GetParams queries & returns the session module onchain parameters. func (sessq *sessionQuerier) GetParams(ctx context.Context) (*sessiontypes.Params, error) { req := &sessiontypes.QueryParamsRequest{} res, err := sessq.sessionQuerier.Params(ctx, req) diff --git a/pkg/client/query/sharedquerier.go b/pkg/client/query/sharedquerier.go index 06e0ed90a..bbe67b0de 100644 --- a/pkg/client/query/sharedquerier.go +++ b/pkg/client/query/sharedquerier.go @@ -13,7 +13,7 @@ import ( var _ client.SharedQueryClient = (*sharedQuerier)(nil) // sharedQuerier is a wrapper around the sharedtypes.QueryClient that enables the -// querying of on-chain shared information through a single exposed method +// querying of onchain shared information through a single exposed method // which returns an sharedtypes.Session struct type sharedQuerier struct { clientConn grpc.ClientConn @@ -43,7 +43,7 @@ func NewSharedQuerier(deps depinject.Config) (client.SharedQueryClient, error) { return querier, nil } -// GetParams queries & returns the shared module on-chain parameters. +// GetParams queries & returns the shared module onchain parameters. // // TODO_TECHDEBT(#543): We don't really want to have to query the params for every method call. // Once `ModuleParamsClient` is implemented, use its replay observable's `#Last()` method diff --git a/pkg/client/query/supplierquerier.go b/pkg/client/query/supplierquerier.go index 040a4303f..927f2b335 100644 --- a/pkg/client/query/supplierquerier.go +++ b/pkg/client/query/supplierquerier.go @@ -12,7 +12,7 @@ import ( ) // supplierQuerier is a wrapper around the suppliertypes.QueryClient that enables the -// querying of on-chain supplier information through a single exposed method +// querying of onchain supplier information through a single exposed method // which returns an sharedtypes.Supplier struct type supplierQuerier struct { clientConn grpc.ClientConn diff --git a/pkg/client/supplier/client.go b/pkg/client/supplier/client.go index 018b751c8..f7d889f1b 100644 --- a/pkg/client/supplier/client.go +++ b/pkg/client/supplier/client.go @@ -81,7 +81,7 @@ func (sClient *supplierClient) SubmitProofs( } // TODO(@bryanchriswhite): reconcile splitting of supplier & proof modules - // with off-chain pkgs/nomenclature. + // with offchain pkgs/nomenclature. eitherErr := sClient.txClient.SignAndBroadcast(ctx, msgs...) err, errCh := eitherErr.SyncOrAsyncError() if err != nil { @@ -127,7 +127,7 @@ func (sClient *supplierClient) CreateClaims( } // TODO(@bryanchriswhite): reconcile splitting of supplier & proof modules - // with off-chain pkgs/nomenclature. + // with offchain pkgs/nomenclature. eitherErr := sClient.txClient.SignAndBroadcast(ctx, msgs...) err, errCh := eitherErr.SyncOrAsyncError() if err != nil { diff --git a/pkg/client/tx/client.go b/pkg/client/tx/client.go index 506db3d3e..a1f311dfc 100644 --- a/pkg/client/tx/client.go +++ b/pkg/client/tx/client.go @@ -8,6 +8,7 @@ import ( "sync" "cosmossdk.io/depinject" + "cosmossdk.io/math" abci "github.com/cometbft/cometbft/abci/types" "github.com/cometbft/cometbft/libs/json" rpctypes "github.com/cometbft/cometbft/rpc/jsonrpc/types" @@ -15,6 +16,7 @@ import ( cosmostypes "github.com/cosmos/cosmos-sdk/types" "go.uber.org/multierr" + "github.com/pokt-network/poktroll/app/volatile" "github.com/pokt-network/poktroll/pkg/client" "github.com/pokt-network/poktroll/pkg/client/events" "github.com/pokt-network/poktroll/pkg/client/keyring" @@ -103,6 +105,9 @@ type txClient struct { // that they have not already by the given timeout height. txTimeoutPool txTimeoutPool + // gasPrices is the gas unit prices used for sending transactions. + gasPrices cosmostypes.DecCoins + // connRetryLimit is the number of times the underlying replay client // should retry in the event that it encounters an error or its connection is interrupted. // If connRetryLimit is < 0, it will retry indefinitely. @@ -229,6 +234,12 @@ func (txnClient *txClient) SignAndBroadcast( return either.SyncErr(validationErrs) } + // Simulate the transaction to calculate the gas limit. + gasLimit, simErr := txnClient.txCtx.GetSimulatedTxGas(ctx, txnClient.signingKeyName, msgs...) + if simErr != nil { + return either.SyncErr(simErr) + } + // Construct the transactions using cosmos' transactions builder. txBuilder := txnClient.txCtx.NewTxBuilder() if err := txBuilder.SetMsgs(msgs...); err != nil { @@ -240,8 +251,21 @@ func (txnClient *txClient) SignAndBroadcast( timeoutHeight := txnClient.blockClient.LastBlock(ctx). Height() + txnClient.commitTimeoutHeightOffset - // TODO_TECHDEBT: this should be configurable - txBuilder.SetGasLimit(690000042) + txBuilder.SetGasLimit(gasLimit) + + gasLimitDec := math.LegacyNewDec(int64(gasLimit)) + feeAmountDec := txnClient.gasPrices.MulDec(gasLimitDec) + + feeCoins, changeCoins := feeAmountDec.TruncateDecimal() + // Ensure that any decimal remainder is added to the corresponding coin as a + // whole number. + // Since changeCoins is the result of DecCoins#TruncateDecimal, it will always + // be less than 1 unit of the feeCoins. + if !changeCoins.IsZero() { + feeCoins = feeCoins.Add(cosmostypes.NewInt64Coin(volatile.DenomuPOKT, 1)) + } + txBuilder.SetFeeAmount(feeCoins) + txBuilder.SetTimeoutHeight(uint64(timeoutHeight)) // sign transactions diff --git a/pkg/client/tx/client_test.go b/pkg/client/tx/client_test.go index e39985641..8b24e6677 100644 --- a/pkg/client/tx/client_test.go +++ b/pkg/client/tx/client_test.go @@ -272,7 +272,7 @@ func TestTxClient_SignAndBroadcast_SyncError(t *testing.T) { time.Sleep(10 * time.Millisecond) } -// TODO_INCOMPLETE: add coverage for async error; i.e. insufficient gas or on-chain error +// TODO_INCOMPLETE: add coverage for async error; i.e. insufficient gas or onchain error func TestTxClient_SignAndBroadcast_CheckTxError(t *testing.T) { var ( // expectedErrMsg is the expected error message that will be returned diff --git a/pkg/client/tx/context.go b/pkg/client/tx/context.go index 5f9c694ea..2c1d8fcde 100644 --- a/pkg/client/tx/context.go +++ b/pkg/client/tx/context.go @@ -9,12 +9,23 @@ import ( cosmostx "github.com/cosmos/cosmos-sdk/client/tx" cosmoskeyring "github.com/cosmos/cosmos-sdk/crypto/keyring" cosmostypes "github.com/cosmos/cosmos-sdk/types" + "github.com/cosmos/cosmos-sdk/types/tx" authclient "github.com/cosmos/cosmos-sdk/x/auth/client" + grpc "google.golang.org/grpc" "github.com/pokt-network/poktroll/pkg/client" txtypes "github.com/pokt-network/poktroll/pkg/client/tx/types" ) +// maxGRPCMsgSize is the maximum message size the gRPC client can send and receive. +// The current value has been set arbitrarily to a large value after empirically +// observing multiple Proof messages bundled within a single transaction exceeding +// the default 4MB limit. +// TODO_MAINNET: Adjust the max message size to a more sensible value. +// DEV_NOTE: This value should adjusted in concert with the CometBFT's rpc +// max_body_bytes, mempool max_tx_bytes and max_txs_bytes. +const maxGRPCMsgSize = 100 * 1024 * 1024 // 100MB + var _ client.TxContext = (*cosmosTxContext)(nil) // cosmosTxContext is an internal implementation of the client.TxContext interface. @@ -86,7 +97,9 @@ func (txCtx cosmosTxContext) EncodeTx(txBuilder cosmosclient.TxBuilder) ([]byte, // ABCI operation completes and returns a TxResponse of the transaction status at that point in time. func (txCtx cosmosTxContext) BroadcastTx(txBytes []byte) (*cosmostypes.TxResponse, error) { clientCtx := cosmosclient.Context(txCtx.clientCtx) - return clientCtx.BroadcastTxAsync(txBytes) + // BroadcastTxSync is used to capture any transaction error that occurs during + // the check-tx ABCI operation, otherwise errors would not be returned. + return clientCtx.BroadcastTxSync(txBytes) } // QueryTx queries the transaction based on its hash and optionally provides proof @@ -103,3 +116,53 @@ func (txCtx cosmosTxContext) QueryTx( func (txCtx cosmosTxContext) GetClientCtx() cosmosclient.Context { return cosmosclient.Context(txCtx.clientCtx) } + +// GetSimulatedTxGas calculates the gas for the given messages using the simulation mode. +func (txCtx cosmosTxContext) GetSimulatedTxGas( + ctx context.Context, + signingKeyName string, + msgs ...cosmostypes.Msg, +) (uint64, error) { + clientCtx := cosmosclient.Context(txCtx.clientCtx) + keyRecord, err := txCtx.GetKeyring().Key(signingKeyName) + if err != nil { + return 0, err + } + + accAddress, err := keyRecord.GetAddress() + if err != nil { + return 0, err + } + + accountRetriever := txCtx.clientCtx.AccountRetriever + _, seq, err := accountRetriever.GetAccountNumberSequence(clientCtx, accAddress) + if err != nil { + return 0, err + } + + txf := txCtx.txFactory. + WithSimulateAndExecute(true). + WithFromName(signingKeyName). + WithSequence(seq) + + txBytes, err := txf.BuildSimTx(msgs...) + if err != nil { + return 0, err + } + + txSvcClient := tx.NewServiceClient(clientCtx) + + simRequest := &tx.SimulateRequest{TxBytes: txBytes} + // Set the maximum message size for the gRPC client to allow large transactions + // (e.g. transactions with multiple proof messages) to be simulated. + gRPCOpts := []grpc.CallOption{ + grpc.MaxCallSendMsgSize(maxGRPCMsgSize), + grpc.MaxCallRecvMsgSize(maxGRPCMsgSize), + } + simRes, err := txSvcClient.Simulate(context.Background(), simRequest, gRPCOpts...) + if err != nil { + return 0, err + } + + return uint64(txf.GasAdjustment() * float64(simRes.GasInfo.GasUsed)), nil +} diff --git a/pkg/client/tx/options.go b/pkg/client/tx/options.go index 46e3dbcd2..f31736bcc 100644 --- a/pkg/client/tx/options.go +++ b/pkg/client/tx/options.go @@ -1,6 +1,10 @@ package tx -import "github.com/pokt-network/poktroll/pkg/client" +import ( + cosmostypes "github.com/cosmos/cosmos-sdk/types" + + "github.com/pokt-network/poktroll/pkg/client" +) // WithCommitTimeoutBlocks sets the timeout duration in terms of number of blocks // for the client to wait for broadcast transactions to be committed before @@ -28,3 +32,10 @@ func WithConnRetryLimit(limit int) client.TxClientOption { client.(*txClient).connRetryLimit = limit } } + +// WithGasPrices sets the gas price to be used when constructing transactions. +func WithGasPrices(gasPrices cosmostypes.DecCoins) client.TxClientOption { + return func(client client.TxClient) { + client.(*txClient).gasPrices = gasPrices + } +} diff --git a/pkg/crypto/interface.go b/pkg/crypto/interface.go index 6ed511da8..1a08dc009 100644 --- a/pkg/crypto/interface.go +++ b/pkg/crypto/interface.go @@ -21,10 +21,10 @@ type RingCache interface { // currently cached in the ring cache. GetCachedAddresses() []string // Start starts the ring cache, it takes a cancellable context and, in a - // separate goroutine, listens for on-chain delegation events and invalidates + // separate goroutine, listens for onchain delegation events and invalidates // the cache if the redelegation event's AppAddress is stored in the cache. Start(ctx context.Context) - // Stop stops the ring cache by unsubscribing from on-chain delegation events. + // Stop stops the ring cache by unsubscribing from onchain delegation events. // And clears the cache, so that it no longer contains any rings, Stop() } @@ -47,7 +47,7 @@ type RingClient interface { } // PubKeyClient is used to get the public key given an address. -// On-chain and off-chain implementations should take care of retrieving the +// Onchain and offchain implementations should take care of retrieving the // address' account and returning its public key. type PubKeyClient interface { // GetPubKeyFromAddress returns the public key of the given account address diff --git a/pkg/crypto/protocol/hasher.go b/pkg/crypto/protocol/hasher.go index 918c576bf..db95bc6f7 100644 --- a/pkg/crypto/protocol/hasher.go +++ b/pkg/crypto/protocol/hasher.go @@ -1,6 +1,10 @@ package protocol -import "crypto/sha256" +import ( + "crypto/sha256" + + "github.com/pokt-network/smt" +) const ( RelayHasherSize = sha256.Size @@ -15,3 +19,7 @@ var ( NewRelayHasher = sha256.New NewTrieHasher = sha256.New ) + +func SMTValueHasher() smt.TrieSpecOption { + return smt.WithValueHasher(nil) +} diff --git a/pkg/crypto/protocol/proof_path.go b/pkg/crypto/protocol/proof_path.go index 61f7e23ce..1a3dce465 100644 --- a/pkg/crypto/protocol/proof_path.go +++ b/pkg/crypto/protocol/proof_path.go @@ -1,33 +1,28 @@ package protocol import ( - "crypto/sha256" - "github.com/pokt-network/smt" ) -// SMT specification used for the proof verification. -var ( - newHasher = sha256.New - SmtSpec smt.TrieSpec -) - -func init() { - // Use a spec that does not prehash values in the smst. This returns a nil value - // hasher for the proof verification in order to avoid hashing the value twice. - SmtSpec = smt.NewTrieSpec( - newHasher(), true, - smt.WithValueHasher(nil), - ) -} - // GetPathForProof computes the path to be used for proof validation by hashing // the block hash and session id. func GetPathForProof(blockHash []byte, sessionId string) []byte { - hasher := newHasher() + hasher := NewTrieHasher() if _, err := hasher.Write(append(blockHash, []byte(sessionId)...)); err != nil { panic(err) } return hasher.Sum(nil) } + +// NewSMTSpec returns the SMT specification used for proof verification. +// A new hasher is created for each call to prevent concurrency issues +// from shared state. +func NewSMTSpec() *smt.TrieSpec { + trieSpec := smt.NewTrieSpec( + NewTrieHasher(), true, + SMTValueHasher(), + ) + + return &trieSpec +} diff --git a/pkg/crypto/protocol/relay_difficulty.go b/pkg/crypto/protocol/relay_difficulty.go index ff15bc6f2..385485e3b 100644 --- a/pkg/crypto/protocol/relay_difficulty.go +++ b/pkg/crypto/protocol/relay_difficulty.go @@ -90,7 +90,7 @@ func GetRelayDifficultyProbability(relayDifficultyHash []byte) *big.Rat { } // GetRelayDifficultyMultiplier returns the inverse of GetRelayDifficultyProbability -// to scale on-chain volume applicable relays to estimated serviced off-chain relays. +// to scale onchain volume applicable relays to estimated serviced offchain relays. func GetRelayDifficultyMultiplier(relayDifficultyHash []byte) *big.Rat { probability := GetRelayDifficultyProbability(relayDifficultyHash) return new(big.Rat).Inv(probability) diff --git a/pkg/crypto/protocol/relay_difficulty_test.go b/pkg/crypto/protocol/relay_difficulty_test.go index de7c4ebb0..846fc34cb 100644 --- a/pkg/crypto/protocol/relay_difficulty_test.go +++ b/pkg/crypto/protocol/relay_difficulty_test.go @@ -362,7 +362,7 @@ func TestRelayDifficulty_EnsureRelayMiningProbabilityIsProportional(t *testing.T // a session tree should have. const targetNumRelays = uint64(10e4) - // numEstimatedRelays aims to simulate the actual (i.e. off-chain) number of relays + // numEstimatedRelays aims to simulate the actual (i.e. offchain) number of relays // a RelayMiner would service successfully. for numEstimatedRelays := uint64(1); numEstimatedRelays < 1e18; numEstimatedRelays *= 10 { // Compute the relay mining difficulty corresponding to the actual number of relays @@ -410,7 +410,7 @@ func TestRelayDifficulty_TruncateRelayDifficultyHashToBaseSizeDoesNotChangeItsVa } // scaleRelaysFromActualToTarget scales the number of relays (i.e. estimated offchain serviced relays) -// down to the number of expected on-chain volume applicable relays +// down to the number of expected onchain volume applicable relays func scaleRelaysFromActualToTarget(t *testing.T, relayDifficultyProbability *big.Rat, numRelays uint64) uint64 { numRelaysRat := new(big.Rat).SetUint64(numRelays) volumeApplicableRelaysRat := new(big.Rat).Mul(relayDifficultyProbability, numRelaysRat) @@ -428,8 +428,8 @@ func TestRelayDifficulty_EnsureRelayMiningMultiplierIsProportional(t *testing.T) // Target Num Relays is the target number of volume applicable relays a session tree should have. const ( targetNumRelays = uint64(10e3) // Target number of volume applicable relays - lowVolumeService = 1e5 // Number of actual off-chain relays serviced by a RelayMiner - highVolumeService = 1e7 // Number of actual off-chain relays serviced by a RelayMiner + lowVolumeService = 1e5 // Number of actual offchain relays serviced by a RelayMiner + highVolumeService = 1e7 // Number of actual offchain relays serviced by a RelayMiner allowableDelta = 0.05 // Allow a 5% error margin between estimated probabilities and results ) diff --git a/pkg/crypto/rings/cache.go b/pkg/crypto/rings/cache.go index 8a401c386..4dfa2f52b 100644 --- a/pkg/crypto/rings/cache.go +++ b/pkg/crypto/rings/cache.go @@ -26,7 +26,7 @@ type ringCache struct { ringsByAddr map[string]*ring.Ring ringsByAddrMu *sync.RWMutex - // delegationClient is used to listen for on-chain delegation events and + // delegationClient is used to listen for onchain delegation events and // invalidate entries in ringsByAddr if an associated updated has been made. delegationClient client.DelegationClient @@ -66,7 +66,7 @@ func NewRingCache(deps depinject.Config) (_ crypto.RingCache, err error) { return rc, nil } -// Start starts the ring cache by subscribing to on-chain redelegation events. +// Start starts the ring cache by subscribing to onchain redelegation events. func (rc *ringCache) Start(ctx context.Context) { rc.logger.Info().Msg("starting ring cache") // Stop the ringCache when the context is cancelled. @@ -106,7 +106,7 @@ func (rc *ringCache) goInvalidateCache(ctx context.Context) { }) } -// Stop stops the ring cache by unsubscribing from on-chain redelegation events +// Stop stops the ring cache by unsubscribing from onchain redelegation events // and clears any existing entries. func (rc *ringCache) Stop() { // Clear the cache. diff --git a/pkg/deps/config/suppliers.go b/pkg/deps/config/suppliers.go index 1d964caee..26f04043e 100644 --- a/pkg/deps/config/suppliers.go +++ b/pkg/deps/config/suppliers.go @@ -2,14 +2,17 @@ package config import ( "context" + "fmt" "net/url" "cosmossdk.io/depinject" sdkclient "github.com/cosmos/cosmos-sdk/client" cosmosflags "github.com/cosmos/cosmos-sdk/client/flags" + cosmostypes "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/gogoproto/grpc" "github.com/spf13/cobra" + "github.com/pokt-network/poktroll/app/volatile" "github.com/pokt-network/poktroll/pkg/client/block" "github.com/pokt-network/poktroll/pkg/client/delegation" "github.com/pokt-network/poktroll/pkg/client/events" @@ -350,11 +353,21 @@ func NewSupplySupplierClientsFn(signingKeyNames []string) SupplierFn { return func( ctx context.Context, deps depinject.Config, - _ *cobra.Command, + cmd *cobra.Command, ) (depinject.Config, error) { + gasPriceStr, err := cmd.Flags().GetString(cosmosflags.FlagGasPrices) + if err != nil { + return nil, err + } + + gasPrices, err := cosmostypes.ParseDecCoins(gasPriceStr) + if err != nil { + return nil, err + } + suppliers := supplier.NewSupplierClientMap() for _, signingKeyName := range signingKeyNames { - txClientDepinjectConfig, err := newSupplyTxClientsFn(ctx, deps, signingKeyName) + txClientDepinjectConfig, err := newSupplyTxClientsFn(ctx, deps, signingKeyName, gasPrices) if err != nil { return nil, err } @@ -466,12 +479,27 @@ func NewSupplyBankQuerierFn() SupplierFn { // newSupplyTxClientFn returns a new depinject.Config which is supplied with // the given deps and the new TxClient. -func newSupplyTxClientsFn(ctx context.Context, deps depinject.Config, signingKeyName string) (depinject.Config, error) { +func newSupplyTxClientsFn( + ctx context.Context, + deps depinject.Config, + signingKeyName string, + gasPrices cosmostypes.DecCoins, +) (depinject.Config, error) { + // Ensure that the gas prices include upokt + for _, gasPrice := range gasPrices { + if gasPrice.Denom != volatile.DenomuPOKT { + // TODO_TECHDEBT(red-0ne): Allow other gas prices denominations once supported (e.g. mPOKT, POKT) + // See https://docs.cosmos.network/main/build/architecture/adr-024-coin-metadata#decision + return nil, fmt.Errorf("only gas prices with %s denom are supported", volatile.DenomuPOKT) + } + } + txClient, err := tx.NewTxClient( ctx, deps, tx.WithSigningKeyName(signingKeyName), tx.WithCommitTimeoutBlocks(tx.DefaultCommitTimeoutHeightOffset), + tx.WithGasPrices(gasPrices), ) if err != nil { return nil, err diff --git a/pkg/polylog/LICENSE b/pkg/polylog/LICENSE index 3914913fc..4819fb18c 100644 --- a/pkg/polylog/LICENSE +++ b/pkg/polylog/LICENSE @@ -2,7 +2,7 @@ The `Logger` and `Event` interfaces follow the `zerolog` package's API 1:1 (possibly partially) to make zerolog implementation/integration become the thinnest wrapper possible. -This is the API intended for all off-chain (i.e. under `/pkg`) logging. +This is the API intended for all offchain (i.e. under `/pkg`) logging. The following is the MIT LICENSE from `zerolog` package at the time of writing: (see: https://github.com/rs/zerolog) diff --git a/pkg/relayer/cmd/cmd.go b/pkg/relayer/cmd/cmd.go index 18cd07d42..574f405b4 100644 --- a/pkg/relayer/cmd/cmd.go +++ b/pkg/relayer/cmd/cmd.go @@ -48,16 +48,16 @@ func RelayerCmd() *cobra.Command { cmd := &cobra.Command{ Use: "relayminer", Short: "Start a RelayMiner", - Long: `Run a RelayMiner. A RelayMiner is the off-chain complementary + Long: `Run a RelayMiner. A RelayMiner is the offchain complementary middleware that handles incoming requests for all the services a Supplier staked -for on-chain. +for onchain. Relay requests received by the relay servers are validated and proxied to their -respective service endpoints, maintained by the relayer off-chain. The responses +respective service endpoints, maintained by the relayer offchain. The responses are then signed and sent back to the requesting application. For each successfully served relay, the miner will hash and compare its difficulty -against an on-chain threshold. If the difficulty is sufficient, it is applicable +against an onchain threshold. If the difficulty is sufficient, it is applicable to relay volume and therefore rewards. Such relays are inserted into and persisted via an SMT KV store. The miner will monitor the current block height and periodically submit claim and proof messages according to the protocol as sessions become eligible @@ -75,6 +75,8 @@ for such operations.`, cmd.Flags().Bool(cosmosflags.FlagGRPCInsecure, true, "Used to initialize the Cosmos query context with grpc security options. It can be used to override the `QueryNodeGRPCInsecure` field in the config file if specified.") cmd.Flags().String(cosmosflags.FlagChainID, "poktroll", "The network chain ID") cmd.Flags().StringVar(&flagLogLevel, cosmosflags.FlagLogLevel, "debug", "The logging level (debug|info|warn|error)") + cmd.Flags().Float64(cosmosflags.FlagGasAdjustment, 1.5, "The adjustment factor to be multiplied by the gas estimate returned by the tx simulation") + cmd.Flags().String(cosmosflags.FlagGasPrices, "1upokt", "Set the gas unit price in upokt") return cmd } diff --git a/pkg/relayer/config/types.go b/pkg/relayer/config/types.go index 8f72b0ff0..8c6ece4ab 100644 --- a/pkg/relayer/config/types.go +++ b/pkg/relayer/config/types.go @@ -126,7 +126,7 @@ type RelayMinerSupplierConfig struct { // ServerType is the transport protocol used by the supplier, it must match the // type of the relay miner server it is associated with. ServerType RelayMinerServerType - // PubliclyExposedEndpoints is a list of hosts advertised on-chain by the supplier, + // PubliclyExposedEndpoints is a list of hosts advertised onchain by the supplier, // the corresponding relay miner server will accept relay requests for these hosts. PubliclyExposedEndpoints []string // ServiceConfig is the config of the service that relays will be proxied to. diff --git a/pkg/relayer/interface.go b/pkg/relayer/interface.go index 766dcb5ce..ee9c8e484 100644 --- a/pkg/relayer/interface.go +++ b/pkg/relayer/interface.go @@ -140,7 +140,7 @@ type SessionTree interface { // Flush gets the root hash of the SMST needed for submitting the claim; // then commits the entire tree to disk and stops the KVStore. - // It should be called before submitting the claim on-chain. This function frees up + // It should be called before submitting the claim onchain. This function frees up // the in-memory resources used by the SMST that are no longer needed while waiting // for the proof submission window to open. Flush() (SMSTRoot []byte, err error) @@ -149,7 +149,7 @@ type SessionTree interface { // aiming to free up KVStore resources after the proof is no longer needed. // Delete deletes the SMST from the KVStore. // WARNING: This function should be called only after the proof has been successfully - // submitted on-chain and the servicer has confirmed that it has been rewarded. + // submitted onchain and the servicer has confirmed that it has been rewarded. Delete() error // StartClaiming marks the session tree as being picked up for claiming, diff --git a/pkg/relayer/proxy/proxy.go b/pkg/relayer/proxy/proxy.go index ad69a587b..9a76eb953 100644 --- a/pkg/relayer/proxy/proxy.go +++ b/pkg/relayer/proxy/proxy.go @@ -144,7 +144,7 @@ func NewRelayerProxy( // if any of them errors. // NB: This method IS BLOCKING until all RelayServers are stopped. func (rp *relayerProxy) Start(ctx context.Context) error { - // The provided services map is built from the supplier's on-chain advertised information, + // The provided services map is built from the supplier's onchain advertised information, // which is a runtime parameter that can be changed by the supplier. // NOTE: We build the provided services map at Start instead of NewRelayerProxy to avoid having to // return an error from the constructor. @@ -155,7 +155,7 @@ func (rp *relayerProxy) Start(ctx context.Context) error { // Start the ring cache. rp.ringCache.Start(ctx) - // Start the relay meter by subscribing to the on-chain events. + // Start the relay meter by subscribing to the onchain events. // This function is non-blocking and the subscription cancellation is handled // by the context passed to the Start method. if err := rp.relayMeter.Start(ctx); err != nil { diff --git a/pkg/relayer/proxy/proxy_test.go b/pkg/relayer/proxy/proxy_test.go index 3a022bc25..b9cb0b642 100644 --- a/pkg/relayer/proxy/proxy_test.go +++ b/pkg/relayer/proxy/proxy_test.go @@ -36,7 +36,7 @@ var ( // supplierEndpoints is the map of serviceName -> []SupplierEndpoint // where serviceName is the name of the service the supplier staked for - // and SupplierEndpoint is the endpoint of the service advertised on-chain + // and SupplierEndpoint is the endpoint of the service advertised onchain // by the supplier supplierEndpoints map[string][]*sharedtypes.SupplierEndpoint @@ -213,7 +213,7 @@ func TestRelayerProxy_EmptyServicesConfigMap(t *testing.T) { } // RelayerProxy should fail to start if it cannot spawn a server for the -// services it advertized on-chain. +// services it advertized onchain. func TestRelayerProxy_UnsupportedRpcType(t *testing.T) { ctx, cancel := context.WithCancel(context.TODO()) defer cancel() @@ -232,7 +232,7 @@ func TestRelayerProxy_UnsupportedRpcType(t *testing.T) { testproxy.WithRelayerProxyDependenciesForBlockHeight(supplierOperatorKeyName, blockHeight), testproxy.WithServicesConfigMap(servicesConfigMap), - // The supplier is staked on-chain but the service it provides is not supported by the proxy + // The supplier is staked onchain but the service it provides is not supported by the proxy testproxy.WithDefaultSupplier(supplierOperatorKeyName, unsupportedSupplierEndpoint), testproxy.WithDefaultApplication(appPrivateKey), testproxy.WithDefaultSessionSupplier(supplierOperatorKeyName, defaultService, appPrivateKey), diff --git a/pkg/relayer/proxy/server_builder.go b/pkg/relayer/proxy/server_builder.go index e386aa68d..9cf4d7864 100644 --- a/pkg/relayer/proxy/server_builder.go +++ b/pkg/relayer/proxy/server_builder.go @@ -16,7 +16,7 @@ import ( const ( // supplierStakeWaitTime is the time to wait for the supplier to be staked before - // attempting to (try again to) retrieve the supplier's on-chain record. + // attempting to (try again to) retrieve the supplier's onchain record. // This is useful for testing and development purposes, where the supplier // may not be staked before the relay miner starts. supplierStakeWaitTime = 1 * time.Second @@ -25,13 +25,13 @@ const ( // if the supplier is still not staked when the time elapses. // // This is intentionally a larger number because if a RelayMiner is provisioned - // for this long (either in testing or in prod) without an associated on-chain + // for this long (either in testing or in prod) without an associated onchain // supplier being stake, we need to communicate it either to the operator or // to the developer. supplierMaxStakeWaitTimeMinutes = 20 * time.Minute ) -// BuildProvidedServices builds the advertised relay servers from the supplier's on-chain advertised services. +// BuildProvidedServices builds the advertised relay servers from the supplier's onchain advertised services. // It populates the relayerProxy's `advertisedRelayServers` map of servers for each service, where each server // is responsible for listening for incoming relay requests and relaying them to the supported proxied service. func (rp *relayerProxy) BuildProvidedServices(ctx context.Context) error { @@ -57,7 +57,7 @@ func (rp *relayerProxy) BuildProvidedServices(ctx context.Context) error { // MainNet it might not be that big of a deal, though. // Prevent the RelayMiner from stopping by waiting until its associated supplier - // is staked and its on-chain record retrieved. + // is staked and its onchain record retrieved. supplier, err := rp.waitForSupplierToStake(ctx, supplierOperatorAddress.String()) if err != nil { return err @@ -138,7 +138,7 @@ func (rp *relayerProxy) initializeProxyServers() (proxyServerMap map[string]rela return servers, nil } -// waitForSupplierToStake waits in a loop until it gets the on-chain supplier's +// waitForSupplierToStake waits in a loop until it gets the onchain supplier's // information back. // This is useful for testing and development purposes, in production the supplier // is most likely staked before the relay miner starts. @@ -148,14 +148,14 @@ func (rp *relayerProxy) waitForSupplierToStake( ) (supplier sharedtypes.Supplier, err error) { startTime := time.Now() for { - // Get the supplier's on-chain record + // Get the supplier's onchain record supplier, err = rp.supplierQuerier.GetSupplier(ctx, supplierOperatorAddress) // If the supplier is not found, wait for the supplier to be staked. // This enables provisioning and deploying a RelayMiner without staking a - // supplier on-chain. For testing purposes, this is particularly useful + // supplier onchain. For testing purposes, this is particularly useful // to eliminate the needed of additional communication & coordination - // between on-chain staking and off-chain provisioning. + // between onchain staking and offchain provisioning. if err != nil && suppliertypes.ErrSupplierNotFound.Is(err) { rp.logger.Info().Msgf( "Waiting %d seconds for the supplier with address %s to stake", diff --git a/pkg/relayer/proxy/synchronous.go b/pkg/relayer/proxy/synchronous.go index 6d4d69266..a94af25dc 100644 --- a/pkg/relayer/proxy/synchronous.go +++ b/pkg/relayer/proxy/synchronous.go @@ -127,7 +127,7 @@ func (sync *synchronousRPCServer) ServeHTTP(writer http.ResponseWriter, request originHost := request.Host // When the proxy is behind a reverse proxy, or is getting its requests from - // a CDN or a load balancer, the host header may not contain the on-chain + // a CDN or a load balancer, the host header may not contain the onchain // advertized address needed to determine the service that the relay request is for. // These CDNs and reverse proxies usually set the X-Forwarded-Host header // to the original host. diff --git a/pkg/relayer/relayminer.go b/pkg/relayer/relayminer.go index a81e2d982..505d5dbd5 100644 --- a/pkg/relayer/relayminer.go +++ b/pkg/relayer/relayminer.go @@ -63,7 +63,7 @@ func (rel *relayMiner) Start(ctx context.Context) error { // This is a blocking call as it waits for the waitgroup in relayerProxy.Start() // that starts all the relay servers to be done. rel.logger.Info().Msg("starting relayer proxy") - // TODO_TECHDEBT: Listen for on-chain and local configuration changes, stop + // TODO_TECHDEBT: Listen for onchain and local configuration changes, stop // the relayerProxy if they do not match, then wait until they match again // before starting the relayerProxy with the new config. // Session manager should continue to run during this time, submitting diff --git a/pkg/relayer/session/claim.go b/pkg/relayer/session/claim.go index 61892f24c..4d09fb2a7 100644 --- a/pkg/relayer/session/claim.go +++ b/pkg/relayer/session/claim.go @@ -5,8 +5,10 @@ import ( "fmt" "slices" + sdktypes "github.com/cosmos/cosmos-sdk/types" "github.com/pokt-network/smt" + "github.com/pokt-network/poktroll/app/volatile" "github.com/pokt-network/poktroll/pkg/client" "github.com/pokt-network/poktroll/pkg/either" "github.com/pokt-network/poktroll/pkg/observable" @@ -18,9 +20,16 @@ import ( sharedtypes "github.com/pokt-network/poktroll/x/shared/types" ) +// The cumulative fees of creating a single claim, followed by submitting a single proof. +// The value was obtained empirically by observing logs during load testing and observing +// the claim & proof lifecycle. +// The gas price at the time of observance was 0.01uPOKT. +// The value is subject to change as the network parameters change. +var ClamAndProofGasCost = sdktypes.NewInt64Coin(volatile.DenomuPOKT, 50000) + // createClaims maps over the sessionsToClaimObs observable. For each claim batch, it: // 1. Calculates the earliest block height at which it is safe to CreateClaims -// 2. Waits for said block and creates the claims on-chain +// 2. Waits for said block and creates the claims onchain // 3. Maps errors to a new observable and logs them // 4. Returns an observable of the successfully claimed sessions // It DOES NOT BLOCK as map operations run in their own goroutines. @@ -91,7 +100,7 @@ func (rs *relayerSessionsManager) mapWaitForEarliestCreateClaimsHeight( // waitForEarliestCreateClaimsHeight calculates and waits for (blocking until) the // earliest block height, allowed by the protocol, at which claims can be created // for a session with the given sessionEndHeight. It is calculated relative to -// sessionEndHeight using on-chain governance parameters and randomized input. +// sessionEndHeight using onchain governance parameters and randomized input. // It IS A BLOCKING function. func (rs *relayerSessionsManager) waitForEarliestCreateClaimsHeight( ctx context.Context, @@ -124,7 +133,7 @@ func (rs *relayerSessionsManager) waitForEarliestCreateClaimsHeight( logger.Info().Msg("waiting & blocking until the earliest claim commit height offset seed block height") // The block that'll be used as a source of entropy for which branch(es) to - // prove should be deterministic and use on-chain governance params. + // prove should be deterministic and use onchain governance params. claimsWindowOpenBlock := rs.waitForBlock(ctx, claimWindowOpenHeight) // TODO_MAINNET: If a relayminer is cold-started with persisted but unclaimed ("late") // sessions, the claimsWindowOpenBlock will never be observed. In this case, we should @@ -260,7 +269,10 @@ func (rs *relayerSessionsManager) payableProofsSessionTrees( if err != nil { return nil, err } - proofSubmissionFeeCoin := proofParams.GetProofSubmissionFee() + + // Account for the gas cost of creating a claim and submitting a proof in addition + // to the ProofSubmissionFee. + claimAndProofSubmissionCost := proofParams.GetProofSubmissionFee().Add(ClamAndProofGasCost) supplierOperatorBalanceCoin, err := rs.bankQueryClient.GetBalance( ctx, @@ -301,19 +313,30 @@ func (rs *relayerSessionsManager) payableProofsSessionTrees( for _, sessionTree := range sessionTrees { // If the supplier operator can afford to claim the session, add it to the // claimableSessionTrees slice. - if supplierOperatorBalanceCoin.IsGTE(*proofSubmissionFeeCoin) { + supplierCanAffordClaimAndProofFees := supplierOperatorBalanceCoin.IsGTE(claimAndProofSubmissionCost) + if supplierCanAffordClaimAndProofFees { claimableSessionTrees = append(claimableSessionTrees, sessionTree) - newSupplierOperatorBalanceCoin := supplierOperatorBalanceCoin.Sub(*proofSubmissionFeeCoin) + newSupplierOperatorBalanceCoin := supplierOperatorBalanceCoin.Sub(claimAndProofSubmissionCost) supplierOperatorBalanceCoin = &newSupplierOperatorBalanceCoin continue } + // At this point supplierCanAffordClaimAndProofFees is false. + // Delete the session tree from the relayer sessions and the KVStore since + // it won't be claimed due to insufficient funds. + rs.removeFromRelayerSessions(sessionTree) + if err := sessionTree.Delete(); err != nil { + logger.With( + "session_id", sessionTree.GetSessionHeader().GetSessionId(), + ).Error().Err(err).Msg("failed to delete session tree") + } + // Log a warning of any session that the supplier operator cannot afford to claim. logger.With( "session_id", sessionTree.GetSessionHeader().GetSessionId(), "supplier_operator_balance", supplierOperatorBalanceCoin, - "proof_submission_fee", proofSubmissionFeeCoin, - ).Warn().Msg("supplier operator cannot afford to submit proof for claim, skipping") + "proof_submission_fee", claimAndProofSubmissionCost, + ).Warn().Msg("supplier operator cannot afford to submit proof for claim, deleting session tree") } if len(claimableSessionTrees) < len(sessionTrees) { diff --git a/pkg/relayer/session/proof.go b/pkg/relayer/session/proof.go index 9e80c0da4..728615cfb 100644 --- a/pkg/relayer/session/proof.go +++ b/pkg/relayer/session/proof.go @@ -19,7 +19,7 @@ import ( // submitProofs maps over the given claimedSessions observable. // For each session batch, it: // 1. Calculates the earliest block height at which to submit proofs -// 2. Waits for said height and submits the proofs on-chain +// 2. Waits for said height and submits the proofs onchain // 3. Maps errors to a new observable and logs them // It DOES NOT BLOCK as map operations run in their own goroutines. func (rs *relayerSessionsManager) submitProofs( @@ -76,7 +76,7 @@ func (rs *relayerSessionsManager) mapWaitForEarliestSubmitProofsHeight( // waitForEarliestSubmitProofsHeightAndGenerateProofs calculates and waits for // (blocking until) the earliest block height, allowed by the protocol, at which // proofs can be submitted for a session number which were claimed at createClaimHeight. -// It is calculated relative to createClaimHeight using on-chain governance parameters +// It is calculated relative to createClaimHeight using onchain governance parameters // and randomized input. func (rs *relayerSessionsManager) waitForEarliestSubmitProofsHeightAndGenerateProofs( ctx context.Context, @@ -256,8 +256,8 @@ func (rs *relayerSessionsManager) proveClaims( // isProofRequired determines whether a proof is required for the given session's // claim based on the current proof module governance parameters. -// TODO_TECHDEBT: Refactor the method to be static and used both on-chain and off-chain. -// TODO_INVESTIGATE: Passing a polylog.Logger should allow for on-chain/off-chain +// TODO_TECHDEBT: Refactor the method to be static and used both onchain and offchain. +// TODO_INVESTIGATE: Passing a polylog.Logger should allow for onchain/offchain // usage of this function but it is currently raising a type error. func (rs *relayerSessionsManager) isProofRequired( ctx context.Context, diff --git a/pkg/relayer/session/service.go b/pkg/relayer/session/service.go index 33d8b57de..f5b84c6ec 100644 --- a/pkg/relayer/session/service.go +++ b/pkg/relayer/session/service.go @@ -17,7 +17,7 @@ func (rs *relayerSessionsManager) getServiceComputeUnitsPerRelay( service, err := rs.serviceQueryClient.GetService(ctx, sessionHeader.ServiceId) if err != nil { return 0, ErrSessionRelayMetaHasInvalidServiceID.Wrapf( - "getServiceComputeUnitsPerRelay: could not get on-chain service %s: %v", + "getServiceComputeUnitsPerRelay: could not get onchain service %s: %v", sessionHeader.ServiceId, err, ) diff --git a/pkg/relayer/session/session_test.go b/pkg/relayer/session/session_test.go index 5b5757040..03cbf00ed 100644 --- a/pkg/relayer/session/session_test.go +++ b/pkg/relayer/session/session_test.go @@ -73,9 +73,9 @@ func requireProofCountEqualsExpectedValueFromProofParams(t *testing.T, proofPara } supplierOperatorAddress := sample.AccAddress() // Set the supplier operator balance to be able to submit the expected number of proofs. - feePerProof := prooftypes.DefaultParams().ProofSubmissionFee.Amount.Int64() + claimAndFeeGasCost := session.ClamAndProofGasCost.Amount.Int64() numExpectedProofs := int64(2) - supplierOperatorBalance := feePerProof * numExpectedProofs + supplierOperatorBalance := claimAndFeeGasCost * numExpectedProofs supplierClientMap := testsupplier.NewClaimProofSupplierClientMap(ctx, t, supplierOperatorAddress, proofCount) blockPublishCh, minedRelaysPublishCh := setupDependencies(t, ctx, supplierClientMap, emptyBlockHash, proofParams, supplierOperatorBalance) @@ -207,8 +207,11 @@ func TestRelayerSessionsManager_InsufficientBalanceForProofSubmission(t *testing supplierOperatorAddress := sample.AccAddress() supplierOperatorAccAddress := sdktypes.MustAccAddressFromBech32(supplierOperatorAddress) + + proofSubmissionFee := prooftypes.DefaultParams().ProofSubmissionFee.Amount.Int64() + claimAndProofGasCost := session.ClamAndProofGasCost.Amount.Int64() // Set the supplier operator balance to be able to submit only a single proof. - supplierOperatorBalance := prooftypes.DefaultParams().ProofSubmissionFee.Amount.Int64() + 1 + supplierOperatorBalance := proofSubmissionFee + claimAndProofGasCost + 1 supplierClientMock.EXPECT(). OperatorAddress(). Return(&supplierOperatorAccAddress). diff --git a/pkg/relayer/session/sessiontree.go b/pkg/relayer/session/sessiontree.go index df1bfde79..a5a56137c 100644 --- a/pkg/relayer/session/sessiontree.go +++ b/pkg/relayer/session/sessiontree.go @@ -2,7 +2,6 @@ package session import ( "bytes" - "crypto/sha256" "fmt" "os" "path/filepath" @@ -93,8 +92,8 @@ func NewSessionTree( } // Create the SMST from the KVStore and a nil value hasher so the proof would - // contain a non-hashed Relay that could be used to validate the proof on-chain. - trie := smt.NewSparseMerkleSumTrie(treeStore, protocol.NewTrieHasher(), smt.WithValueHasher(nil)) + // contain a non-hashed Relay that could be used to validate the proof onchain. + trie := smt.NewSparseMerkleSumTrie(treeStore, protocol.NewTrieHasher(), protocol.SMTValueHasher()) logger = logger.With( "store_path", storePath, @@ -175,7 +174,7 @@ func (st *sessionTree) ProveClosest(path []byte) (compactProof *smt.SparseCompac return nil, err } - sessionSMT := smt.ImportSparseMerkleSumTrie(st.treeStore, sha256.New(), st.claimedRoot, smt.WithValueHasher(nil)) + sessionSMT := smt.ImportSparseMerkleSumTrie(st.treeStore, protocol.NewTrieHasher(), st.claimedRoot, protocol.SMTValueHasher()) // Generate the proof and cache it along with the path for which it was generated. // There is no ProveClosest variant that generates a compact proof directly. @@ -221,7 +220,7 @@ func (st *sessionTree) GetProof() *smt.SparseCompactMerkleClosestProof { // Flush gets the root hash of the SMST needed for submitting the claim; // then commits the entire tree to disk and stops the KVStore. -// It should be called before submitting the claim on-chain. This function frees up the KVStore resources. +// It should be called before submitting the claim onchain. This function frees up the KVStore resources. // If the SMST has already been flushed to disk, it returns the cached root hash. func (st *sessionTree) Flush() (SMSTRoot []byte, err error) { st.sessionMu.Lock() @@ -257,7 +256,7 @@ func (st *sessionTree) GetClaimRoot() []byte { // Delete deletes the SMST from the KVStore and removes the sessionTree from the RelayerSessionsManager. // WARNING: This function deletes the KVStore associated to the session and should be -// called only after the proof has been successfully submitted on-chain and the servicer +// called only after the proof has been successfully submitted onchain and the servicer // has confirmed that it has been rewarded. func (st *sessionTree) Delete() error { st.sessionMu.Lock() diff --git a/pkg/relayer/session/sessiontree_test.go b/pkg/relayer/session/sessiontree_test.go index 762ebcb1b..c42e6d568 100644 --- a/pkg/relayer/session/sessiontree_test.go +++ b/pkg/relayer/session/sessiontree_test.go @@ -39,7 +39,7 @@ func TestSessionTree_CompactProofsAreSmallerThanNonCompactProofs(t *testing.T) { kvStore, err := pebble.NewKVStore("") require.NoError(t, err) - trie := smt.NewSparseMerkleSumTrie(kvStore, protocol.NewTrieHasher(), smt.WithValueHasher(nil)) + trie := smt.NewSparseMerkleSumTrie(kvStore, protocol.NewTrieHasher(), protocol.SMTValueHasher()) // Insert numLeaf random leaves. for i := 0; i < numLeafs; i++ { diff --git a/proto/Dockerfile.ignite b/proto/Dockerfile.ignite new file mode 100644 index 000000000..a33be5d22 --- /dev/null +++ b/proto/Dockerfile.ignite @@ -0,0 +1,13 @@ +# This Dockerfile exists to ensure Ignite OpenAPI works on any platforms. +# To use it to update `docs/static/openapi.yml`, simply run: +# $ make ignite_openapi_gen + +FROM golang:1.23.5 + +# Install Ignite CLI +RUN curl https://get.ignite.com/cli\! | bash + +WORKDIR /workspace + +# Generate the OpenAPI spec and output to docs/static/openapi.yam +CMD ["ignite", "generate", "openapi", "--yes"] diff --git a/proto/poktroll/application/types.proto b/proto/poktroll/application/types.proto index 951359be2..81e7e893e 100644 --- a/proto/poktroll/application/types.proto +++ b/proto/poktroll/application/types.proto @@ -14,30 +14,38 @@ import "cosmos_proto/cosmos.proto"; import "poktroll/shared/service.proto"; -// Application defines the type used to store an on-chain definition and state for an application +// Application represents the on-chain definition and state of an application message Application { - string address = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"]; // The Bech32 address of the application. - cosmos.base.v1beta1.Coin stake = 2; // The total amount of uPOKT the application has staked - // CRITICAL_DEV_NOTE: The number of service_configs must be EXACTLY ONE. + // Bech32 address of the application + string address = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"]; + + // Total amount of staked uPOKT + cosmos.base.v1beta1.Coin stake = 2; + + // CRITICAL: Must contain EXACTLY ONE service config // This prevents applications from over-servicing. - // The field is kept repeated (a list) for both legacy and future logic reaosns. - // References: - // - https://github.com/pokt-network/poktroll/pull/750#discussion_r1735025033 - // - https://www.notion.so/buildwithgrove/Off-chain-Application-Stake-Tracking-6a8bebb107db4f7f9dc62cbe7ba555f7 - repeated poktroll.shared.ApplicationServiceConfig service_configs = 3; // The list of services this appliccation is configured to request service for + // Kept as repeated field for legacy and future compatibility + // Refs: + // - https://github.com/pokt-network/poktroll/pull/750#discussion_r1735025033 + // - https://www.notion.so/buildwithgrove/Off-chain-Application-Stake-Tracking-6a8bebb107db4f7f9dc62cbe7ba555f7 + repeated poktroll.shared.ApplicationServiceConfig service_configs = 3; + // TODO_BETA(@bryanchriswhite): Rename `delegatee_gateway_addresses` to `gateway_addresses_delegated_to`. // Ensure to rename all relevant configs, comments, variables, function names, etc as well. - repeated string delegatee_gateway_addresses = 4 [(cosmos_proto.scalar) = "cosmos.AddressString", (gogoproto.nullable) = false]; // The Bech32 encoded addresses for all delegatee Gateways, in a non-nullable slice - // A map from sessionEndHeights to a list of Gateways. - // The key is the height of the last block of the session during which the - // respective undelegation was committed. - // The value is a list of gateways being undelegated from. + // Non-nullable list of Bech32 encoded delegatee Gateway addresses + repeated string delegatee_gateway_addresses = 4 [(cosmos_proto.scalar) = "cosmos.AddressString", (gogoproto.nullable) = false]; + + // Mapping of session end heights to gateways being undelegated from + // - Key: Height of the last block of the session when undelegation tx was committed + // - Value: List of gateways being undelegated from // TODO_DOCUMENT(@red-0ne): Need to document the flow from this comment // so its clear to everyone why this is necessary; https://github.com/pokt-network/poktroll/issues/476#issuecomment-2052639906. map pending_undelegations = 5 [(gogoproto.nullable) = false]; - // The end height of the session at which an application initiated its unstaking process. - // If the application did not unstake, this value will be 0. + + // Session end height when application initiated unstaking (0 if not unstaking) uint64 unstake_session_end_height = 6; + + // Information about pending application transfers PendingApplicationTransfer pending_transfer = 7; } diff --git a/proto/poktroll/migration/genesis.proto b/proto/poktroll/migration/genesis.proto new file mode 100644 index 000000000..f176aaacc --- /dev/null +++ b/proto/poktroll/migration/genesis.proto @@ -0,0 +1,18 @@ +syntax = "proto3"; +package poktroll.migration; + +import "amino/amino.proto"; +import "gogoproto/gogo.proto"; +import "poktroll/migration/params.proto"; + +option go_package = "github.com/pokt-network/poktroll/x/migration/types"; +option (gogoproto.stable_marshaler_all) = true; + +// GenesisState defines the migration module's genesis state. +message GenesisState { + // params defines all the parameters of the module. + Params params = 1 [ + (gogoproto.nullable) = false, + (amino.dont_omitempty) = true + ]; +} diff --git a/proto/poktroll/migration/module/module.proto b/proto/poktroll/migration/module/module.proto new file mode 100644 index 000000000..26ce1692d --- /dev/null +++ b/proto/poktroll/migration/module/module.proto @@ -0,0 +1,17 @@ +syntax = "proto3"; +package poktroll.migration.module; + +option (gogoproto.stable_marshaler_all) = true; + +import "cosmos/app/v1alpha1/module.proto"; +import "gogoproto/gogo.proto"; + +// Module is the config object for the module. +message Module { + option (cosmos.app.v1alpha1.module) = { + go_import: "github.com/pokt-network/poktroll/x/migration" + }; + + // authority defines the custom module authority. If not set, defaults to the governance module. + string authority = 1; +} diff --git a/proto/poktroll/migration/params.proto b/proto/poktroll/migration/params.proto new file mode 100644 index 000000000..9b7b71a61 --- /dev/null +++ b/proto/poktroll/migration/params.proto @@ -0,0 +1,14 @@ +syntax = "proto3"; +package poktroll.migration; + +import "amino/amino.proto"; +import "gogoproto/gogo.proto"; + +option go_package = "github.com/pokt-network/poktroll/x/migration/types"; +option (gogoproto.stable_marshaler_all) = true; + +// Params defines the parameters for the module. +message Params { + option (amino.name) = "poktroll/x/migration/Params"; + option (gogoproto.equal) = true; +} \ No newline at end of file diff --git a/proto/poktroll/migration/query.proto b/proto/poktroll/migration/query.proto new file mode 100644 index 000000000..c3c04bc0c --- /dev/null +++ b/proto/poktroll/migration/query.proto @@ -0,0 +1,31 @@ +syntax = "proto3"; +package poktroll.migration; + +import "amino/amino.proto"; +import "gogoproto/gogo.proto"; +import "google/api/annotations.proto"; +import "cosmos/base/query/v1beta1/pagination.proto"; +import "poktroll/migration/params.proto"; + +option go_package = "github.com/pokt-network/poktroll/x/migration/types"; +option (gogoproto.stable_marshaler_all) = true; + +// Query defines the gRPC querier service. +service Query { + // Parameters queries the parameters of the module. + rpc Params(QueryParamsRequest) returns (QueryParamsResponse) { + option (google.api.http).get = "/pokt-network/poktroll/migration/params"; + } +} + +// QueryParamsRequest is request type for the Query/Params RPC method. +message QueryParamsRequest {} + +// QueryParamsResponse is response type for the Query/Params RPC method. +message QueryParamsResponse { + // params holds all the parameters of this module. + Params params = 1 [ + (gogoproto.nullable) = false, + (amino.dont_omitempty) = true + ]; +} \ No newline at end of file diff --git a/proto/poktroll/migration/tx.proto b/proto/poktroll/migration/tx.proto new file mode 100644 index 000000000..9e9957de3 --- /dev/null +++ b/proto/poktroll/migration/tx.proto @@ -0,0 +1,41 @@ +syntax = "proto3"; +package poktroll.migration; + +import "amino/amino.proto"; +import "cosmos/msg/v1/msg.proto"; +import "cosmos_proto/cosmos.proto"; +import "gogoproto/gogo.proto"; +import "poktroll/migration/params.proto"; + +option go_package = "github.com/pokt-network/poktroll/x/migration/types"; +option (gogoproto.stable_marshaler_all) = true; + +// Msg defines the Msg service. +service Msg { + option (cosmos.msg.v1.service) = true; + + // UpdateParams defines a (governance) operation for updating the module + // parameters. The authority defaults to the x/gov module account. + rpc UpdateParams(MsgUpdateParams) returns (MsgUpdateParamsResponse); +} + +// MsgUpdateParams is the Msg/UpdateParams request type. +message MsgUpdateParams { + option (cosmos.msg.v1.signer) = "authority"; + option (amino.name) = "poktroll/x/migration/MsgUpdateParams"; + + // authority is the address that controls the module (defaults to x/gov unless overwritten). + string authority = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"]; + + // params defines the module parameters to update. + // + // NOTE: All parameters must be supplied. + Params params = 2 [ + (gogoproto.nullable) = false, + (amino.dont_omitempty) = true + ]; +} + +// MsgUpdateParamsResponse defines the response structure for executing a +// MsgUpdateParams message. +message MsgUpdateParamsResponse {} \ No newline at end of file diff --git a/proto/poktroll/proof/event.proto b/proto/poktroll/proof/event.proto index b4e99aad9..f14fbd8b5 100644 --- a/proto/poktroll/proof/event.proto +++ b/proto/poktroll/proof/event.proto @@ -43,3 +43,14 @@ message EventProofUpdated { uint64 num_estimated_compute_units = 5 [(gogoproto.jsontag) = "num_estimated_compute_units"]; cosmos.base.v1beta1.Coin claimed_upokt = 6 [(gogoproto.jsontag) = "claimed_upokt"]; } + +// Event emitted after a proof has been checked for validity in the proof module's +// EndBlocker. +message EventProofValidityChecked { + poktroll.proof.Proof proof = 1 [(gogoproto.jsontag) = "proof"]; + uint64 block_height = 2 [(gogoproto.jsontag) = "block_height"]; + poktroll.proof.ClaimProofStatus proof_status = 3 [(gogoproto.jsontag) = "proof_status"]; + // reason is the string representation of the error that led to the proof being + // marked as invalid (e.g. "invalid closest merkle proof", "invalid relay request signature") + string failure_reason = 4 [(gogoproto.jsontag) = "failure_reason"]; +} diff --git a/proto/poktroll/proof/params.proto b/proto/poktroll/proof/params.proto index d107e1b99..e4b86a63f 100644 --- a/proto/poktroll/proof/params.proto +++ b/proto/poktroll/proof/params.proto @@ -33,7 +33,7 @@ message Params { // proof_submission_fee is the number of tokens (uPOKT) which should be paid by // the supplier operator when submitting a proof. - // This is needed to account for the cost of storing proofs on-chain and prevent + // This is needed to account for the cost of storing proofs onchain and prevent // spamming (i.e. sybil bloat attacks) the network with non-required proofs. // TODO_MAINNET: Consider renaming this to `proof_submission_fee_upokt`. cosmos.base.v1beta1.Coin proof_submission_fee = 5 [(gogoproto.jsontag) = "proof_submission_fee"]; diff --git a/proto/poktroll/proof/types.proto b/proto/poktroll/proof/types.proto index 5a67772e2..c35b08fb8 100644 --- a/proto/poktroll/proof/types.proto +++ b/proto/poktroll/proof/types.proto @@ -22,13 +22,19 @@ message Proof { bytes closest_merkle_proof = 3; } -// Claim is the serialized object stored on-chain for claims pending to be proven +// Claim is the serialized object stored onchain for claims pending to be proven message Claim { + // Address of the supplier's operator that submitted this claim. string supplier_operator_address = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"]; // the address of the supplier's operator that submitted this claim - // The session header of the session that this claim is for. + + // Session header this claim is for. poktroll.session.SessionHeader session_header = 2; - // Root hash returned from smt.SMST#Root(). + + // Root hash from smt.SMST#Root(). bytes root_hash = 3; + + // Important: This field MUST only be set by proofKeeper#EnsureValidProofSignaturesAndClosestPath + ClaimProofStatus proof_validation_status = 4; } enum ProofRequirementReason { @@ -43,3 +49,11 @@ enum ClaimProofStage { SETTLED = 2; EXPIRED = 3; } + +// Status of proof validation for a claim +// Default is PENDING_VALIDATION regardless of proof requirement +enum ClaimProofStatus { + PENDING_VALIDATION = 0; + VALIDATED = 1; + INVALID = 2; +} \ No newline at end of file diff --git a/proto/poktroll/service/params.proto b/proto/poktroll/service/params.proto index 78c5da623..21089ff77 100644 --- a/proto/poktroll/service/params.proto +++ b/proto/poktroll/service/params.proto @@ -20,6 +20,6 @@ message Params { cosmos.base.v1beta1.Coin add_service_fee = 1 [(gogoproto.jsontag) = "add_service_fee", (gogoproto.moretags) = "yaml:\"add_service_fee\""]; // target_num_relays is the target for the EMA of the number of relays per session. - // Per service, on-chain relay mining difficulty will be adjusted to maintain this target. + // Per service, onchain relay mining difficulty will be adjusted to maintain this target. uint64 target_num_relays = 2 [(gogoproto.jsontag) = "target_num_relays", (gogoproto.moretags) = "yaml:\"target_num_relays\""]; } diff --git a/proto/poktroll/service/relay.proto b/proto/poktroll/service/relay.proto index c840c331d..89d4b7a12 100644 --- a/proto/poktroll/service/relay.proto +++ b/proto/poktroll/service/relay.proto @@ -25,7 +25,7 @@ message RelayRequestMetadata { // application in both cases. bytes signature = 2; - // TODO_MAINNET: make sure we're checking/verifying this address on-chain (if needed). + // TODO_MAINNET: make sure we're checking/verifying this address onchain (if needed). // Relevant conversation: https://github.com/pokt-network/poktroll/pull/567#discussion_r1628722168 // // The supplier operator address the relay is sent to. It is being used on the diff --git a/proto/poktroll/service/relay_mining_difficulty.proto b/proto/poktroll/service/relay_mining_difficulty.proto index 5c669c4f0..d3392c230 100644 --- a/proto/poktroll/service/relay_mining_difficulty.proto +++ b/proto/poktroll/service/relay_mining_difficulty.proto @@ -6,7 +6,7 @@ option (gogoproto.stable_marshaler_all) = true; import "gogoproto/gogo.proto"; -// RelayMiningDifficulty is a message used to store the on-chain Relay Mining +// RelayMiningDifficulty is a message used to store the onchain Relay Mining // difficulty associated with a specific service ID. // TODO_TECHDEBT: Embed this message in the Service message. message RelayMiningDifficulty { diff --git a/proto/poktroll/session/types.proto b/proto/poktroll/session/types.proto index afbff35a4..18f2375ad 100644 --- a/proto/poktroll/session/types.proto +++ b/proto/poktroll/session/types.proto @@ -22,11 +22,11 @@ import "gogoproto/gogo.proto"; message SessionHeader { string application_address = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"]; // The Bech32 address of the application. string service_id = 2; // The service id this session is for - // NOTE: session_id can be derived from the above values using on-chain but is included in the header for convenience + // NOTE: session_id can be derived from the above values using onchain but is included in the header for convenience string session_id = 3; // A unique pseudoranom ID for this session int64 session_start_block_height = 4; // The height at which this session started // Note that`session_end_block_height` is a derivative of (`start` + `num_blocks_per_session`) - // as goverened by on-chain params at the time of the session start. + // as goverened by onchain params at the time of the session start. // It is stored as an additional field to simplofy business logic in case // the number of blocks_per_session changes during the session. int64 session_end_block_height = 5; // The height at which this session ended, this is the last block of the session diff --git a/proto/poktroll/shared/params.proto b/proto/poktroll/shared/params.proto index 327491922..215fcb302 100644 --- a/proto/poktroll/shared/params.proto +++ b/proto/poktroll/shared/params.proto @@ -33,12 +33,12 @@ message Params { uint64 proof_window_close_offset_blocks = 6 [(gogoproto.jsontag) = "proof_window_close_offset_blocks"]; // supplier_unbonding_period_sessions is the number of sessions that a supplier must wait after // unstaking before their staked assets are moved to their account balance. - // On-chain business logic requires, and ensures, that the corresponding block count of the unbonding + // Onchain business logic requires, and ensures, that the corresponding block count of the unbonding // period will exceed the end of any active claim & proof lifecycles. uint64 supplier_unbonding_period_sessions = 7 [(gogoproto.jsontag) = "supplier_unbonding_period_sessions"]; // application_unbonding_period_sessions is the number of sessions that an application must wait after // unstaking before their staked assets are moved to their account balance. - // On-chain business logic requires, and ensures, that the corresponding block count of the + // Onchain business logic requires, and ensures, that the corresponding block count of the // application unbonding period will exceed the end of its corresponding proof window close height. uint64 application_unbonding_period_sessions = 8 [(gogoproto.jsontag) = "application_unbonding_period_sessions"]; // The amount of upokt that a compute unit should translate to when settling a session. diff --git a/proto/poktroll/shared/service.proto b/proto/poktroll/shared/service.proto index 33d8ca1b7..340c89abb 100644 --- a/proto/poktroll/shared/service.proto +++ b/proto/poktroll/shared/service.proto @@ -24,7 +24,7 @@ message Service { uint64 compute_units_per_relay = 3; // Compute units required per relay for this service // The owner address that created the service. - // It is the address that receives rewards based on the Service's on-chain usage + // It is the address that receives rewards based on the Service's onchain usage // It is the only address that can update the service configuration (e.g. compute_units_per_relay), // or make other updates to it. string owner_address = 4 [(cosmos_proto.scalar) = "cosmos.AddressString"]; // The Bech32 address of the service owner / creator @@ -57,8 +57,12 @@ message SupplierEndpoint { // ServiceRevenueShare message to hold revenue share configuration details message ServiceRevenueShare { + // 2 was reserved in #1028 during the change of rev_share_percentage from float to uint64 + // TODO_TECHDEBT(#1033): Investigate if we can use a double instead. + reserved 2; + string address = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"]; // The Bech32 address of the revenue share recipient - float rev_share_percentage = 2; // The percentage of revenue share the recipient will receive + uint64 rev_share_percentage = 3; // The percentage of revenue share the recipient will receive } // Enum to define RPC types @@ -72,7 +76,7 @@ enum RPCType { } // Enum to define configuration options -// TODO_RESEARCH: Should these be configs, SLAs or something else? There will be more discussion once we get closer to implementing on-chain QoS. +// TODO_RESEARCH: Should these be configs, SLAs or something else? There will be more discussion once we get closer to implementing onchain QoS. enum ConfigOptions { UNKNOWN_CONFIG = 0; // Undefined config option TIMEOUT = 1; // Timeout setting diff --git a/proto/poktroll/shared/supplier.proto b/proto/poktroll/shared/supplier.proto index be58d1a14..7b88dff05 100644 --- a/proto/poktroll/shared/supplier.proto +++ b/proto/poktroll/shared/supplier.proto @@ -10,24 +10,30 @@ import "cosmos/base/v1beta1/coin.proto"; import "poktroll/shared/service.proto"; import "gogoproto/gogo.proto"; -// Supplier is the type defining the actor in Pocket Network that provides RPC services. +// Supplier represents an actor in Pocket Network that provides RPC services message Supplier { - // The address of the owner (i.e. staker, custodial) that owns the funds for staking. - // By default, this address is the one that receives all the rewards unless owtherwise specified. - // This property cannot be updated by the operator. - string owner_address = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"]; // Bech32 cosmos address - // The operator address of the supplier operator (i.e. the one managing the off-chain server). - // The operator address can update the supplier's configurations excluding the owner address. - // This property does not change over the supplier's lifespan, the supplier must be unstaked - // and re-staked to effectively update this value. - string operator_address = 2 [(cosmos_proto.scalar) = "cosmos.AddressString"]; // Bech32 cosmos address - cosmos.base.v1beta1.Coin stake = 3; // The total amount of uPOKT the supplier has staked - repeated SupplierServiceConfig services = 4; // The service configs this supplier can support - // The session end height at which an actively unbonding supplier unbonds its stake. - // If the supplier did not unstake, this value will be 0. + // Owner address that controls the staked funds and receives rewards by default + // Cannot be updated by the operator + string owner_address = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"]; + + // Operator address managing the offchain server + // Immutable for supplier's lifespan - requires unstake/re-stake to change. + // Can update supplier configs except for owner address. + string operator_address = 2 [(cosmos_proto.scalar) = "cosmos.AddressString"]; + + // Total amount of staked uPOKT + cosmos.base.v1beta1.Coin stake = 3; + + // List of service configurations supported by this supplier + repeated SupplierServiceConfig services = 4; + + // Session end height when supplier initiated unstaking (0 if not unstaking) uint64 unstake_session_end_height = 5; - // services_activation_heights_map is a map of serviceIds to the height at - // which the staked supplier will become active for that service. - // Activation heights are session start heights. + + // Mapping of serviceIds to their activation heights + // - Key: serviceId + // - Value: Session start height when supplier becomes active for the service + // TODO_MAINNET(@olshansk, #1033): Look into moving this to an external repeated protobuf + // because maps are no longer supported for serialized types in the CosmoSDK. map services_activation_heights_map = 6; } diff --git a/proto/poktroll/supplier/event.proto b/proto/poktroll/supplier/event.proto index 422f41529..26daded8c 100644 --- a/proto/poktroll/supplier/event.proto +++ b/proto/poktroll/supplier/event.proto @@ -16,7 +16,7 @@ enum SupplierUnbondingReason { SUPPLIER_UNBONDING_REASON_BELOW_MIN_STAKE = 2; } -// EventSupplierStaked is emitted when a supplier stake message is committed on-chain. +// EventSupplierStaked is emitted when a supplier stake message is committed onchain. message EventSupplierStaked { poktroll.shared.Supplier supplier = 1 [(gogoproto.jsontag) = "supplier"]; // The session end height of the last session in which the supplier was staked. @@ -24,7 +24,7 @@ message EventSupplierStaked { } // EventSupplierUnbondingBegin is emitted when an application unstake message -// is committed on-chain, indicating that the supplier will now begin unbonding. +// is committed onchain, indicating that the supplier will now begin unbonding. message EventSupplierUnbondingBegin { poktroll.shared.Supplier supplier = 1 [(gogoproto.jsontag) = "supplier"]; SupplierUnbondingReason reason = 2 [(gogoproto.jsontag) = "reason"]; diff --git a/proto/poktroll/supplier/query.proto b/proto/poktroll/supplier/query.proto index cb7a4d31a..71de22f24 100644 --- a/proto/poktroll/supplier/query.proto +++ b/proto/poktroll/supplier/query.proto @@ -45,6 +45,7 @@ message QueryParamsResponse { message QueryGetSupplierRequest { string operator_address = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"]; + // TODO_TECHDEBT: Add the ability to query for a supplier by owner_id } message QueryGetSupplierResponse { @@ -53,6 +54,10 @@ message QueryGetSupplierResponse { message QueryAllSuppliersRequest { cosmos.base.query.v1beta1.PageRequest pagination = 1; + + oneof filter { + string service_id = 2; // unique service identifier to filter by + } } message QueryAllSuppliersResponse { diff --git a/proto/poktroll/tokenomics/event.proto b/proto/poktroll/tokenomics/event.proto index c0043e3f9..6a525211b 100644 --- a/proto/poktroll/tokenomics/event.proto +++ b/proto/poktroll/tokenomics/event.proto @@ -17,7 +17,7 @@ enum ClaimExpirationReason { } // EventClaimExpired is an event emitted during settlement whenever a claim requiring -// an on-chain proof doesn't have one. The claim cannot be settled, leading to that work +// an onchain proof doesn't have one. The claim cannot be settled, leading to that work // never being rewarded. message EventClaimExpired { poktroll.proof.Claim claim = 1 [(gogoproto.jsontag) = "claim"]; diff --git a/telemetry/defaults.go b/telemetry/defaults.go new file mode 100644 index 000000000..e059e2c93 --- /dev/null +++ b/telemetry/defaults.go @@ -0,0 +1,14 @@ +package telemetry + +// Default configuration values for telemetry +const ( + // DefaultCardinalityLevel represents the default cardinality level for metrics collection + DefaultCardinalityLevel = "medium" +) + +// DefaultConfig returns the default telemetry configuration +func DefaultConfig() PoktrollTelemetryConfig { + return PoktrollTelemetryConfig{ + CardinalityLevel: DefaultCardinalityLevel, + } +} diff --git a/telemetry/event_counters.go b/telemetry/event_counters.go index 2a36580be..1518445f7 100644 --- a/telemetry/event_counters.go +++ b/telemetry/event_counters.go @@ -89,7 +89,7 @@ func ProofRequirementCounter( } // ClaimComputeUnitsCounter increments a counter which tracks the number of compute units -// which are represented by on-chain claims at the given ClaimProofStage. +// which are represented by onchain claims at the given ClaimProofStage. // If err is not nil, the counter is not incremented but Prometheus will ingest this event. func ClaimComputeUnitsCounter( claimProofStage string, @@ -127,7 +127,7 @@ func ClaimComputeUnitsCounter( } // ClaimRelaysCounter increments a counter which tracks the number of relays -// represented by on-chain claims at the given ClaimProofStage. +// represented by onchain claims at the given ClaimProofStage. // If err is not nil, the counter is not incremented and an "error" label is added // with the error's message. I.e., Prometheus will ingest this event. func ClaimRelaysCounter( diff --git a/telemetry/telemetry.go b/telemetry/telemetry.go index 348b73898..d7b93a879 100644 --- a/telemetry/telemetry.go +++ b/telemetry/telemetry.go @@ -11,16 +11,31 @@ import ( // Set once on initialization and remains constant during runtime. var globalTelemetryConfig PoktrollTelemetryConfig -// PoktrollTelemetryConfig represents the telemetry protion of the custom poktroll config section in `app.toml`. +// PoktrollTelemetryConfig represents the telemetry portion of the custom poktroll config section in `app.toml`. type PoktrollTelemetryConfig struct { CardinalityLevel string `mapstructure:"cardinality-level"` } // New sets the globalTelemetryConfig for telemetry package. func New(appOpts servertypes.AppOptions) error { - // Extract the map from appOpts. - // `poktroll.telemetry` comes from `app.toml` which is parsed into a map. - telemetryMap := appOpts.Get("poktroll.telemetry").(map[string]interface{}) + // Get the poktroll config section. If it doesn't exist, use defaults + poktrollConfig := appOpts.Get("poktroll") + if poktrollConfig == nil { + globalTelemetryConfig = DefaultConfig() + return nil + } + + // Try to get the telemetry subsection + poktrollMap, ok := poktrollConfig.(map[string]interface{}) + if !ok { + return fmt.Errorf("invalid poktroll config format: expected map[string]interface{}, got %T", poktrollConfig) + } + + telemetryMap, ok := poktrollMap["telemetry"].(map[string]interface{}) + if !ok { + globalTelemetryConfig = DefaultConfig() + return nil + } // Use mapstructure to decode the map into the struct if err := mapstructure.Decode(telemetryMap, &globalTelemetryConfig); err != nil { diff --git a/telemetry/tokens.go b/telemetry/tokens.go index a62b3355f..deecbac12 100644 --- a/telemetry/tokens.go +++ b/telemetry/tokens.go @@ -9,7 +9,7 @@ import ( // complies with the new hardened settlement approach. // TODO_MAINNET(@red-0ne, #897): Minted, burnt and slashd tokens values might not be completely accurate. -// While we're keeping this metric for now consider removing in favor of utilizing the `cosmos-exporter` which uses on-chain data. +// While we're keeping this metric for now consider removing in favor of utilizing the `cosmos-exporter` which uses onchain data. // Context: https://github.com/cosmos/cosmos-sdk/issues/21614, https://github.com/pokt-network/poktroll/pull/832 // MintedTokensFromModule is a function to track token minting from a specific module. diff --git a/tests/integration/application/application_transfer_test.go b/tests/integration/application/application_transfer_test.go index a4c76d4ba..ad0b49cd7 100644 --- a/tests/integration/application/application_transfer_test.go +++ b/tests/integration/application/application_transfer_test.go @@ -80,7 +80,7 @@ func (s *appTransferTestSuite) SetupTest() { s.app2: {s.gateway1, s.gateway5}, }) - // Assert the on-chain state shows the application 3 as NOT staked. + // Assert the onchain state shows the application 3 as NOT staked. _, queryErr := s.GetAppQueryClient().GetApplication(s.SdkCtx(), s.app3) require.ErrorContains(s.T(), queryErr, "application not found") require.ErrorContains(s.T(), queryErr, s.app3) @@ -390,7 +390,7 @@ func (s *appTransferTestSuite) setupStakeApps(appBech32ToServiceIdsMap map[strin require.Equal(s.T(), appBech32, stakeAppRes.GetApplication().GetAddress()) require.Equal(s.T(), stakeAmount, stakeAppRes.GetApplication().GetStake().Amount.Int64()) - // Assert the on-chain state shows the application as staked. + // Assert the onchain state shows the application as staked. foundApp, queryErr := s.GetAppQueryClient().GetApplication(s.SdkCtx(), appBech32) require.NoError(s.T(), queryErr) require.Equal(s.T(), appBech32, foundApp.GetAddress()) diff --git a/tests/integration/service/relay_mining_difficulty_test.go b/tests/integration/service/relay_mining_difficulty_test.go index 8e84787fb..1a171e5c3 100644 --- a/tests/integration/service/relay_mining_difficulty_test.go +++ b/tests/integration/service/relay_mining_difficulty_test.go @@ -200,12 +200,12 @@ func prepareSMST( // TODO_TECHDEBT(#446): Centralize the configuration for the SMT spec. kvStore, err := pebble.NewKVStore("") require.NoError(t, err) - trie := smt.NewSparseMerkleSumTrie(kvStore, protocol.NewTrieHasher(), smt.WithValueHasher(nil)) + trie := smt.NewSparseMerkleSumTrie(kvStore, protocol.NewTrieHasher(), protocol.SMTValueHasher()) for i := uint64(0); i < numRelays; i++ { // DEV_NOTE: A signed mined relay is a MinedRelay type with the appropriate // payload, signatures and metadata populated. - // It does not (as of writing) adhere to the actual on-chain difficulty (i.e. + // It does not (as of writing) adhere to the actual onchain difficulty (i.e. // hash check) of the test service surrounding the scope of this test. minedRelay := testrelayer.NewSignedMinedRelay(t, ctx, session, diff --git a/tests/integration/tokenomics/relay_mining_integration_test.go b/tests/integration/tokenomics/relay_mining_integration_test.go index 0b6ea4a9f..f0d1dfa17 100644 --- a/tests/integration/tokenomics/relay_mining_integration_test.go +++ b/tests/integration/tokenomics/relay_mining_integration_test.go @@ -198,7 +198,7 @@ func TestComputeNewDifficultyHash_RewardsReflectWorkCompleted(t *testing.T) { } // prepareRealClaim prepares a claim by creating a real SMST with the given number -// of mined relays that adhere to the actual on-chain difficulty of the test service. +// of mined relays that adhere to the actual onchain difficulty of the test service. func prepareRealClaim( t *testing.T, numRelays uint64, @@ -214,7 +214,7 @@ func prepareRealClaim( require.NoError(t, err) // Prepare an SMST - trie := smt.NewSparseMerkleSumTrie(kvStore, protocol.NewTrieHasher(), smt.WithValueHasher(nil)) + trie := smt.NewSparseMerkleSumTrie(kvStore, protocol.NewTrieHasher(), protocol.SMTValueHasher()) // Insert the mined relays into the SMST for i := uint64(0); i < numRelays; i++ { diff --git a/tests/integration/tokenomics/token_logic_modules/unhaltable_test.go b/tests/integration/tokenomics/token_logic_modules/unhaltable_test.go index 7726dfdad..3096c29d5 100644 --- a/tests/integration/tokenomics/token_logic_modules/unhaltable_test.go +++ b/tests/integration/tokenomics/token_logic_modules/unhaltable_test.go @@ -48,7 +48,7 @@ func (s *tokenLogicModuleTestSuite) TestSettlePendingClaims_NonHaltingError() { desc string setup func(*testing.T) }{ - {desc: "supplier operator pubkey not on-chain"}, + {desc: "supplier operator pubkey not onchain"}, {desc: "closest merkle proof is invalid (mangled)"}, {desc: "closest merkle proof is invalid (non-compact)"}, {desc: "closest merkle proof leaf is not a relay"}, diff --git a/testutil/delays/waitall.go b/testutil/delays/waitall.go new file mode 100644 index 000000000..30ae68287 --- /dev/null +++ b/testutil/delays/waitall.go @@ -0,0 +1,23 @@ +package testdelays + +import "sync" + +// WaitAll waits for all the provided functions to complete. +// It is used to wait for multiple goroutines to complete before proceeding. +func WaitAll(waitFuncs ...func()) { + if len(waitFuncs) == 0 { + return + } + + var wg sync.WaitGroup + wg.Add(len(waitFuncs)) + + for _, fn := range waitFuncs { + go func(f func()) { + defer wg.Done() + f() + }(fn) + } + + wg.Wait() +} diff --git a/testutil/events/filter.go b/testutil/events/filter.go index ced4617af..5f16aa1ea 100644 --- a/testutil/events/filter.go +++ b/testutil/events/filter.go @@ -1,6 +1,7 @@ package events import ( + "context" "strconv" "strings" "testing" @@ -8,6 +9,8 @@ import ( abci "github.com/cometbft/cometbft/abci/types" cosmostypes "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/gogoproto/proto" + "github.com/pokt-network/poktroll/pkg/observable" + "github.com/pokt-network/poktroll/pkg/observable/channel" "github.com/stretchr/testify/require" ) @@ -74,3 +77,24 @@ func NewEventTypeMatchFn(matchEventType string) func(*cosmostypes.Event) bool { return strings.Trim(event.Type, "/") == strings.Trim(matchEventType, "/") } } + +// AbciEventsToTypedEvents converts the abci events to typed events. +func AbciEventsToTypedEvents( + ctx context.Context, + abciEventObs observable.Observable[[]abci.Event], +) observable.Observable[[]proto.Message] { + return channel.Map(ctx, abciEventObs, func(ctx context.Context, events []abci.Event) ([]proto.Message, bool) { + var typedEvents []proto.Message + for _, event := range events { + // TODO_TECHDEBT: Filter out events by event.Type before parsing them. + typedEvent, err := cosmostypes.ParseTypedEvent(event) + if err != nil { + continue + } + + typedEvents = append(typedEvents, typedEvent) + } + + return typedEvents, false + }) +} diff --git a/testutil/integration/app.go b/testutil/integration/app.go index 715c0135b..04305089a 100644 --- a/testutil/integration/app.go +++ b/testutil/integration/app.go @@ -862,7 +862,7 @@ func (app *App) nextBlockUpdateCtx() { } // setupDefaultActorsState uses the integration app keepers to stake "default" -// on-chain actors for use in tests. In creates a service, and stakes a supplier +// onchain actors for use in tests. In creates a service, and stakes a supplier // and application as well as funding the bank balance of the default supplier. // // TODO_TECHDEBT(@bryanchriswhite): Eliminate usage of and remove this function in favor of @@ -897,7 +897,7 @@ func (app *App) setupDefaultActorsState( app.preGeneratedAccts, ) - // Prepare the on-chain supplier + // Prepare the onchain supplier supplierStake := types.NewCoin("upokt", math.NewInt(1000000)) defaultSupplier := sharedtypes.Supplier{ OwnerAddress: supplierOperatorAddr.String(), @@ -908,7 +908,7 @@ func (app *App) setupDefaultActorsState( RevShare: []*sharedtypes.ServiceRevenueShare{ { Address: sample.AccAddress(), - RevSharePercentage: 100, + RevSharePercentage: uint64(100), }, }, ServiceId: defaultService.Id, @@ -928,7 +928,7 @@ func (app *App) setupDefaultActorsState( app.preGeneratedAccts, ) - // Prepare the on-chain application + // Prepare the onchain application appStake := types.NewCoin("upokt", math.NewInt(1000000)) defaultApplication := apptypes.Application{ Address: applicationAddr.String(), diff --git a/testutil/integration/suites/authz.go b/testutil/integration/suites/authz.go index 62b44c89a..c83b94376 100644 --- a/testutil/integration/suites/authz.go +++ b/testutil/integration/suites/authz.go @@ -25,7 +25,7 @@ type AuthzIntegrationSuite struct { BaseIntegrationSuite } -// RunAuthzGrantMsgForPoktrollModules creates an on-chain authz grant for the given +// RunAuthzGrantMsgForPoktrollModules creates an onchain authz grant for the given // granter and grantee addresses for the specified message name in each of the poktroll // modules present in the integration app. func (s *AuthzIntegrationSuite) RunAuthzGrantMsgForPoktrollModules( @@ -65,7 +65,7 @@ func (s *AuthzIntegrationSuite) RunAuthzGrantMsgForPoktrollModules( } } -// RunAuthzGrantMsg creates an on-chain authz grant from the given granter to the +// RunAuthzGrantMsg creates an onchain authz grant from the given granter to the // grantee addresses for the authorization object provided. func (s *AuthzIntegrationSuite) RunAuthzGrantMsg( t *testing.T, diff --git a/testutil/integration/suites/update_params.go b/testutil/integration/suites/update_params.go index 4a26ffa80..edc5ccabb 100644 --- a/testutil/integration/suites/update_params.go +++ b/testutil/integration/suites/update_params.go @@ -80,7 +80,7 @@ type ParamsSuite struct { // AuthorityAddr is the cosmos account address of the authority for the integration // app. It is used as the **granter** of authz grants for parameter update messages. - // In practice, is an address sourced by an on-chain string and no one has the private key. + // In practice, is an address sourced by an onchain string and no one has the private key. AuthorityAddr cosmostypes.AccAddress // AuthorizedAddr is the cosmos account address which is the **grantee** of authz // grants for parameter update messages. @@ -121,7 +121,7 @@ func (s *ParamsSuite) SetupTestAuthzAccounts(t *testing.T) { s.AuthorizedAddr = nextAcct.Address } -// SetupTestAuthzGrants creates on-chain authz grants for the MsgUpdateUpdateParam and +// SetupTestAuthzGrants creates onchain authz grants for the MsgUpdateUpdateParam and // MsgUpdateParams message for each module. It is expected to be called after s.NewApp() // as it depends on the authority and authorized addresses having been set. func (s *ParamsSuite) SetupTestAuthzGrants(t *testing.T) { @@ -147,7 +147,7 @@ func (s *ParamsSuite) SetupTestAuthzGrants(t *testing.T) { // RunUpdateParams runs the given MsgUpdateParams message via an authz exec as the // AuthorizedAddr and returns the response bytes and error. It is expected to be called -// after s.SetupTestAuthzGrants() as it depends on an on-chain authz grant to AuthorizedAddr +// after s.SetupTestAuthzGrants() as it depends on an onchain authz grant to AuthorizedAddr // for MsgUpdateParams for the given module. func (s *ParamsSuite) RunUpdateParams( t *testing.T, @@ -159,7 +159,7 @@ func (s *ParamsSuite) RunUpdateParams( } // RunUpdateParamsAsSigner runs the given MsgUpdateParams message via an authz exec -// as signerAddr and returns the response bytes and error. It depends on an on-chain +// as signerAddr and returns the response bytes and error. It depends on an onchain // authz grant to signerAddr for MsgUpdateParams for the given module. func (s *ParamsSuite) RunUpdateParamsAsSigner( t *testing.T, @@ -182,7 +182,7 @@ func (s *ParamsSuite) RunUpdateParamsAsSigner( // RunUpdateParam constructs and runs an MsgUpdateParam message via an authz exec // as the AuthorizedAddr for the given module, parameter name, and value. It returns // the response bytes and error. It is expected to be called after s.SetupTestAuthzGrants() -// as it depends on an on-chain authz grant to AuthorizedAddr for MsgUpdateParam for the given module. +// as it depends on an onchain authz grant to AuthorizedAddr for MsgUpdateParam for the given module. func (s *ParamsSuite) RunUpdateParam( t *testing.T, moduleName string, @@ -201,7 +201,7 @@ func (s *ParamsSuite) RunUpdateParam( // RunUpdateParamAsSigner constructs and runs an MsgUpdateParam message via an authz exec // as the given signerAddr for the given module, parameter name, and value. It returns -// the response bytes and error. It depends on an on-chain authz grant to signerAddr for +// the response bytes and error. It depends on an onchain authz grant to signerAddr for // MsgUpdateParam for the given module. func (s *ParamsSuite) RunUpdateParamAsSigner( t *testing.T, diff --git a/testutil/keeper/migration.go b/testutil/keeper/migration.go new file mode 100644 index 000000000..fd85baf9f --- /dev/null +++ b/testutil/keeper/migration.go @@ -0,0 +1,51 @@ +package keeper + +import ( + "testing" + + "cosmossdk.io/log" + "cosmossdk.io/store" + "cosmossdk.io/store/metrics" + storetypes "cosmossdk.io/store/types" + cmtproto "github.com/cometbft/cometbft/proto/tendermint/types" + dbm "github.com/cosmos/cosmos-db" + "github.com/cosmos/cosmos-sdk/codec" + codectypes "github.com/cosmos/cosmos-sdk/codec/types" + "github.com/cosmos/cosmos-sdk/runtime" + sdk "github.com/cosmos/cosmos-sdk/types" + authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" + govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" + "github.com/stretchr/testify/require" + + "github.com/pokt-network/poktroll/x/migration/keeper" + "github.com/pokt-network/poktroll/x/migration/types" +) + +func MigrationKeeper(t testing.TB) (keeper.Keeper, sdk.Context) { + storeKey := storetypes.NewKVStoreKey(types.StoreKey) + + db := dbm.NewMemDB() + stateStore := store.NewCommitMultiStore(db, log.NewNopLogger(), metrics.NewNoOpMetrics()) + stateStore.MountStoreWithDB(storeKey, storetypes.StoreTypeIAVL, db) + require.NoError(t, stateStore.LoadLatestVersion()) + + registry := codectypes.NewInterfaceRegistry() + cdc := codec.NewProtoCodec(registry) + authority := authtypes.NewModuleAddress(govtypes.ModuleName) + + k := keeper.NewKeeper( + cdc, + runtime.NewKVStoreService(storeKey), + log.NewNopLogger(), + authority.String(), + ) + + ctx := sdk.NewContext(stateStore, cmtproto.Header{}, false, log.NewNopLogger()) + + // Initialize params + if err := k.SetParams(ctx, types.DefaultParams()); err != nil { + panic(err) + } + + return k, ctx +} diff --git a/testutil/keeper/tokenomics.go b/testutil/keeper/tokenomics.go index e4cef7328..31f5dc53a 100644 --- a/testutil/keeper/tokenomics.go +++ b/testutil/keeper/tokenomics.go @@ -124,7 +124,7 @@ func TokenomicsKeeperWithActorAddrs(t testing.TB) ( registry := codectypes.NewInterfaceRegistry() cdc := codec.NewProtoCodec(registry) - // The on-chain governance address. + // The onchain governance address. authority := authtypes.NewModuleAddress(govtypes.ModuleName) // Prepare the test application. @@ -146,7 +146,7 @@ func TokenomicsKeeperWithActorAddrs(t testing.TB) ( RevShare: []*sharedtypes.ServiceRevenueShare{ { Address: supplierOwnerAddr, - RevSharePercentage: 100, + RevSharePercentage: uint64(100), }, }, }, @@ -182,6 +182,11 @@ func TokenomicsKeeperWithActorAddrs(t testing.TB) ( Return(nil). AnyTimes() + mockApplicationKeeper.EXPECT(). + GetParams(gomock.Any()). + Return(apptypes.Params{}). + AnyTimes() + // Mock the supplier keeper. mockSupplierKeeper := mocks.NewMockSupplierKeeper(ctrl) // Mock SetSupplier. diff --git a/testutil/session/session.go b/testutil/session/session.go index 84f9c4495..3128465c2 100644 --- a/testutil/session/session.go +++ b/testutil/session/session.go @@ -6,7 +6,7 @@ import ( ) // GetSessionIdWithDefaultParams returns the string and bytes representation of the -// sessionId for the session containing blockHeight, given the default shared on-chain +// sessionId for the session containing blockHeight, given the default shared onchain // parameters, application public key, service ID, and block hash. func GetSessionIdWithDefaultParams( appPubKey, @@ -19,7 +19,7 @@ func GetSessionIdWithDefaultParams( } // GetSessionStartHeightWithDefaultParams returns the block height at which the -// session containing queryHeight starts, given the default shared on-chain +// session containing queryHeight starts, given the default shared onchain // parameters. // See shared.GetSessionStartHeight for more details. func GetSessionStartHeightWithDefaultParams(queryHeight int64) int64 { @@ -28,7 +28,7 @@ func GetSessionStartHeightWithDefaultParams(queryHeight int64) int64 { } // GetSessionEndHeightWithDefaultParams returns the block height at which the session -// containing queryHeight ends, given the default shared on-chain parameters. +// containing queryHeight ends, given the default shared onchain parameters. // See shared.GetSessionEndHeight for more details. func GetSessionEndHeightWithDefaultParams(queryHeight int64) int64 { sharedParams := sharedtypes.DefaultParams() @@ -36,7 +36,7 @@ func GetSessionEndHeightWithDefaultParams(queryHeight int64) int64 { } // GetSessionNumberWithDefaultParams returns the session number of the session -// containing queryHeight, given the default on-chain shared parameters. +// containing queryHeight, given the default onchain shared parameters. // See shared.GetSessionNumber for more details. func GetSessionNumberWithDefaultParams(queryHeight int64) int64 { sharedParams := sharedtypes.DefaultParams() diff --git a/testutil/testclient/testtx/context.go b/testutil/testclient/testtx/context.go index 449e88b8f..f8769bd4d 100644 --- a/testutil/testclient/testtx/context.go +++ b/testutil/testclient/testtx/context.go @@ -95,6 +95,10 @@ func NewOneTimeErrTxTimeoutTxContext( }, ).Times(1) + txCtxMock.EXPECT().GetSimulatedTxGas(gomock.Any(), gomock.Any(), gomock.Any()). + Return(uint64(1), nil). + Times(1) + txCtxMock.EXPECT().QueryTx( gomock.AssignableToTypeOf(context.Background()), gomock.AssignableToTypeOf([]byte{}), diff --git a/testutil/testproxy/relayerproxy.go b/testutil/testproxy/relayerproxy.go index 613c5a6be..e3d0981a6 100644 --- a/testutil/testproxy/relayerproxy.go +++ b/testutil/testproxy/relayerproxy.go @@ -293,7 +293,7 @@ func MarshalAndSend( require.FailNow(test.t, "unsupported server type") } - // originHost is the endpoint that the client will retrieve from the on-chain supplier record. + // originHost is the endpoint that the client will retrieve from the onchain supplier record. // The supplier may have multiple endpoints (e.g. for load geo-balancing, host failover, etc.). // In the current test setup, we only have one endpoint per supplier, which is why we are accessing `[0]`. // In a real-world scenario, the publicly exposed endpoint would reach a load balancer diff --git a/testutil/testtree/tree.go b/testutil/testtree/tree.go index 737e710d0..6252926e2 100644 --- a/testutil/testtree/tree.go +++ b/testutil/testtree/tree.go @@ -152,5 +152,6 @@ func NewClaim( SupplierOperatorAddress: supplierOperatorAddr, SessionHeader: sessionHeader, RootHash: rootHash, + ProofValidationStatus: prooftypes.ClaimProofStatus_PENDING_VALIDATION, } } diff --git a/tools/installer/full-node.sh b/tools/installer/full-node.sh index f6c2abdb0..0ebcba9c0 100644 --- a/tools/installer/full-node.sh +++ b/tools/installer/full-node.sh @@ -26,29 +26,107 @@ check_root() { fi } -# Function to install jq if not installed -install_jq() { - if ! command -v jq &>/dev/null; then - print_color $YELLOW "Installing jq..." - if [ -f /etc/debian_version ]; then - apt-get update - apt-get install -y jq - elif [ -f /etc/redhat-release ]; then - yum update -y - yum install -y jq +# Function to get and normalize architecture +get_normalized_arch() { + local arch + arch=$(uname -m) + + if [ "$arch" = "x86_64" ]; then + echo "amd64" + elif [ "$arch" = "aarch64" ] || [ "$arch" = "arm64" ]; then + echo "arm64" + else + print_color $RED "Unsupported architecture: $arch" + exit 1 + fi +} + +check_os() { + local os + os=$(uname -s) + + if [ "$os" = "Darwin" ]; then + print_color $RED "This script is not supported on macOS/Darwin." + print_color $RED "Please use a Linux distribution." + exit 1 + fi +} + +get_os_type() { + uname_out="$(uname -s)" + + if [ "$uname_out" = "Linux" ]; then + echo "linux" + elif [ "$uname_out" = "Darwin" ]; then + echo "darwin" + else + echo "unsupported" + fi +} + +# Function to check and install dependencies +install_dependencies() { + local missing_deps=0 + local deps=("jq" "curl" "tar" "wget") + local to_install=() + + print_color $YELLOW "About to start installing dependencies..." + + # Check which dependencies are missing + for dep in "${deps[@]}"; do + if ! command -v "$dep" &>/dev/null; then + print_color $YELLOW "$dep is not installed." + to_install+=("$dep") + ((missing_deps++)) else - print_color $RED "Unsupported distribution. Please install jq manually." - exit 1 + print_color $GREEN "$dep is already installed." fi - print_color $GREEN "jq installed successfully." + done + + # If no dependencies are missing, we're done + if [ $missing_deps -eq 0 ]; then + print_color $GREEN "All dependencies are already installed." + return 0 + fi + + # Try to install missing dependencies + print_color $YELLOW "Installing missing dependencies: ${to_install[*]}" + + if [ -f /etc/debian_version ]; then + apt-get update + apt-get install -y "${to_install[@]}" + elif [ -f /etc/redhat-release ]; then + yum update -y + yum install -y "${to_install[@]}" else - print_color $YELLOW "jq is already installed." + print_color $RED "Unsupported distribution. Please install ${to_install[*]} manually." + return 1 fi + + # Verify all dependencies were installed successfully + missing_deps=0 + for dep in "${to_install[@]}"; do + if ! command -v "$dep" &>/dev/null; then + print_color $RED "Failed to install $dep" + ((missing_deps++)) + else + print_color $GREEN "$dep installed successfully." + fi + done + + if [ $missing_deps -gt 0 ]; then + print_color $RED "Some dependencies failed to install." + return 1 + fi + + print_color $GREEN "All dependencies installed successfully." + return 0 } # Function to get user input get_user_input() { # Ask user which network to install + echo "" echo "Which network would you like to install?" echo "1) testnet-alpha (unstable)" echo "2) testnet-beta (recommended)" @@ -66,7 +144,9 @@ get_user_input() { esac print_color $GREEN "Installing the $NETWORK network." + echo "" + print_color $YELLOW "(NOTE: If you're on a macOS, enter the name of an existing user)" read -p "Enter the desired username to run poktrolld (default: poktroll): " POKTROLL_USER POKTROLL_USER=${POKTROLL_USER:-poktroll} @@ -92,6 +172,7 @@ get_user_input() { print_color $RED "Failed to extract chain_id from genesis file." exit 1 fi + echo "" print_color $GREEN "Using chain_id: $CHAIN_ID from genesis file" # Fetch seeds from the provided URL @@ -108,6 +189,7 @@ get_user_input() { read -p "Enter custom seeds: " custom_seeds SEEDS=${custom_seeds:-$SEEDS} fi + echo "" } # Function to create user @@ -129,22 +211,6 @@ create_user() { fi } -# Function to install dependencies -install_dependencies() { - print_color $YELLOW "Installing dependencies..." - if [ -f /etc/debian_version ]; then - apt-get update - apt-get install -y curl tar wget - elif [ -f /etc/redhat-release ]; then - yum update -y - yum install -y curl tar wget - else - print_color $RED "Unsupported distribution. Please install curl, tar and wget manually." - exit 1 - fi - print_color $GREEN "Dependencies installed successfully." -} - # TODO_TECHDEBT(@okdas): Use `.poktrollrc` across the board to create a clean # separation of concerns for pocket specific configurations and debugging. # Function to set up environment variables @@ -159,23 +225,23 @@ setup_env_vars() { source \$HOME/.profile EOF print_color $GREEN "Environment variables set up successfully." + echo "" } # Function to download and set up Cosmovisor setup_cosmovisor() { print_color $YELLOW "Setting up Cosmovisor..." - ARCH=$(uname -m) - if [ "$ARCH" = "x86_64" ]; then - ARCH="amd64" - elif [ "$ARCH" = "aarch64" ]; then - ARCH="arm64" - else - print_color $RED "Unsupported architecture: $ARCH" + + ARCH=$(get_normalized_arch) + + if [ "$OS_TYPE" = "unsupported" ]; then + echo "Unsupported OS: $(uname -s)" exit 1 fi COSMOVISOR_VERSION="v1.6.0" COSMOVISOR_URL="https://github.com/cosmos/cosmos-sdk/releases/download/cosmovisor%2F${COSMOVISOR_VERSION}/cosmovisor-${COSMOVISOR_VERSION}-linux-${ARCH}.tar.gz" + print_color $YELLOW "Attempting to download from: $COSMOVISOR_URL" sudo -u "$POKTROLL_USER" bash < +## Governance Parameters :::warning DO NOT EDIT: this file was generated by make docs_update_gov_params_page ::: -- [Access Control](#access-control) -- [Updating governance parameter values](#updating-governance-parameter-values) - [Updating this page](#updating-this-page) - [Adding a new parameter](#adding-a-new-parameter) - [Parameters](#parameters) @@ -27,7 +25,7 @@ Please follow the instructions in [this guide](../../develop/developer_guide/add ## Parameters +| Module | Field Type | Field Name | Comment | +| ------ | ---------- | ---------- | ------- | -|Module | Field Type | Field Name |Comment | -|-------|------------|------------|--------| -{{.}} \ No newline at end of file +{{.}} diff --git a/tools/scripts/upgrades/authz_cancel_upgrade_tx.json b/tools/scripts/upgrades/authz_cancel_upgrade_tx.json new file mode 100644 index 000000000..014eaac60 --- /dev/null +++ b/tools/scripts/upgrades/authz_cancel_upgrade_tx.json @@ -0,0 +1,10 @@ +{ + "body": { + "messages": [ + { + "@type": "/cosmos.upgrade.v1beta1.MsgCancelUpgrade", + "authority": "pokt10d07y265gmmuvt4z0w9aw880jnsr700j8yv32t" + } + ] + } +} \ No newline at end of file diff --git a/tools/scripts/upgrades/cosmovisor-start-node.sh b/tools/scripts/upgrades/cosmovisor-start-node.sh index bce8b0c94..354eaecee 100644 --- a/tools/scripts/upgrades/cosmovisor-start-node.sh +++ b/tools/scripts/upgrades/cosmovisor-start-node.sh @@ -45,7 +45,7 @@ rm -rf $DAEMON_HOME # Runs regenesis. make localnet_regenesis -# Setups cosmovisor directories and poktroll binaries. On real network cosmovisor can download the binaries using on-chain +# Setups cosmovisor directories and poktroll binaries. On real network cosmovisor can download the binaries using onchain # data when `DAEMON_ALLOW_DOWNLOAD_BINARIES=true`. mkdir -p $DAEMON_HOME/cosmovisor/genesis/bin/ $DAEMON_HOME/cosmovisor/upgrades/$POKTROLLD_UPGRADE_PLAN_NAME/bin/ cp -r $POKTROLLD_OLD_BINARY_PATH $DAEMON_HOME/cosmovisor/genesis/bin/poktrolld diff --git a/tools/scripts/upgrades/upgrade_tx_v0.0.9.json b/tools/scripts/upgrades/upgrade_tx_v0.0.9.json new file mode 100644 index 000000000..c945229d9 --- /dev/null +++ b/tools/scripts/upgrades/upgrade_tx_v0.0.9.json @@ -0,0 +1,15 @@ +{ + "body": { + "messages": [ + { + "@type": "/cosmos.upgrade.v1beta1.MsgSoftwareUpgrade", + "authority": "pokt10d07y265gmmuvt4z0w9aw880jnsr700j8yv32t", + "plan": { + "name": "v0.0.9", + "height": "15510", + "info": "{\"binaries\":{\"linux/amd64\":\"https://github.com/pokt-network/poktroll/releases/download/v0.0.9/poktroll_linux_amd64.tar.gz?checksum=sha256:ab5b99ca0bc4bfbdd7031378d5a01c2a9f040ff310b745866a4dee7e62321c94\",\"linux/arm64\":\"https://github.com/pokt-network/poktroll/releases/download/v0.0.9/poktroll_linux_arm64.tar.gz?checksum=sha256:4b68c2ad326da055d43af1ad1a580158cec0f229d2ec6d9e18280d065260b622\",\"darwin/amd64\":\"https://github.com/pokt-network/poktroll/releases/download/v0.0.9/poktroll_darwin_amd64.tar.gz?checksum=sha256:c81aabddeb190044b979412e5a518bbf5c88305272f72a47e32e13aa765c3330\",\"darwin/arm64\":\"https://github.com/pokt-network/poktroll/releases/download/v0.0.9/poktroll_darwin_arm64.tar.gz?checksum=sha256:e683c55ac13902d107d7a726ed4a5c5affb2af1be3c67dd131ec2072a2cfbcb2\"}}" + } + } + ] + } +} \ No newline at end of file diff --git a/x/application/keeper/prune_undelegations.go b/x/application/keeper/prune_undelegations.go index 9f0b42afc..a526029a1 100644 --- a/x/application/keeper/prune_undelegations.go +++ b/x/application/keeper/prune_undelegations.go @@ -45,7 +45,7 @@ func (k Keeper) EndBlockerPruneAppToGatewayPendingUndelegation(ctx sdk.Context) } // GetNumBlocksUndelegationRetention returns the number of blocks for which -// undelegations should be kept before being pruned, given the current on-chain +// undelegations should be kept before being pruned, given the current onchain // shared module parameters. func (k Keeper) GetNumBlocksUndelegationRetention(ctx context.Context) int64 { sharedParams := k.sharedKeeper.GetParams(ctx) diff --git a/x/application/types/errors.go b/x/application/types/errors.go index 4e8d7fb32..f4de58c6d 100644 --- a/x/application/types/errors.go +++ b/x/application/types/errors.go @@ -21,6 +21,6 @@ var ( ErrAppDuplicateAddress = sdkerrors.Register(ModuleName, 1113, "duplicate application address") ErrAppHasPendingTransfer = sdkerrors.Register(ModuleName, 1114, "application is in transfer period") ErrAppParamInvalid = sdkerrors.Register(ModuleName, 1115, "the provided param is invalid") - ErrAppEmitEvent = sdkerrors.Register(ModuleName, 1116, "unable to emit on-chain event") + ErrAppEmitEvent = sdkerrors.Register(ModuleName, 1116, "unable to emit onchain event") ErrQueryAppsInvalidGatewayAddress = sdkerrors.Register(ModuleName, 1117, "invalid gateway address querying for apps with delegatee gateway address") ) diff --git a/x/application/types/types.pb.go b/x/application/types/types.pb.go index 7d154dd9f..ec942dee4 100644 --- a/x/application/types/types.pb.go +++ b/x/application/types/types.pb.go @@ -27,31 +27,33 @@ var _ = math.Inf // proto package needs to be updated. const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package -// Application defines the type used to store an on-chain definition and state for an application +// Application represents the on-chain definition and state of an application type Application struct { - Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` - Stake *types.Coin `protobuf:"bytes,2,opt,name=stake,proto3" json:"stake,omitempty"` - // CRITICAL_DEV_NOTE: The number of service_configs must be EXACTLY ONE. + // Bech32 address of the application + Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` + // Total amount of staked uPOKT + Stake *types.Coin `protobuf:"bytes,2,opt,name=stake,proto3" json:"stake,omitempty"` + // CRITICAL: Must contain EXACTLY ONE service config // This prevents applications from over-servicing. - // The field is kept repeated (a list) for both legacy and future logic reaosns. - // References: - // - https://github.com/pokt-network/poktroll/pull/750#discussion_r1735025033 - // - https://www.notion.so/buildwithgrove/Off-chain-Application-Stake-Tracking-6a8bebb107db4f7f9dc62cbe7ba555f7 + // Kept as repeated field for legacy and future compatibility + // Refs: + // - https://github.com/pokt-network/poktroll/pull/750#discussion_r1735025033 + // - https://www.notion.so/buildwithgrove/Off-chain-Application-Stake-Tracking-6a8bebb107db4f7f9dc62cbe7ba555f7 ServiceConfigs []*types1.ApplicationServiceConfig `protobuf:"bytes,3,rep,name=service_configs,json=serviceConfigs,proto3" json:"service_configs,omitempty"` // TODO_BETA(@bryanchriswhite): Rename `delegatee_gateway_addresses` to `gateway_addresses_delegated_to`. // Ensure to rename all relevant configs, comments, variables, function names, etc as well. + // Non-nullable list of Bech32 encoded delegatee Gateway addresses DelegateeGatewayAddresses []string `protobuf:"bytes,4,rep,name=delegatee_gateway_addresses,json=delegateeGatewayAddresses,proto3" json:"delegatee_gateway_addresses,omitempty"` - // A map from sessionEndHeights to a list of Gateways. - // The key is the height of the last block of the session during which the - // respective undelegation was committed. - // The value is a list of gateways being undelegated from. + // Mapping of session end heights to gateways being undelegated from + // - Key: Height of the last block of the session when undelegation tx was committed + // - Value: List of gateways being undelegated from // TODO_DOCUMENT(@red-0ne): Need to document the flow from this comment // so its clear to everyone why this is necessary; https://github.com/pokt-network/poktroll/issues/476#issuecomment-2052639906. PendingUndelegations map[uint64]UndelegatingGatewayList `protobuf:"bytes,5,rep,name=pending_undelegations,json=pendingUndelegations,proto3" json:"pending_undelegations" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - // The end height of the session at which an application initiated its unstaking process. - // If the application did not unstake, this value will be 0. - UnstakeSessionEndHeight uint64 `protobuf:"varint,6,opt,name=unstake_session_end_height,json=unstakeSessionEndHeight,proto3" json:"unstake_session_end_height,omitempty"` - PendingTransfer *PendingApplicationTransfer `protobuf:"bytes,7,opt,name=pending_transfer,json=pendingTransfer,proto3" json:"pending_transfer,omitempty"` + // Session end height when application initiated unstaking (0 if not unstaking) + UnstakeSessionEndHeight uint64 `protobuf:"varint,6,opt,name=unstake_session_end_height,json=unstakeSessionEndHeight,proto3" json:"unstake_session_end_height,omitempty"` + // Information about pending application transfers + PendingTransfer *PendingApplicationTransfer `protobuf:"bytes,7,opt,name=pending_transfer,json=pendingTransfer,proto3" json:"pending_transfer,omitempty"` } func (m *Application) Reset() { *m = Application{} } diff --git a/x/gateway/types/errors.go b/x/gateway/types/errors.go index 641f9d335..c704d08bd 100644 --- a/x/gateway/types/errors.go +++ b/x/gateway/types/errors.go @@ -12,5 +12,5 @@ var ( ErrGatewayUnauthorized = sdkerrors.Register(ModuleName, 1103, "unauthorized signer") ErrGatewayNotFound = sdkerrors.Register(ModuleName, 1104, "gateway not found") ErrGatewayParamInvalid = sdkerrors.Register(ModuleName, 1105, "the provided param is invalid") - ErrGatewayEmitEvent = sdkerrors.Register(ModuleName, 1106, "unable to emit on-chain event") + ErrGatewayEmitEvent = sdkerrors.Register(ModuleName, 1106, "unable to emit onchain event") ) diff --git a/x/migration/keeper/keeper.go b/x/migration/keeper/keeper.go new file mode 100644 index 000000000..af25b6e3d --- /dev/null +++ b/x/migration/keeper/keeper.go @@ -0,0 +1,53 @@ +package keeper + +import ( + "fmt" + + "cosmossdk.io/core/store" + "cosmossdk.io/log" + "github.com/cosmos/cosmos-sdk/codec" + sdk "github.com/cosmos/cosmos-sdk/types" + + "github.com/pokt-network/poktroll/x/migration/types" +) + +type ( + Keeper struct { + cdc codec.BinaryCodec + storeService store.KVStoreService + logger log.Logger + + // the address capable of executing a MsgUpdateParams message. Typically, this + // should be the x/gov module account. + authority string + } +) + +func NewKeeper( + cdc codec.BinaryCodec, + storeService store.KVStoreService, + logger log.Logger, + authority string, + +) Keeper { + if _, err := sdk.AccAddressFromBech32(authority); err != nil { + panic(fmt.Sprintf("invalid authority address: %s", authority)) + } + + return Keeper{ + cdc: cdc, + storeService: storeService, + authority: authority, + logger: logger, + } +} + +// GetAuthority returns the module's authority. +func (k Keeper) GetAuthority() string { + return k.authority +} + +// Logger returns a module-specific logger. +func (k Keeper) Logger() log.Logger { + return k.logger.With("module", fmt.Sprintf("x/%s", types.ModuleName)) +} diff --git a/x/migration/keeper/msg_server.go b/x/migration/keeper/msg_server.go new file mode 100644 index 000000000..450034866 --- /dev/null +++ b/x/migration/keeper/msg_server.go @@ -0,0 +1,17 @@ +package keeper + +import ( + "github.com/pokt-network/poktroll/x/migration/types" +) + +type msgServer struct { + Keeper +} + +// NewMsgServerImpl returns an implementation of the MsgServer interface +// for the provided Keeper. +func NewMsgServerImpl(keeper Keeper) types.MsgServer { + return &msgServer{Keeper: keeper} +} + +var _ types.MsgServer = msgServer{} diff --git a/x/migration/keeper/msg_server_test.go b/x/migration/keeper/msg_server_test.go new file mode 100644 index 000000000..3a35e11d5 --- /dev/null +++ b/x/migration/keeper/msg_server_test.go @@ -0,0 +1,24 @@ +package keeper_test + +import ( + "context" + "testing" + + "github.com/stretchr/testify/require" + + keepertest "github.com/pokt-network/poktroll/testutil/keeper" + "github.com/pokt-network/poktroll/x/migration/keeper" + "github.com/pokt-network/poktroll/x/migration/types" +) + +func setupMsgServer(t testing.TB) (keeper.Keeper, types.MsgServer, context.Context) { + k, ctx := keepertest.MigrationKeeper(t) + return k, keeper.NewMsgServerImpl(k), ctx +} + +func TestMsgServer(t *testing.T) { + k, ms, ctx := setupMsgServer(t) + require.NotNil(t, ms) + require.NotNil(t, ctx) + require.NotEmpty(t, k) +} diff --git a/x/migration/keeper/msg_update_params.go b/x/migration/keeper/msg_update_params.go new file mode 100644 index 000000000..0759f393a --- /dev/null +++ b/x/migration/keeper/msg_update_params.go @@ -0,0 +1,23 @@ +package keeper + +import ( + "context" + + errorsmod "cosmossdk.io/errors" + sdk "github.com/cosmos/cosmos-sdk/types" + + "github.com/pokt-network/poktroll/x/migration/types" +) + +func (k msgServer) UpdateParams(goCtx context.Context, req *types.MsgUpdateParams) (*types.MsgUpdateParamsResponse, error) { + if k.GetAuthority() != req.Authority { + return nil, errorsmod.Wrapf(types.ErrInvalidSigner, "invalid authority; expected %s, got %s", k.GetAuthority(), req.Authority) + } + + ctx := sdk.UnwrapSDKContext(goCtx) + if err := k.SetParams(ctx, req.Params); err != nil { + return nil, err + } + + return &types.MsgUpdateParamsResponse{}, nil +} diff --git a/x/migration/keeper/msg_update_params_test.go b/x/migration/keeper/msg_update_params_test.go new file mode 100644 index 000000000..b286026b7 --- /dev/null +++ b/x/migration/keeper/msg_update_params_test.go @@ -0,0 +1,64 @@ +package keeper_test + +import ( + "testing" + + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/stretchr/testify/require" + + "github.com/pokt-network/poktroll/x/migration/types" +) + +func TestMsgUpdateParams(t *testing.T) { + k, ms, ctx := setupMsgServer(t) + params := types.DefaultParams() + require.NoError(t, k.SetParams(ctx, params)) + wctx := sdk.UnwrapSDKContext(ctx) + + // default params + testCases := []struct { + name string + input *types.MsgUpdateParams + expErr bool + expErrMsg string + }{ + { + name: "invalid authority", + input: &types.MsgUpdateParams{ + Authority: "invalid", + Params: params, + }, + expErr: true, + expErrMsg: "invalid authority", + }, + { + name: "send enabled param", + input: &types.MsgUpdateParams{ + Authority: k.GetAuthority(), + Params: types.Params{}, + }, + expErr: false, + }, + { + name: "all good", + input: &types.MsgUpdateParams{ + Authority: k.GetAuthority(), + Params: params, + }, + expErr: false, + }, + } + + for _, tc := range testCases { + t.Run(tc.name, func(t *testing.T) { + _, err := ms.UpdateParams(wctx, tc.input) + + if tc.expErr { + require.Error(t, err) + require.Contains(t, err.Error(), tc.expErrMsg) + } else { + require.NoError(t, err) + } + }) + } +} diff --git a/x/migration/keeper/params.go b/x/migration/keeper/params.go new file mode 100644 index 000000000..aeac86948 --- /dev/null +++ b/x/migration/keeper/params.go @@ -0,0 +1,33 @@ +package keeper + +import ( + "context" + + "github.com/cosmos/cosmos-sdk/runtime" + + "github.com/pokt-network/poktroll/x/migration/types" +) + +// GetParams get all parameters as types.Params +func (k Keeper) GetParams(ctx context.Context) (params types.Params) { + store := runtime.KVStoreAdapter(k.storeService.OpenKVStore(ctx)) + bz := store.Get(types.ParamsKey) + if bz == nil { + return params + } + + k.cdc.MustUnmarshal(bz, ¶ms) + return params +} + +// SetParams set the params +func (k Keeper) SetParams(ctx context.Context, params types.Params) error { + store := runtime.KVStoreAdapter(k.storeService.OpenKVStore(ctx)) + bz, err := k.cdc.Marshal(¶ms) + if err != nil { + return err + } + store.Set(types.ParamsKey, bz) + + return nil +} diff --git a/x/migration/keeper/params_test.go b/x/migration/keeper/params_test.go new file mode 100644 index 000000000..c628ac0cb --- /dev/null +++ b/x/migration/keeper/params_test.go @@ -0,0 +1,18 @@ +package keeper_test + +import ( + "testing" + + "github.com/stretchr/testify/require" + + keepertest "github.com/pokt-network/poktroll/testutil/keeper" + "github.com/pokt-network/poktroll/x/migration/types" +) + +func TestGetParams(t *testing.T) { + k, ctx := keepertest.MigrationKeeper(t) + params := types.DefaultParams() + + require.NoError(t, k.SetParams(ctx, params)) + require.EqualValues(t, params, k.GetParams(ctx)) +} diff --git a/x/migration/keeper/query.go b/x/migration/keeper/query.go new file mode 100644 index 000000000..28b91e3fb --- /dev/null +++ b/x/migration/keeper/query.go @@ -0,0 +1,7 @@ +package keeper + +import ( + "github.com/pokt-network/poktroll/x/migration/types" +) + +var _ types.QueryServer = Keeper{} diff --git a/x/migration/keeper/query_params.go b/x/migration/keeper/query_params.go new file mode 100644 index 000000000..db63079c6 --- /dev/null +++ b/x/migration/keeper/query_params.go @@ -0,0 +1,20 @@ +package keeper + +import ( + "context" + + sdk "github.com/cosmos/cosmos-sdk/types" + "google.golang.org/grpc/codes" + "google.golang.org/grpc/status" + + "github.com/pokt-network/poktroll/x/migration/types" +) + +func (k Keeper) Params(goCtx context.Context, req *types.QueryParamsRequest) (*types.QueryParamsResponse, error) { + if req == nil { + return nil, status.Error(codes.InvalidArgument, "invalid request") + } + ctx := sdk.UnwrapSDKContext(goCtx) + + return &types.QueryParamsResponse{Params: k.GetParams(ctx)}, nil +} diff --git a/x/migration/keeper/query_params_test.go b/x/migration/keeper/query_params_test.go new file mode 100644 index 000000000..46deda203 --- /dev/null +++ b/x/migration/keeper/query_params_test.go @@ -0,0 +1,20 @@ +package keeper_test + +import ( + "testing" + + "github.com/stretchr/testify/require" + + keepertest "github.com/pokt-network/poktroll/testutil/keeper" + "github.com/pokt-network/poktroll/x/migration/types" +) + +func TestParamsQuery(t *testing.T) { + keeper, ctx := keepertest.MigrationKeeper(t) + params := types.DefaultParams() + require.NoError(t, keeper.SetParams(ctx, params)) + + response, err := keeper.Params(ctx, &types.QueryParamsRequest{}) + require.NoError(t, err) + require.Equal(t, &types.QueryParamsResponse{Params: params}, response) +} diff --git a/x/migration/module/autocli.go b/x/migration/module/autocli.go new file mode 100644 index 000000000..80b4d488c --- /dev/null +++ b/x/migration/module/autocli.go @@ -0,0 +1,39 @@ +package migration + +import ( + autocliv1 "cosmossdk.io/api/cosmos/autocli/v1" + + modulev1 "github.com/pokt-network/poktroll/api/poktroll/migration" +) + +// TODO_UPNEXT(@bryanchriswhite, #1046): Add `MsgClaimMorsePOKT` to the autocli. +// TODO_UPNEXT(@bryanchriswhite, #1047): Make sure to document why the autocli is +// not used for transactions requiring auth signatures. + +// AutoCLIOptions implements the autocli.HasAutoCLIConfig interface. +func (am AppModule) AutoCLIOptions() *autocliv1.ModuleOptions { + return &autocliv1.ModuleOptions{ + Query: &autocliv1.ServiceCommandDescriptor{ + Service: modulev1.Query_ServiceDesc.ServiceName, + RpcCommandOptions: []*autocliv1.RpcCommandOptions{ + { + RpcMethod: "Params", + Use: "params", + Short: "Shows the parameters of the module", + }, + // this line is used by ignite scaffolding # autocli/query + }, + }, + Tx: &autocliv1.ServiceCommandDescriptor{ + Service: modulev1.Msg_ServiceDesc.ServiceName, + EnhanceCustomCommand: true, // only required if you want to use the custom command + RpcCommandOptions: []*autocliv1.RpcCommandOptions{ + { + RpcMethod: "UpdateParams", + Skip: true, // skipped because authority gated + }, + // this line is used by ignite scaffolding # autocli/tx + }, + }, + } +} diff --git a/x/migration/module/genesis.go b/x/migration/module/genesis.go new file mode 100644 index 000000000..88000e771 --- /dev/null +++ b/x/migration/module/genesis.go @@ -0,0 +1,26 @@ +package migration + +import ( + sdk "github.com/cosmos/cosmos-sdk/types" + + "github.com/pokt-network/poktroll/x/migration/keeper" + "github.com/pokt-network/poktroll/x/migration/types" +) + +// InitGenesis initializes the module's state from a provided genesis state. +func InitGenesis(ctx sdk.Context, k keeper.Keeper, genState types.GenesisState) { + // this line is used by starport scaffolding # genesis/module/init + if err := k.SetParams(ctx, genState.Params); err != nil { + panic(err) + } +} + +// ExportGenesis returns the module's exported genesis. +func ExportGenesis(ctx sdk.Context, k keeper.Keeper) *types.GenesisState { + genesis := types.DefaultGenesis() + genesis.Params = k.GetParams(ctx) + + // this line is used by starport scaffolding # genesis/module/export + + return genesis +} diff --git a/x/migration/module/genesis_test.go b/x/migration/module/genesis_test.go new file mode 100644 index 000000000..3e7fb2ba9 --- /dev/null +++ b/x/migration/module/genesis_test.go @@ -0,0 +1,29 @@ +package migration_test + +import ( + "testing" + + keepertest "github.com/pokt-network/poktroll/testutil/keeper" + "github.com/pokt-network/poktroll/testutil/nullify" + migration "github.com/pokt-network/poktroll/x/migration/module" + "github.com/pokt-network/poktroll/x/migration/types" + "github.com/stretchr/testify/require" +) + +func TestGenesis(t *testing.T) { + genesisState := types.GenesisState{ + Params: types.DefaultParams(), + + // this line is used by starport scaffolding # genesis/test/state + } + + k, ctx := keepertest.MigrationKeeper(t) + migration.InitGenesis(ctx, k, genesisState) + got := migration.ExportGenesis(ctx, k) + require.NotNil(t, got) + + nullify.Fill(&genesisState) + nullify.Fill(got) + + // this line is used by starport scaffolding # genesis/test/assert +} diff --git a/x/migration/module/module.go b/x/migration/module/module.go new file mode 100644 index 000000000..9632fab53 --- /dev/null +++ b/x/migration/module/module.go @@ -0,0 +1,214 @@ +package migration + +import ( + "context" + "encoding/json" + "fmt" + + "cosmossdk.io/core/appmodule" + "cosmossdk.io/core/store" + "cosmossdk.io/depinject" + "cosmossdk.io/log" + "github.com/cosmos/cosmos-sdk/client" + "github.com/cosmos/cosmos-sdk/codec" + cdctypes "github.com/cosmos/cosmos-sdk/codec/types" + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/cosmos/cosmos-sdk/types/module" + authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" + govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" + "github.com/grpc-ecosystem/grpc-gateway/runtime" + + // this line is used by starport scaffolding # 1 + + modulev1 "github.com/pokt-network/poktroll/api/poktroll/migration/module" + "github.com/pokt-network/poktroll/x/migration/keeper" + "github.com/pokt-network/poktroll/x/migration/types" +) + +var ( + _ module.AppModuleBasic = (*AppModule)(nil) + _ module.AppModuleSimulation = (*AppModule)(nil) + _ module.HasGenesis = (*AppModule)(nil) + _ module.HasInvariants = (*AppModule)(nil) + _ module.HasConsensusVersion = (*AppModule)(nil) + + _ appmodule.AppModule = (*AppModule)(nil) + _ appmodule.HasBeginBlocker = (*AppModule)(nil) + _ appmodule.HasEndBlocker = (*AppModule)(nil) +) + +// ---------------------------------------------------------------------------- +// AppModuleBasic +// ---------------------------------------------------------------------------- + +// AppModuleBasic implements the AppModuleBasic interface that defines the +// independent methods a Cosmos SDK module needs to implement. +type AppModuleBasic struct { + cdc codec.BinaryCodec +} + +func NewAppModuleBasic(cdc codec.BinaryCodec) AppModuleBasic { + return AppModuleBasic{cdc: cdc} +} + +// Name returns the name of the module as a string. +func (AppModuleBasic) Name() string { + return types.ModuleName +} + +// RegisterLegacyAminoCodec registers the amino codec for the module, which is used +// to marshal and unmarshal structs to/from []byte in order to persist them in the module's KVStore. +func (AppModuleBasic) RegisterLegacyAminoCodec(cdc *codec.LegacyAmino) {} + +// RegisterInterfaces registers a module's interface types and their concrete implementations as proto.Message. +func (a AppModuleBasic) RegisterInterfaces(reg cdctypes.InterfaceRegistry) { + types.RegisterInterfaces(reg) +} + +// DefaultGenesis returns a default GenesisState for the module, marshalled to json.RawMessage. +// The default GenesisState need to be defined by the module developer and is primarily used for testing. +func (AppModuleBasic) DefaultGenesis(cdc codec.JSONCodec) json.RawMessage { + return cdc.MustMarshalJSON(types.DefaultGenesis()) +} + +// ValidateGenesis used to validate the GenesisState, given in its json.RawMessage form. +func (AppModuleBasic) ValidateGenesis(cdc codec.JSONCodec, config client.TxEncodingConfig, bz json.RawMessage) error { + var genState types.GenesisState + if err := cdc.UnmarshalJSON(bz, &genState); err != nil { + return fmt.Errorf("failed to unmarshal %s genesis state: %w", types.ModuleName, err) + } + return genState.Validate() +} + +// RegisterGRPCGatewayRoutes registers the gRPC Gateway routes for the module. +func (AppModuleBasic) RegisterGRPCGatewayRoutes(clientCtx client.Context, mux *runtime.ServeMux) { + if err := types.RegisterQueryHandlerClient(context.Background(), mux, types.NewQueryClient(clientCtx)); err != nil { + panic(err) + } +} + +// ---------------------------------------------------------------------------- +// AppModule +// ---------------------------------------------------------------------------- + +// AppModule implements the AppModule interface that defines the inter-dependent methods that modules need to implement +type AppModule struct { + AppModuleBasic + + keeper keeper.Keeper + accountKeeper types.AccountKeeper + bankKeeper types.BankKeeper +} + +func NewAppModule( + cdc codec.Codec, + keeper keeper.Keeper, + accountKeeper types.AccountKeeper, + bankKeeper types.BankKeeper, +) AppModule { + return AppModule{ + AppModuleBasic: NewAppModuleBasic(cdc), + keeper: keeper, + accountKeeper: accountKeeper, + bankKeeper: bankKeeper, + } +} + +// RegisterServices registers a gRPC query service to respond to the module-specific gRPC queries +func (am AppModule) RegisterServices(cfg module.Configurator) { + types.RegisterMsgServer(cfg.MsgServer(), keeper.NewMsgServerImpl(am.keeper)) + types.RegisterQueryServer(cfg.QueryServer(), am.keeper) +} + +// RegisterInvariants registers the invariants of the module. If an invariant deviates from its predicted value, the InvariantRegistry triggers appropriate logic (most often the chain will be halted) +func (am AppModule) RegisterInvariants(_ sdk.InvariantRegistry) {} + +// InitGenesis performs the module's genesis initialization. It returns no validator updates. +func (am AppModule) InitGenesis(ctx sdk.Context, cdc codec.JSONCodec, gs json.RawMessage) { + var genState types.GenesisState + // Initialize global index to index in genesis state + cdc.MustUnmarshalJSON(gs, &genState) + + InitGenesis(ctx, am.keeper, genState) +} + +// ExportGenesis returns the module's exported genesis state as raw JSON bytes. +func (am AppModule) ExportGenesis(ctx sdk.Context, cdc codec.JSONCodec) json.RawMessage { + genState := ExportGenesis(ctx, am.keeper) + return cdc.MustMarshalJSON(genState) +} + +// ConsensusVersion is a sequence number for state-breaking change of the module. +// It should be incremented on each consensus-breaking change introduced by the module. +// To avoid wrong/empty versions, the initial version should be set to 1. +func (AppModule) ConsensusVersion() uint64 { return 1 } + +// BeginBlock contains the logic that is automatically triggered at the beginning of each block. +// The begin block implementation is optional. +func (am AppModule) BeginBlock(_ context.Context) error { + return nil +} + +// EndBlock contains the logic that is automatically triggered at the end of each block. +// The end block implementation is optional. +func (am AppModule) EndBlock(_ context.Context) error { + return nil +} + +// IsOnePerModuleType implements the depinject.OnePerModuleType interface. +func (am AppModule) IsOnePerModuleType() {} + +// IsAppModule implements the appmodule.AppModule interface. +func (am AppModule) IsAppModule() {} + +// ---------------------------------------------------------------------------- +// App Wiring Setup +// ---------------------------------------------------------------------------- + +func init() { + appmodule.Register( + &modulev1.Module{}, + appmodule.Provide(ProvideModule), + ) +} + +type ModuleInputs struct { + depinject.In + + StoreService store.KVStoreService + Cdc codec.Codec + Config *modulev1.Module + Logger log.Logger + + AccountKeeper types.AccountKeeper + BankKeeper types.BankKeeper +} + +type ModuleOutputs struct { + depinject.Out + + MigrationKeeper keeper.Keeper + Module appmodule.AppModule +} + +func ProvideModule(in ModuleInputs) ModuleOutputs { + // default to governance authority if not provided + authority := authtypes.NewModuleAddress(govtypes.ModuleName) + if in.Config.Authority != "" { + authority = authtypes.NewModuleAddressOrBech32Address(in.Config.Authority) + } + k := keeper.NewKeeper( + in.Cdc, + in.StoreService, + in.Logger, + authority.String(), + ) + m := NewAppModule( + in.Cdc, + k, + in.AccountKeeper, + in.BankKeeper, + ) + + return ModuleOutputs{MigrationKeeper: k, Module: m} +} diff --git a/x/migration/module/simulation.go b/x/migration/module/simulation.go new file mode 100644 index 000000000..2c4ef40a8 --- /dev/null +++ b/x/migration/module/simulation.go @@ -0,0 +1,59 @@ +package migration + +import ( + "math/rand" + + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/cosmos/cosmos-sdk/types/module" + simtypes "github.com/cosmos/cosmos-sdk/types/simulation" + "github.com/cosmos/cosmos-sdk/x/simulation" + + "github.com/pokt-network/poktroll/testutil/sample" + migrationsimulation "github.com/pokt-network/poktroll/x/migration/simulation" + "github.com/pokt-network/poktroll/x/migration/types" +) + +// avoid unused import issue +var ( + _ = migrationsimulation.FindAccount + _ = rand.Rand{} + _ = sample.AccAddress + _ = sdk.AccAddress{} + _ = simulation.MsgEntryKind +) + +const ( +// this line is used by starport scaffolding # simapp/module/const +) + +// GenerateGenesisState creates a randomized GenState of the module. +func (AppModule) GenerateGenesisState(simState *module.SimulationState) { + accs := make([]string, len(simState.Accounts)) + for i, acc := range simState.Accounts { + accs[i] = acc.Address.String() + } + migrationGenesis := types.GenesisState{ + Params: types.DefaultParams(), + // this line is used by starport scaffolding # simapp/module/genesisState + } + simState.GenState[types.ModuleName] = simState.Cdc.MustMarshalJSON(&migrationGenesis) +} + +// RegisterStoreDecoder registers a decoder. +func (am AppModule) RegisterStoreDecoder(_ simtypes.StoreDecoderRegistry) {} + +// WeightedOperations returns the all the gov module operations with their respective weights. +func (am AppModule) WeightedOperations(simState module.SimulationState) []simtypes.WeightedOperation { + operations := make([]simtypes.WeightedOperation, 0) + + // this line is used by starport scaffolding # simapp/module/operation + + return operations +} + +// ProposalMsgs returns msgs used for governance proposals for simulations. +func (am AppModule) ProposalMsgs(simState module.SimulationState) []simtypes.WeightedProposalMsg { + return []simtypes.WeightedProposalMsg{ + // this line is used by starport scaffolding # simapp/module/OpMsg + } +} diff --git a/x/migration/simulation/helpers.go b/x/migration/simulation/helpers.go new file mode 100644 index 000000000..92c437c0d --- /dev/null +++ b/x/migration/simulation/helpers.go @@ -0,0 +1,15 @@ +package simulation + +import ( + sdk "github.com/cosmos/cosmos-sdk/types" + simtypes "github.com/cosmos/cosmos-sdk/types/simulation" +) + +// FindAccount find a specific address from an account list +func FindAccount(accs []simtypes.Account, address string) (simtypes.Account, bool) { + creator, err := sdk.AccAddressFromBech32(address) + if err != nil { + panic(err) + } + return simtypes.FindAccount(accs, creator) +} diff --git a/x/migration/types/codec.go b/x/migration/types/codec.go new file mode 100644 index 000000000..ac5526374 --- /dev/null +++ b/x/migration/types/codec.go @@ -0,0 +1,17 @@ +package types + +import ( + cdctypes "github.com/cosmos/cosmos-sdk/codec/types" + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/cosmos/cosmos-sdk/types/msgservice" + // this line is used by starport scaffolding # 1 +) + +func RegisterInterfaces(registry cdctypes.InterfaceRegistry) { + // this line is used by starport scaffolding # 3 + + registry.RegisterImplementations((*sdk.Msg)(nil), + &MsgUpdateParams{}, + ) + msgservice.RegisterMsgServiceDesc(registry, &_Msg_serviceDesc) +} diff --git a/x/migration/types/errors.go b/x/migration/types/errors.go new file mode 100644 index 000000000..ca50b521e --- /dev/null +++ b/x/migration/types/errors.go @@ -0,0 +1,13 @@ +package types + +// DONTCOVER + +import ( + sdkerrors "cosmossdk.io/errors" +) + +// x/migration module sentinel errors +var ( + ErrInvalidSigner = sdkerrors.Register(ModuleName, 1100, "expected gov account as only signer for proposal message") + ErrSample = sdkerrors.Register(ModuleName, 1101, "sample error") +) diff --git a/x/migration/types/expected_keepers.go b/x/migration/types/expected_keepers.go new file mode 100644 index 000000000..4a50d01a9 --- /dev/null +++ b/x/migration/types/expected_keepers.go @@ -0,0 +1,25 @@ +package types + +import ( + "context" + + sdk "github.com/cosmos/cosmos-sdk/types" +) + +// AccountKeeper defines the expected interface for the Account module. +type AccountKeeper interface { + GetAccount(context.Context, sdk.AccAddress) sdk.AccountI // only used for simulation + // Methods imported from account should be defined here +} + +// BankKeeper defines the expected interface for the Bank module. +type BankKeeper interface { + SpendableCoins(context.Context, sdk.AccAddress) sdk.Coins + // Methods imported from bank should be defined here +} + +// ParamSubspace defines the expected Subspace interface for parameters. +type ParamSubspace interface { + Get(context.Context, []byte, interface{}) + Set(context.Context, []byte, interface{}) +} diff --git a/x/migration/types/genesis.go b/x/migration/types/genesis.go new file mode 100644 index 000000000..c41be0742 --- /dev/null +++ b/x/migration/types/genesis.go @@ -0,0 +1,24 @@ +package types + +import ( +// this line is used by starport scaffolding # genesis/types/import +) + +// DefaultIndex is the default global index +const DefaultIndex uint64 = 1 + +// DefaultGenesis returns the default genesis state +func DefaultGenesis() *GenesisState { + return &GenesisState{ + // this line is used by starport scaffolding # genesis/types/default + Params: DefaultParams(), + } +} + +// Validate performs basic genesis state validation returning an error upon any +// failure. +func (gs GenesisState) Validate() error { + // this line is used by starport scaffolding # genesis/types/validate + + return gs.Params.Validate() +} diff --git a/x/migration/types/genesis.pb.go b/x/migration/types/genesis.pb.go new file mode 100644 index 000000000..334ae0fd2 --- /dev/null +++ b/x/migration/types/genesis.pb.go @@ -0,0 +1,320 @@ +// Code generated by protoc-gen-gogo. DO NOT EDIT. +// source: poktroll/migration/genesis.proto + +package types + +import ( + fmt "fmt" + _ "github.com/cosmos/cosmos-sdk/types/tx/amino" + _ "github.com/cosmos/gogoproto/gogoproto" + proto "github.com/cosmos/gogoproto/proto" + io "io" + math "math" + math_bits "math/bits" +) + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package + +// GenesisState defines the migration module's genesis state. +type GenesisState struct { + // params defines all the parameters of the module. + Params Params `protobuf:"bytes,1,opt,name=params,proto3" json:"params"` +} + +func (m *GenesisState) Reset() { *m = GenesisState{} } +func (m *GenesisState) String() string { return proto.CompactTextString(m) } +func (*GenesisState) ProtoMessage() {} +func (*GenesisState) Descriptor() ([]byte, []int) { + return fileDescriptor_c544bf46e8dacb64, []int{0} +} +func (m *GenesisState) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *GenesisState) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil +} +func (m *GenesisState) XXX_Merge(src proto.Message) { + xxx_messageInfo_GenesisState.Merge(m, src) +} +func (m *GenesisState) XXX_Size() int { + return m.Size() +} +func (m *GenesisState) XXX_DiscardUnknown() { + xxx_messageInfo_GenesisState.DiscardUnknown(m) +} + +var xxx_messageInfo_GenesisState proto.InternalMessageInfo + +func (m *GenesisState) GetParams() Params { + if m != nil { + return m.Params + } + return Params{} +} + +func init() { + proto.RegisterType((*GenesisState)(nil), "poktroll.migration.GenesisState") +} + +func init() { proto.RegisterFile("poktroll/migration/genesis.proto", fileDescriptor_c544bf46e8dacb64) } + +var fileDescriptor_c544bf46e8dacb64 = []byte{ + // 219 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x52, 0x28, 0xc8, 0xcf, 0x2e, + 0x29, 0xca, 0xcf, 0xc9, 0xd1, 0xcf, 0xcd, 0x4c, 0x2f, 0x4a, 0x2c, 0xc9, 0xcc, 0xcf, 0xd3, 0x4f, + 0x4f, 0xcd, 0x4b, 0x2d, 0xce, 0x2c, 0xd6, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x12, 0x82, 0xa9, + 0xd0, 0x83, 0xab, 0x90, 0x12, 0x4c, 0xcc, 0xcd, 0xcc, 0xcb, 0xd7, 0x07, 0x93, 0x10, 0x65, 0x52, + 0x22, 0xe9, 0xf9, 0xe9, 0xf9, 0x60, 0xa6, 0x3e, 0x88, 0x05, 0x15, 0x95, 0xc7, 0x62, 0x7c, 0x41, + 0x62, 0x51, 0x62, 0x2e, 0xd4, 0x74, 0x25, 0x5f, 0x2e, 0x1e, 0x77, 0x88, 0x75, 0xc1, 0x25, 0x89, + 0x25, 0xa9, 0x42, 0xb6, 0x5c, 0x6c, 0x10, 0x79, 0x09, 0x46, 0x05, 0x46, 0x0d, 0x6e, 0x23, 0x29, + 0x3d, 0x4c, 0xeb, 0xf5, 0x02, 0xc0, 0x2a, 0x9c, 0x38, 0x4f, 0xdc, 0x93, 0x67, 0x58, 0xf1, 0x7c, + 0x83, 0x16, 0x63, 0x10, 0x54, 0x93, 0x53, 0xc0, 0x89, 0x47, 0x72, 0x8c, 0x17, 0x1e, 0xc9, 0x31, + 0xde, 0x78, 0x24, 0xc7, 0xf8, 0xe0, 0x91, 0x1c, 0xe3, 0x84, 0xc7, 0x72, 0x0c, 0x17, 0x1e, 0xcb, + 0x31, 0xdc, 0x78, 0x2c, 0xc7, 0x10, 0x65, 0x94, 0x9e, 0x59, 0x92, 0x51, 0x9a, 0xa4, 0x97, 0x9c, + 0x9f, 0xab, 0x0f, 0x32, 0x56, 0x37, 0x2f, 0xb5, 0xa4, 0x3c, 0xbf, 0x28, 0x5b, 0x1f, 0xee, 0xca, + 0x0a, 0x24, 0x77, 0x96, 0x54, 0x16, 0xa4, 0x16, 0x27, 0xb1, 0x81, 0xdd, 0x69, 0x0c, 0x08, 0x00, + 0x00, 0xff, 0xff, 0xd2, 0xec, 0xd5, 0xe0, 0x29, 0x01, 0x00, 0x00, +} + +func (m *GenesisState) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *GenesisState) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *GenesisState) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + { + size, err := m.Params.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenesis(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + return len(dAtA) - i, nil +} + +func encodeVarintGenesis(dAtA []byte, offset int, v uint64) int { + offset -= sovGenesis(v) + base := offset + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return base +} +func (m *GenesisState) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = m.Params.Size() + n += 1 + l + sovGenesis(uint64(l)) + return n +} + +func sovGenesis(x uint64) (n int) { + return (math_bits.Len64(x|1) + 6) / 7 +} +func sozGenesis(x uint64) (n int) { + return sovGenesis(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (m *GenesisState) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: GenesisState: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: GenesisState: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Params", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenesis + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenesis + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Params.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenesis(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthGenesis + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipGenesis(dAtA []byte) (n int, err error) { + l := len(dAtA) + iNdEx := 0 + depth := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenesis + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenesis + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if dAtA[iNdEx-1] < 0x80 { + break + } + } + case 1: + iNdEx += 8 + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenesis + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if length < 0 { + return 0, ErrInvalidLengthGenesis + } + iNdEx += length + case 3: + depth++ + case 4: + if depth == 0 { + return 0, ErrUnexpectedEndOfGroupGenesis + } + depth-- + case 5: + iNdEx += 4 + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + if iNdEx < 0 { + return 0, ErrInvalidLengthGenesis + } + if depth == 0 { + return iNdEx, nil + } + } + return 0, io.ErrUnexpectedEOF +} + +var ( + ErrInvalidLengthGenesis = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowGenesis = fmt.Errorf("proto: integer overflow") + ErrUnexpectedEndOfGroupGenesis = fmt.Errorf("proto: unexpected end of group") +) diff --git a/x/migration/types/genesis_test.go b/x/migration/types/genesis_test.go new file mode 100644 index 000000000..61cd184b4 --- /dev/null +++ b/x/migration/types/genesis_test.go @@ -0,0 +1,41 @@ +package types_test + +import ( + "testing" + + "github.com/pokt-network/poktroll/x/migration/types" + "github.com/stretchr/testify/require" +) + +func TestGenesisState_Validate(t *testing.T) { + tests := []struct { + desc string + genState *types.GenesisState + valid bool + }{ + { + desc: "default is valid", + genState: types.DefaultGenesis(), + valid: true, + }, + { + desc: "valid genesis state", + genState: &types.GenesisState{ + + // this line is used by starport scaffolding # types/genesis/validField + }, + valid: true, + }, + // this line is used by starport scaffolding # types/genesis/testcase + } + for _, tc := range tests { + t.Run(tc.desc, func(t *testing.T) { + err := tc.genState.Validate() + if tc.valid { + require.NoError(t, err) + } else { + require.Error(t, err) + } + }) + } +} diff --git a/x/migration/types/keys.go b/x/migration/types/keys.go new file mode 100644 index 000000000..be31adac9 --- /dev/null +++ b/x/migration/types/keys.go @@ -0,0 +1,20 @@ +package types + +const ( + // ModuleName defines the module name + ModuleName = "migration" + + // StoreKey defines the primary module store key + StoreKey = ModuleName + + // MemStoreKey defines the in-memory store key + MemStoreKey = "mem_migration" +) + +var ( + ParamsKey = []byte("p_migration") +) + +func KeyPrefix(p string) []byte { + return []byte(p) +} diff --git a/x/migration/types/msg_update_params.go b/x/migration/types/msg_update_params.go new file mode 100644 index 000000000..c228cb30f --- /dev/null +++ b/x/migration/types/msg_update_params.go @@ -0,0 +1,21 @@ +package types + +import ( + errorsmod "cosmossdk.io/errors" + sdk "github.com/cosmos/cosmos-sdk/types" +) + +var _ sdk.Msg = new(MsgUpdateParams) + +// ValidateBasic does a sanity check on the provided data. +func (m *MsgUpdateParams) ValidateBasic() error { + if _, err := sdk.AccAddressFromBech32(m.Authority); err != nil { + return errorsmod.Wrap(err, "invalid authority address") + } + + if err := m.Params.Validate(); err != nil { + return err + } + + return nil +} diff --git a/x/migration/types/params.go b/x/migration/types/params.go new file mode 100644 index 000000000..4f3215e35 --- /dev/null +++ b/x/migration/types/params.go @@ -0,0 +1,32 @@ +package types + +import ( + paramtypes "github.com/cosmos/cosmos-sdk/x/params/types" +) + +var _ paramtypes.ParamSet = (*Params)(nil) + +// ParamKeyTable the param key table for launch module +func ParamKeyTable() paramtypes.KeyTable { + return paramtypes.NewKeyTable().RegisterParamSet(&Params{}) +} + +// NewParams creates a new Params instance +func NewParams() Params { + return Params{} +} + +// DefaultParams returns a default set of parameters +func DefaultParams() Params { + return NewParams() +} + +// ParamSetPairs get the params.ParamSet +func (p *Params) ParamSetPairs() paramtypes.ParamSetPairs { + return paramtypes.ParamSetPairs{} +} + +// Validate validates the set of params +func (p Params) Validate() error { + return nil +} diff --git a/x/migration/types/params.pb.go b/x/migration/types/params.pb.go new file mode 100644 index 000000000..549b399e5 --- /dev/null +++ b/x/migration/types/params.pb.go @@ -0,0 +1,285 @@ +// Code generated by protoc-gen-gogo. DO NOT EDIT. +// source: poktroll/migration/params.proto + +package types + +import ( + fmt "fmt" + _ "github.com/cosmos/cosmos-sdk/types/tx/amino" + _ "github.com/cosmos/gogoproto/gogoproto" + proto "github.com/cosmos/gogoproto/proto" + io "io" + math "math" + math_bits "math/bits" +) + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package + +// Params defines the parameters for the module. +type Params struct { +} + +func (m *Params) Reset() { *m = Params{} } +func (m *Params) String() string { return proto.CompactTextString(m) } +func (*Params) ProtoMessage() {} +func (*Params) Descriptor() ([]byte, []int) { + return fileDescriptor_c43627a1a6fcee1f, []int{0} +} +func (m *Params) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *Params) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil +} +func (m *Params) XXX_Merge(src proto.Message) { + xxx_messageInfo_Params.Merge(m, src) +} +func (m *Params) XXX_Size() int { + return m.Size() +} +func (m *Params) XXX_DiscardUnknown() { + xxx_messageInfo_Params.DiscardUnknown(m) +} + +var xxx_messageInfo_Params proto.InternalMessageInfo + +func init() { + proto.RegisterType((*Params)(nil), "poktroll.migration.Params") +} + +func init() { proto.RegisterFile("poktroll/migration/params.proto", fileDescriptor_c43627a1a6fcee1f) } + +var fileDescriptor_c43627a1a6fcee1f = []byte{ + // 183 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x2f, 0xc8, 0xcf, 0x2e, + 0x29, 0xca, 0xcf, 0xc9, 0xd1, 0xcf, 0xcd, 0x4c, 0x2f, 0x4a, 0x2c, 0xc9, 0xcc, 0xcf, 0xd3, 0x2f, + 0x48, 0x2c, 0x4a, 0xcc, 0x2d, 0xd6, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x12, 0x82, 0x29, 0xd0, + 0x83, 0x2b, 0x90, 0x12, 0x4c, 0xcc, 0xcd, 0xcc, 0xcb, 0xd7, 0x07, 0x93, 0x10, 0x65, 0x52, 0x22, + 0xe9, 0xf9, 0xe9, 0xf9, 0x60, 0xa6, 0x3e, 0x88, 0x05, 0x11, 0x55, 0xd2, 0xe3, 0x62, 0x0b, 0x00, + 0x1b, 0x66, 0xa5, 0xf2, 0x62, 0x81, 0x3c, 0x63, 0xd7, 0xf3, 0x0d, 0x5a, 0xd2, 0x70, 0x0b, 0x2b, + 0x90, 0xac, 0x84, 0xa8, 0x72, 0x0a, 0x38, 0xf1, 0x48, 0x8e, 0xf1, 0xc2, 0x23, 0x39, 0xc6, 0x1b, + 0x8f, 0xe4, 0x18, 0x1f, 0x3c, 0x92, 0x63, 0x9c, 0xf0, 0x58, 0x8e, 0xe1, 0xc2, 0x63, 0x39, 0x86, + 0x1b, 0x8f, 0xe5, 0x18, 0xa2, 0x8c, 0xd2, 0x33, 0x4b, 0x32, 0x4a, 0x93, 0xf4, 0x92, 0xf3, 0x73, + 0xf5, 0x41, 0xa6, 0xe8, 0xe6, 0xa5, 0x96, 0x94, 0xe7, 0x17, 0x65, 0xeb, 0x63, 0x35, 0xb2, 0xa4, + 0xb2, 0x20, 0xb5, 0x38, 0x89, 0x0d, 0xec, 0x10, 0x63, 0x40, 0x00, 0x00, 0x00, 0xff, 0xff, 0x62, + 0x7c, 0x65, 0x65, 0xe8, 0x00, 0x00, 0x00, +} + +func (this *Params) Equal(that interface{}) bool { + if that == nil { + return this == nil + } + + that1, ok := that.(*Params) + if !ok { + that2, ok := that.(Params) + if ok { + that1 = &that2 + } else { + return false + } + } + if that1 == nil { + return this == nil + } else if this == nil { + return false + } + return true +} +func (m *Params) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *Params) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *Params) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func encodeVarintParams(dAtA []byte, offset int, v uint64) int { + offset -= sovParams(v) + base := offset + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return base +} +func (m *Params) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func sovParams(x uint64) (n int) { + return (math_bits.Len64(x|1) + 6) / 7 +} +func sozParams(x uint64) (n int) { + return sovParams(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (m *Params) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowParams + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Params: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Params: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipParams(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthParams + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipParams(dAtA []byte) (n int, err error) { + l := len(dAtA) + iNdEx := 0 + depth := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowParams + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowParams + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if dAtA[iNdEx-1] < 0x80 { + break + } + } + case 1: + iNdEx += 8 + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowParams + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if length < 0 { + return 0, ErrInvalidLengthParams + } + iNdEx += length + case 3: + depth++ + case 4: + if depth == 0 { + return 0, ErrUnexpectedEndOfGroupParams + } + depth-- + case 5: + iNdEx += 4 + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + if iNdEx < 0 { + return 0, ErrInvalidLengthParams + } + if depth == 0 { + return iNdEx, nil + } + } + return 0, io.ErrUnexpectedEOF +} + +var ( + ErrInvalidLengthParams = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowParams = fmt.Errorf("proto: integer overflow") + ErrUnexpectedEndOfGroupParams = fmt.Errorf("proto: unexpected end of group") +) diff --git a/x/migration/types/query.pb.go b/x/migration/types/query.pb.go new file mode 100644 index 000000000..d82a26af1 --- /dev/null +++ b/x/migration/types/query.pb.go @@ -0,0 +1,532 @@ +// Code generated by protoc-gen-gogo. DO NOT EDIT. +// source: poktroll/migration/query.proto + +package types + +import ( + context "context" + fmt "fmt" + _ "github.com/cosmos/cosmos-sdk/types/query" + _ "github.com/cosmos/cosmos-sdk/types/tx/amino" + _ "github.com/cosmos/gogoproto/gogoproto" + grpc1 "github.com/cosmos/gogoproto/grpc" + proto "github.com/cosmos/gogoproto/proto" + _ "google.golang.org/genproto/googleapis/api/annotations" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" + io "io" + math "math" + math_bits "math/bits" +) + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package + +// QueryParamsRequest is request type for the Query/Params RPC method. +type QueryParamsRequest struct { +} + +func (m *QueryParamsRequest) Reset() { *m = QueryParamsRequest{} } +func (m *QueryParamsRequest) String() string { return proto.CompactTextString(m) } +func (*QueryParamsRequest) ProtoMessage() {} +func (*QueryParamsRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_524460f9291c42e8, []int{0} +} +func (m *QueryParamsRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryParamsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil +} +func (m *QueryParamsRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryParamsRequest.Merge(m, src) +} +func (m *QueryParamsRequest) XXX_Size() int { + return m.Size() +} +func (m *QueryParamsRequest) XXX_DiscardUnknown() { + xxx_messageInfo_QueryParamsRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_QueryParamsRequest proto.InternalMessageInfo + +// QueryParamsResponse is response type for the Query/Params RPC method. +type QueryParamsResponse struct { + // params holds all the parameters of this module. + Params Params `protobuf:"bytes,1,opt,name=params,proto3" json:"params"` +} + +func (m *QueryParamsResponse) Reset() { *m = QueryParamsResponse{} } +func (m *QueryParamsResponse) String() string { return proto.CompactTextString(m) } +func (*QueryParamsResponse) ProtoMessage() {} +func (*QueryParamsResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_524460f9291c42e8, []int{1} +} +func (m *QueryParamsResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryParamsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil +} +func (m *QueryParamsResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryParamsResponse.Merge(m, src) +} +func (m *QueryParamsResponse) XXX_Size() int { + return m.Size() +} +func (m *QueryParamsResponse) XXX_DiscardUnknown() { + xxx_messageInfo_QueryParamsResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_QueryParamsResponse proto.InternalMessageInfo + +func (m *QueryParamsResponse) GetParams() Params { + if m != nil { + return m.Params + } + return Params{} +} + +func init() { + proto.RegisterType((*QueryParamsRequest)(nil), "poktroll.migration.QueryParamsRequest") + proto.RegisterType((*QueryParamsResponse)(nil), "poktroll.migration.QueryParamsResponse") +} + +func init() { proto.RegisterFile("poktroll/migration/query.proto", fileDescriptor_524460f9291c42e8) } + +var fileDescriptor_524460f9291c42e8 = []byte{ + // 325 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x90, 0x31, 0x4b, 0xc3, 0x40, + 0x14, 0xc7, 0x73, 0x82, 0x05, 0xe3, 0xe4, 0xd9, 0x41, 0x82, 0x5c, 0xa5, 0x83, 0xd5, 0x82, 0x79, + 0xb4, 0xce, 0x2e, 0xfd, 0x04, 0xb5, 0x38, 0xb9, 0x5d, 0xca, 0x71, 0x86, 0x36, 0xf7, 0xae, 0xb9, + 0xab, 0xda, 0xd5, 0xd1, 0x49, 0xd0, 0x0f, 0xe1, 0xe8, 0xc7, 0xe8, 0x58, 0x70, 0xe9, 0x24, 0x92, + 0x0a, 0x7e, 0x0d, 0xc9, 0x25, 0x8a, 0xd2, 0x16, 0x97, 0xf0, 0x78, 0xff, 0xff, 0xff, 0x97, 0xff, + 0x3d, 0x9f, 0x69, 0x1c, 0xd8, 0x14, 0x87, 0x43, 0x48, 0x62, 0x99, 0x72, 0x1b, 0xa3, 0x82, 0xd1, + 0x58, 0xa4, 0x93, 0x50, 0xa7, 0x68, 0x91, 0xd2, 0x6f, 0x3d, 0xfc, 0xd1, 0x83, 0x1d, 0x9e, 0xc4, + 0x0a, 0xc1, 0x7d, 0x0b, 0x5b, 0x50, 0x95, 0x28, 0xd1, 0x8d, 0x90, 0x4f, 0xe5, 0x76, 0x5f, 0x22, + 0xca, 0xa1, 0x00, 0xae, 0x63, 0xe0, 0x4a, 0xa1, 0x75, 0x79, 0x53, 0xaa, 0xcd, 0x3e, 0x9a, 0x04, + 0x0d, 0x44, 0xdc, 0x88, 0xe2, 0x9f, 0x70, 0xdd, 0x8a, 0x84, 0xe5, 0x2d, 0xd0, 0x5c, 0xc6, 0xca, + 0x99, 0x4b, 0x6f, 0x6d, 0x45, 0x4d, 0xcd, 0x53, 0x9e, 0x94, 0xb0, 0x7a, 0xd5, 0xa7, 0xe7, 0x39, + 0xa2, 0xeb, 0x96, 0x3d, 0x31, 0x1a, 0x0b, 0x63, 0xeb, 0x17, 0xfe, 0xee, 0x9f, 0xad, 0xd1, 0xa8, + 0x8c, 0xa0, 0x67, 0x7e, 0xa5, 0x08, 0xef, 0x91, 0x03, 0x72, 0xb4, 0xdd, 0x0e, 0xc2, 0xe5, 0x57, + 0x86, 0x45, 0xa6, 0xb3, 0x35, 0x7d, 0xab, 0x79, 0xcf, 0x9f, 0x2f, 0x4d, 0xd2, 0x2b, 0x43, 0xed, + 0x27, 0xe2, 0x6f, 0x3a, 0x2c, 0xbd, 0x27, 0x7e, 0xa5, 0xf0, 0xd1, 0xc3, 0x55, 0x8c, 0xe5, 0x4a, + 0x41, 0xe3, 0x5f, 0x5f, 0x51, 0xb2, 0x0e, 0x77, 0xaf, 0x1f, 0x8f, 0x1b, 0xc7, 0xb4, 0x01, 0x79, + 0xe0, 0x44, 0x09, 0x7b, 0x83, 0xe9, 0x00, 0xd6, 0x1e, 0xa2, 0xd3, 0x9d, 0x66, 0x8c, 0xcc, 0x32, + 0x46, 0xe6, 0x19, 0x23, 0xef, 0x19, 0x23, 0x0f, 0x0b, 0xe6, 0xcd, 0x16, 0xcc, 0x9b, 0x2f, 0x98, + 0x77, 0xd9, 0x96, 0xb1, 0xbd, 0x1a, 0x47, 0x61, 0x1f, 0x93, 0x35, 0xc0, 0xdb, 0x5f, 0x48, 0x3b, + 0xd1, 0xc2, 0x44, 0x15, 0x77, 0xdb, 0xd3, 0xaf, 0x00, 0x00, 0x00, 0xff, 0xff, 0x97, 0x9a, 0x4e, + 0xc3, 0x25, 0x02, 0x00, 0x00, +} + +// Reference imports to suppress errors if they are not otherwise used. +var _ context.Context +var _ grpc.ClientConn + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +const _ = grpc.SupportPackageIsVersion4 + +// QueryClient is the client API for Query service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. +type QueryClient interface { + // Parameters queries the parameters of the module. + Params(ctx context.Context, in *QueryParamsRequest, opts ...grpc.CallOption) (*QueryParamsResponse, error) +} + +type queryClient struct { + cc grpc1.ClientConn +} + +func NewQueryClient(cc grpc1.ClientConn) QueryClient { + return &queryClient{cc} +} + +func (c *queryClient) Params(ctx context.Context, in *QueryParamsRequest, opts ...grpc.CallOption) (*QueryParamsResponse, error) { + out := new(QueryParamsResponse) + err := c.cc.Invoke(ctx, "/poktroll.migration.Query/Params", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// QueryServer is the server API for Query service. +type QueryServer interface { + // Parameters queries the parameters of the module. + Params(context.Context, *QueryParamsRequest) (*QueryParamsResponse, error) +} + +// UnimplementedQueryServer can be embedded to have forward compatible implementations. +type UnimplementedQueryServer struct { +} + +func (*UnimplementedQueryServer) Params(ctx context.Context, req *QueryParamsRequest) (*QueryParamsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Params not implemented") +} + +func RegisterQueryServer(s grpc1.Server, srv QueryServer) { + s.RegisterService(&_Query_serviceDesc, srv) +} + +func _Query_Params_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryParamsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(QueryServer).Params(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/poktroll.migration.Query/Params", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).Params(ctx, req.(*QueryParamsRequest)) + } + return interceptor(ctx, in, info, handler) +} + +var _Query_serviceDesc = grpc.ServiceDesc{ + ServiceName: "poktroll.migration.Query", + HandlerType: (*QueryServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "Params", + Handler: _Query_Params_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "poktroll/migration/query.proto", +} + +func (m *QueryParamsRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryParamsRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryParamsRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func (m *QueryParamsResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryParamsResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryParamsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + { + size, err := m.Params.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + return len(dAtA) - i, nil +} + +func encodeVarintQuery(dAtA []byte, offset int, v uint64) int { + offset -= sovQuery(v) + base := offset + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return base +} +func (m *QueryParamsRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func (m *QueryParamsResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = m.Params.Size() + n += 1 + l + sovQuery(uint64(l)) + return n +} + +func sovQuery(x uint64) (n int) { + return (math_bits.Len64(x|1) + 6) / 7 +} +func sozQuery(x uint64) (n int) { + return sovQuery(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (m *QueryParamsRequest) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: QueryParamsRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryParamsRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *QueryParamsResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: QueryParamsResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryParamsResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Params", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Params.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipQuery(dAtA []byte) (n int, err error) { + l := len(dAtA) + iNdEx := 0 + depth := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowQuery + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowQuery + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if dAtA[iNdEx-1] < 0x80 { + break + } + } + case 1: + iNdEx += 8 + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowQuery + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if length < 0 { + return 0, ErrInvalidLengthQuery + } + iNdEx += length + case 3: + depth++ + case 4: + if depth == 0 { + return 0, ErrUnexpectedEndOfGroupQuery + } + depth-- + case 5: + iNdEx += 4 + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + if iNdEx < 0 { + return 0, ErrInvalidLengthQuery + } + if depth == 0 { + return iNdEx, nil + } + } + return 0, io.ErrUnexpectedEOF +} + +var ( + ErrInvalidLengthQuery = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowQuery = fmt.Errorf("proto: integer overflow") + ErrUnexpectedEndOfGroupQuery = fmt.Errorf("proto: unexpected end of group") +) diff --git a/x/migration/types/query.pb.gw.go b/x/migration/types/query.pb.gw.go new file mode 100644 index 000000000..5ab60bb65 --- /dev/null +++ b/x/migration/types/query.pb.gw.go @@ -0,0 +1,153 @@ +// Code generated by protoc-gen-grpc-gateway. DO NOT EDIT. +// source: poktroll/migration/query.proto + +/* +Package types is a reverse proxy. + +It translates gRPC into RESTful JSON APIs. +*/ +package types + +import ( + "context" + "io" + "net/http" + + "github.com/golang/protobuf/descriptor" + "github.com/golang/protobuf/proto" + "github.com/grpc-ecosystem/grpc-gateway/runtime" + "github.com/grpc-ecosystem/grpc-gateway/utilities" + "google.golang.org/grpc" + "google.golang.org/grpc/codes" + "google.golang.org/grpc/grpclog" + "google.golang.org/grpc/metadata" + "google.golang.org/grpc/status" +) + +// Suppress "imported and not used" errors +var _ codes.Code +var _ io.Reader +var _ status.Status +var _ = runtime.String +var _ = utilities.NewDoubleArray +var _ = descriptor.ForMessage +var _ = metadata.Join + +func request_Query_Params_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryParamsRequest + var metadata runtime.ServerMetadata + + msg, err := client.Params(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_Query_Params_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryParamsRequest + var metadata runtime.ServerMetadata + + msg, err := server.Params(ctx, &protoReq) + return msg, metadata, err + +} + +// RegisterQueryHandlerServer registers the http handlers for service Query to "mux". +// UnaryRPC :call QueryServer directly. +// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. +// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterQueryHandlerFromEndpoint instead. +func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, server QueryServer) error { + + mux.Handle("GET", pattern_Query_Params_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_Query_Params_0(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Query_Params_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + return nil +} + +// RegisterQueryHandlerFromEndpoint is same as RegisterQueryHandler but +// automatically dials to "endpoint" and closes the connection when "ctx" gets done. +func RegisterQueryHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) { + conn, err := grpc.Dial(endpoint, opts...) + if err != nil { + return err + } + defer func() { + if err != nil { + if cerr := conn.Close(); cerr != nil { + grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + } + return + } + go func() { + <-ctx.Done() + if cerr := conn.Close(); cerr != nil { + grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + } + }() + }() + + return RegisterQueryHandler(ctx, mux, conn) +} + +// RegisterQueryHandler registers the http handlers for service Query to "mux". +// The handlers forward requests to the grpc endpoint over "conn". +func RegisterQueryHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error { + return RegisterQueryHandlerClient(ctx, mux, NewQueryClient(conn)) +} + +// RegisterQueryHandlerClient registers the http handlers for service Query +// to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "QueryClient". +// Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "QueryClient" +// doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in +// "QueryClient" to call the correct interceptors. +func RegisterQueryHandlerClient(ctx context.Context, mux *runtime.ServeMux, client QueryClient) error { + + mux.Handle("GET", pattern_Query_Params_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_Query_Params_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Query_Params_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + return nil +} + +var ( + pattern_Query_Params_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"pokt-network", "poktroll", "migration", "params"}, "", runtime.AssumeColonVerbOpt(false))) +) + +var ( + forward_Query_Params_0 = runtime.ForwardResponseMessage +) diff --git a/x/migration/types/tx.pb.go b/x/migration/types/tx.pb.go new file mode 100644 index 000000000..6299c5f97 --- /dev/null +++ b/x/migration/types/tx.pb.go @@ -0,0 +1,590 @@ +// Code generated by protoc-gen-gogo. DO NOT EDIT. +// source: poktroll/migration/tx.proto + +package types + +import ( + context "context" + fmt "fmt" + _ "github.com/cosmos/cosmos-proto" + _ "github.com/cosmos/cosmos-sdk/types/msgservice" + _ "github.com/cosmos/cosmos-sdk/types/tx/amino" + _ "github.com/cosmos/gogoproto/gogoproto" + grpc1 "github.com/cosmos/gogoproto/grpc" + proto "github.com/cosmos/gogoproto/proto" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" + io "io" + math "math" + math_bits "math/bits" +) + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package + +// MsgUpdateParams is the Msg/UpdateParams request type. +type MsgUpdateParams struct { + // authority is the address that controls the module (defaults to x/gov unless overwritten). + Authority string `protobuf:"bytes,1,opt,name=authority,proto3" json:"authority,omitempty"` + // params defines the module parameters to update. + // + // NOTE: All parameters must be supplied. + Params Params `protobuf:"bytes,2,opt,name=params,proto3" json:"params"` +} + +func (m *MsgUpdateParams) Reset() { *m = MsgUpdateParams{} } +func (m *MsgUpdateParams) String() string { return proto.CompactTextString(m) } +func (*MsgUpdateParams) ProtoMessage() {} +func (*MsgUpdateParams) Descriptor() ([]byte, []int) { + return fileDescriptor_21658240592266b6, []int{0} +} +func (m *MsgUpdateParams) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgUpdateParams) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil +} +func (m *MsgUpdateParams) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgUpdateParams.Merge(m, src) +} +func (m *MsgUpdateParams) XXX_Size() int { + return m.Size() +} +func (m *MsgUpdateParams) XXX_DiscardUnknown() { + xxx_messageInfo_MsgUpdateParams.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgUpdateParams proto.InternalMessageInfo + +func (m *MsgUpdateParams) GetAuthority() string { + if m != nil { + return m.Authority + } + return "" +} + +func (m *MsgUpdateParams) GetParams() Params { + if m != nil { + return m.Params + } + return Params{} +} + +// MsgUpdateParamsResponse defines the response structure for executing a +// MsgUpdateParams message. +type MsgUpdateParamsResponse struct { +} + +func (m *MsgUpdateParamsResponse) Reset() { *m = MsgUpdateParamsResponse{} } +func (m *MsgUpdateParamsResponse) String() string { return proto.CompactTextString(m) } +func (*MsgUpdateParamsResponse) ProtoMessage() {} +func (*MsgUpdateParamsResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_21658240592266b6, []int{1} +} +func (m *MsgUpdateParamsResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgUpdateParamsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil +} +func (m *MsgUpdateParamsResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgUpdateParamsResponse.Merge(m, src) +} +func (m *MsgUpdateParamsResponse) XXX_Size() int { + return m.Size() +} +func (m *MsgUpdateParamsResponse) XXX_DiscardUnknown() { + xxx_messageInfo_MsgUpdateParamsResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgUpdateParamsResponse proto.InternalMessageInfo + +func init() { + proto.RegisterType((*MsgUpdateParams)(nil), "poktroll.migration.MsgUpdateParams") + proto.RegisterType((*MsgUpdateParamsResponse)(nil), "poktroll.migration.MsgUpdateParamsResponse") +} + +func init() { proto.RegisterFile("poktroll/migration/tx.proto", fileDescriptor_21658240592266b6) } + +var fileDescriptor_21658240592266b6 = []byte{ + // 352 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x2e, 0xc8, 0xcf, 0x2e, + 0x29, 0xca, 0xcf, 0xc9, 0xd1, 0xcf, 0xcd, 0x4c, 0x2f, 0x4a, 0x2c, 0xc9, 0xcc, 0xcf, 0xd3, 0x2f, + 0xa9, 0xd0, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x12, 0x82, 0x49, 0xea, 0xc1, 0x25, 0xa5, 0x04, + 0x13, 0x73, 0x33, 0xf3, 0xf2, 0xf5, 0xc1, 0x24, 0x44, 0x99, 0x94, 0x78, 0x72, 0x7e, 0x71, 0x6e, + 0x7e, 0xb1, 0x7e, 0x6e, 0x71, 0xba, 0x7e, 0x99, 0x21, 0x88, 0x82, 0x4a, 0x48, 0x42, 0x24, 0xe2, + 0xc1, 0x3c, 0x7d, 0x08, 0x07, 0x2a, 0x25, 0x92, 0x9e, 0x9f, 0x9e, 0x0f, 0x11, 0x07, 0xb1, 0xa0, + 0xa2, 0xf2, 0x58, 0x5c, 0x53, 0x90, 0x58, 0x94, 0x98, 0x0b, 0xd5, 0xa6, 0x74, 0x90, 0x91, 0x8b, + 0xdf, 0xb7, 0x38, 0x3d, 0xb4, 0x20, 0x25, 0xb1, 0x24, 0x35, 0x00, 0x2c, 0x23, 0x64, 0xc6, 0xc5, + 0x99, 0x58, 0x5a, 0x92, 0x91, 0x5f, 0x94, 0x59, 0x52, 0x29, 0xc1, 0xa8, 0xc0, 0xa8, 0xc1, 0xe9, + 0x24, 0x71, 0x69, 0x8b, 0xae, 0x08, 0xd4, 0x3e, 0xc7, 0x94, 0x94, 0xa2, 0xd4, 0xe2, 0xe2, 0xe0, + 0x92, 0xa2, 0xcc, 0xbc, 0xf4, 0x20, 0x84, 0x52, 0x21, 0x5b, 0x2e, 0x36, 0x88, 0xd9, 0x12, 0x4c, + 0x0a, 0x8c, 0x1a, 0xdc, 0x46, 0x52, 0x7a, 0x98, 0xde, 0xd5, 0x83, 0xd8, 0xe1, 0xc4, 0x79, 0xe2, + 0x9e, 0x3c, 0xc3, 0x8a, 0xe7, 0x1b, 0xb4, 0x18, 0x83, 0xa0, 0x9a, 0xac, 0xcc, 0x9b, 0x9e, 0x6f, + 0xd0, 0x42, 0x18, 0xd7, 0xf5, 0x7c, 0x83, 0x96, 0x0a, 0xdc, 0xf9, 0x15, 0x48, 0x1e, 0x40, 0x73, + 0xaf, 0x92, 0x24, 0x97, 0x38, 0x9a, 0x50, 0x50, 0x6a, 0x71, 0x41, 0x7e, 0x5e, 0x71, 0xaa, 0x51, + 0x1e, 0x17, 0xb3, 0x6f, 0x71, 0xba, 0x50, 0x02, 0x17, 0x0f, 0x8a, 0x0f, 0x95, 0xb1, 0xb9, 0x0c, + 0xcd, 0x0c, 0x29, 0x6d, 0x22, 0x14, 0xc1, 0x2c, 0x92, 0x62, 0x6d, 0x00, 0xf9, 0xc5, 0x29, 0xe0, + 0xc4, 0x23, 0x39, 0xc6, 0x0b, 0x8f, 0xe4, 0x18, 0x6f, 0x3c, 0x92, 0x63, 0x7c, 0xf0, 0x48, 0x8e, + 0x71, 0xc2, 0x63, 0x39, 0x86, 0x0b, 0x8f, 0xe5, 0x18, 0x6e, 0x3c, 0x96, 0x63, 0x88, 0x32, 0x4a, + 0xcf, 0x2c, 0xc9, 0x28, 0x4d, 0xd2, 0x4b, 0xce, 0xcf, 0xd5, 0x07, 0x99, 0xad, 0x9b, 0x97, 0x5a, + 0x52, 0x9e, 0x5f, 0x94, 0xad, 0x8f, 0xd5, 0x9b, 0x25, 0x95, 0x05, 0xa9, 0xc5, 0x49, 0x6c, 0xe0, + 0x78, 0x32, 0x06, 0x04, 0x00, 0x00, 0xff, 0xff, 0x58, 0x1b, 0x5f, 0x75, 0x58, 0x02, 0x00, 0x00, +} + +// Reference imports to suppress errors if they are not otherwise used. +var _ context.Context +var _ grpc.ClientConn + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +const _ = grpc.SupportPackageIsVersion4 + +// MsgClient is the client API for Msg service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. +type MsgClient interface { + // UpdateParams defines a (governance) operation for updating the module + // parameters. The authority defaults to the x/gov module account. + UpdateParams(ctx context.Context, in *MsgUpdateParams, opts ...grpc.CallOption) (*MsgUpdateParamsResponse, error) +} + +type msgClient struct { + cc grpc1.ClientConn +} + +func NewMsgClient(cc grpc1.ClientConn) MsgClient { + return &msgClient{cc} +} + +func (c *msgClient) UpdateParams(ctx context.Context, in *MsgUpdateParams, opts ...grpc.CallOption) (*MsgUpdateParamsResponse, error) { + out := new(MsgUpdateParamsResponse) + err := c.cc.Invoke(ctx, "/poktroll.migration.Msg/UpdateParams", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// MsgServer is the server API for Msg service. +type MsgServer interface { + // UpdateParams defines a (governance) operation for updating the module + // parameters. The authority defaults to the x/gov module account. + UpdateParams(context.Context, *MsgUpdateParams) (*MsgUpdateParamsResponse, error) +} + +// UnimplementedMsgServer can be embedded to have forward compatible implementations. +type UnimplementedMsgServer struct { +} + +func (*UnimplementedMsgServer) UpdateParams(ctx context.Context, req *MsgUpdateParams) (*MsgUpdateParamsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method UpdateParams not implemented") +} + +func RegisterMsgServer(s grpc1.Server, srv MsgServer) { + s.RegisterService(&_Msg_serviceDesc, srv) +} + +func _Msg_UpdateParams_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgUpdateParams) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).UpdateParams(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/poktroll.migration.Msg/UpdateParams", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).UpdateParams(ctx, req.(*MsgUpdateParams)) + } + return interceptor(ctx, in, info, handler) +} + +var _Msg_serviceDesc = grpc.ServiceDesc{ + ServiceName: "poktroll.migration.Msg", + HandlerType: (*MsgServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "UpdateParams", + Handler: _Msg_UpdateParams_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "poktroll/migration/tx.proto", +} + +func (m *MsgUpdateParams) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgUpdateParams) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgUpdateParams) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + { + size, err := m.Params.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + if len(m.Authority) > 0 { + i -= len(m.Authority) + copy(dAtA[i:], m.Authority) + i = encodeVarintTx(dAtA, i, uint64(len(m.Authority))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *MsgUpdateParamsResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgUpdateParamsResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgUpdateParamsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func encodeVarintTx(dAtA []byte, offset int, v uint64) int { + offset -= sovTx(v) + base := offset + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return base +} +func (m *MsgUpdateParams) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Authority) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = m.Params.Size() + n += 1 + l + sovTx(uint64(l)) + return n +} + +func (m *MsgUpdateParamsResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func sovTx(x uint64) (n int) { + return (math_bits.Len64(x|1) + 6) / 7 +} +func sozTx(x uint64) (n int) { + return sovTx(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (m *MsgUpdateParams) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgUpdateParams: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgUpdateParams: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Authority", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Authority = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Params", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Params.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MsgUpdateParamsResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgUpdateParamsResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgUpdateParamsResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipTx(dAtA []byte) (n int, err error) { + l := len(dAtA) + iNdEx := 0 + depth := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowTx + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowTx + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if dAtA[iNdEx-1] < 0x80 { + break + } + } + case 1: + iNdEx += 8 + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowTx + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if length < 0 { + return 0, ErrInvalidLengthTx + } + iNdEx += length + case 3: + depth++ + case 4: + if depth == 0 { + return 0, ErrUnexpectedEndOfGroupTx + } + depth-- + case 5: + iNdEx += 4 + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + if iNdEx < 0 { + return 0, ErrInvalidLengthTx + } + if depth == 0 { + return iNdEx, nil + } + } + return 0, io.ErrUnexpectedEOF +} + +var ( + ErrInvalidLengthTx = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowTx = fmt.Errorf("proto: integer overflow") + ErrUnexpectedEndOfGroupTx = fmt.Errorf("proto: unexpected end of group") +) diff --git a/x/migration/types/types.go b/x/migration/types/types.go new file mode 100644 index 000000000..ab1254f4c --- /dev/null +++ b/x/migration/types/types.go @@ -0,0 +1 @@ +package types diff --git a/x/proof/keeper/keeper.go b/x/proof/keeper/keeper.go index 5c67ca8d4..cd1b8ae7a 100644 --- a/x/proof/keeper/keeper.go +++ b/x/proof/keeper/keeper.go @@ -65,19 +65,19 @@ func NewKeeper( sharedQuerier := types.NewSharedKeeperQueryClient(sharedKeeper, sessionKeeper) // RingKeeperClient holds the logic of verifying RelayRequests ring signatures - // for both on-chain and off-chain actors. + // for both onchain and offchain actors. // // ApplicationQueriers & AccountQuerier are compatible with the environment // they're used in and may or may not make an actual network request. // - // When used in an on-chain context, the ProofKeeper supplies AppKeeperQueryClient + // When used in an onchain context, the ProofKeeper supplies AppKeeperQueryClient // and AccountKeeperQueryClient that are thin wrappers around the Application and // Account keepers respectively to satisfy the RingClient needs. // // TODO_MAINNET(@red-0ne): Make ring signature verification a stateless // function and get rid of the RingClient and its dependencies by moving // application ring retrieval to the application keeper, and making it - // retrievable using the application query client for off-chain actors. Signature + // retrievable using the application query client for offchain actors. Signature // verification code will still be shared across off/on chain environments. ringKeeperClientDeps := depinject.Supply(polylogger, applicationQuerier, accountQuerier, sharedQuerier) ringKeeperClient, err := rings.NewRingClient(ringKeeperClientDeps) diff --git a/x/proof/keeper/msg_server_create_claim.go b/x/proof/keeper/msg_server_create_claim.go index f9e06055c..679897f34 100644 --- a/x/proof/keeper/msg_server_create_claim.go +++ b/x/proof/keeper/msg_server_create_claim.go @@ -37,7 +37,7 @@ func (k msgServer) CreateClaim( } logger.Info("validated the createClaim message") - // Compare msg session header w/ on-chain session header. + // Compare msg session header w/ onchain session header. session, err := k.queryAndValidateSessionHeader(ctx, msg.GetSessionHeader(), msg.GetSupplierOperatorAddress()) if err != nil { return nil, status.Error(codes.InvalidArgument, err.Error()) @@ -62,7 +62,7 @@ func (k msgServer) CreateClaim( ) // Validate claim message commit height is within the respective session's - // claim creation window using the on-chain session header. + // claim creation window using the onchain session header. if err = k.validateClaimWindow(ctx, claim.SessionHeader, claim.SupplierOperatorAddress); err != nil { return nil, status.Error(codes.FailedPrecondition, err.Error()) } diff --git a/x/proof/keeper/msg_server_create_claim_test.go b/x/proof/keeper/msg_server_create_claim_test.go index f97982cfd..14fab452b 100644 --- a/x/proof/keeper/msg_server_create_claim_test.go +++ b/x/proof/keeper/msg_server_create_claim_test.go @@ -86,7 +86,7 @@ func TestMsgServer_CreateClaim_Success(t *testing.T) { for _, test := range tests { t.Run(test.desc, func(t *testing.T) { - // Set block height to 1 so there is a valid session on-chain. + // Set block height to 1 so there is a valid session onchain. blockHeight := int64(1) blockHeightOpt := keepertest.WithBlockHeight(blockHeight) @@ -201,7 +201,7 @@ func TestMsgServer_CreateClaim_Success(t *testing.T) { func TestMsgServer_CreateClaim_Error_OutsideOfWindow(t *testing.T) { var claimWindowOpenBlockHash []byte - // Set block height to 1 so there is a valid session on-chain. + // Set block height to 1 so there is a valid session onchain. blockHeightOpt := keepertest.WithBlockHeight(1) keepers, ctx := keepertest.NewProofModuleKeepers(t, blockHeightOpt) sdkCtx := cosmostypes.UnwrapSDKContext(ctx) @@ -326,7 +326,7 @@ func TestMsgServer_CreateClaim_Error_OutsideOfWindow(t *testing.T) { } func TestMsgServer_CreateClaim_Error(t *testing.T) { - // Set block height to 1 so there is a valid session on-chain. + // Set block height to 1 so there is a valid session onchain. blockHeightOpt := keepertest.WithBlockHeight(1) keepers, ctx := keepertest.NewProofModuleKeepers(t, blockHeightOpt) srv := keeper.NewMsgServerImpl(*keepers.Keeper) @@ -412,7 +412,7 @@ func TestMsgServer_CreateClaim_Error(t *testing.T) { expectedErr error }{ { - desc: "on-chain session ID must match claim msg session ID", + desc: "onchain session ID must match claim msg session ID", claimMsgFn: func(t *testing.T) *types.MsgCreateClaim { return newTestClaimMsg(t, sessionStartHeight, @@ -427,7 +427,7 @@ func TestMsgServer_CreateClaim_Error(t *testing.T) { expectedErr: status.Error( codes.InvalidArgument, types.ErrProofInvalidSessionId.Wrapf( - "session ID does not match on-chain session ID; expected %q, got %q", + "session ID does not match onchain session ID; expected %q, got %q", sessionRes.GetSession().GetSessionId(), "invalid_session_id", ).Error(), @@ -456,12 +456,12 @@ func TestMsgServer_CreateClaim_Error(t *testing.T) { ), }, { - desc: "claim msg supplier operator address must exist on-chain", + desc: "claim msg supplier operator address must exist onchain", claimMsgFn: func(t *testing.T) *types.MsgCreateClaim { return newTestClaimMsg(t, sessionStartHeight, sessionRes.GetSession().GetSessionId(), - // Use a supplier operat address that's nonexistent on-chain. + // Use a supplier operat address that's nonexistent onchain. randSupplierOperatorAddr, appAddr, service, @@ -500,13 +500,13 @@ func TestMsgServer_CreateClaim_Error(t *testing.T) { ), }, { - desc: "claim msg application address must exist on-chain", + desc: "claim msg application address must exist onchain", claimMsgFn: func(t *testing.T) *types.MsgCreateClaim { return newTestClaimMsg(t, sessionStartHeight, sessionRes.GetSession().GetSessionId(), supplierOperatorAddr, - // Use an application address that's nonexistent on-chain. + // Use an application address that's nonexistent onchain. randAppAddr, service, defaultMerkleRoot, @@ -539,7 +539,7 @@ func TestMsgServer_CreateClaim_Error(t *testing.T) { } func TestMsgServer_CreateClaim_Error_ComputeUnitsMismatch(t *testing.T) { - // Set block height to 1 so there is a valid session on-chain. + // Set block height to 1 so there is a valid session onchain. blockHeightOpt := keepertest.WithBlockHeight(1) keepers, ctx := keepertest.NewProofModuleKeepers(t, blockHeightOpt) sdkCtx := cosmostypes.UnwrapSDKContext(ctx) @@ -555,7 +555,7 @@ func TestMsgServer_CreateClaim_Error_ComputeUnitsMismatch(t *testing.T) { ComputeUnitsPerRelay: nonDefaultComputeUnitsPerRelay, OwnerAddress: sample.AccAddress(), } - // Add the service that is expected to be on-chain. + // Add the service that is expected to be onchain. keepers.SetService(ctx, *service) // Add a supplier that is expected to be in the session. diff --git a/x/proof/keeper/msg_server_submit_proof.go b/x/proof/keeper/msg_server_submit_proof.go index 3e2870289..30030a818 100644 --- a/x/proof/keeper/msg_server_submit_proof.go +++ b/x/proof/keeper/msg_server_submit_proof.go @@ -19,84 +19,87 @@ import ( sharedtypes "github.com/pokt-network/poktroll/x/shared/types" ) -// SubmitProof is the server handler to submit and store a proof on-chain. -// A proof that's stored on-chain is what leads to rewards (i.e. inflation) -// downstream, making this a critical part of the protocol. +// SubmitProof is the server message handler that stores a valid +// proof onchain, enabling downstream reward distribution. // -// Note that the validation of the proof is done in `EnsureValidProof`. However, -// preliminary checks are done in the handler to prevent sybil or DoS attacks on -// full nodes because storing and validating proofs is expensive. +// IMPORTANT: Full proof validation occurs in EnsureValidProofSignaturesAndClosestPath. +// This handler performs preliminary validation to prevent sybil/DoS attacks. // -// We are playing a balance of security and efficiency here, where enough validation -// is done on proof submission, and exhaustive validation is done during session -// settlement. +// There is a security & performance balance and tradeoff between the handler and end blocker: +// - Basic validation on submission (here) +// - Exhaustive validation in endblocker (EnsureValidProofSignaturesAndClosestPath) // -// The entity sending the SubmitProof messages does not necessarily need -// to correspond to the supplier signing the proof. For example, a single entity -// could (theoretically) batch multiple proofs (signed by the corresponding supplier) -// into one transaction to save on transaction fees. +// Note: Proof submitter may differ from supplier signer, allowing batched submissions +// to optimize transaction fees. func (k msgServer) SubmitProof( ctx context.Context, msg *types.MsgSubmitProof, ) (_ *types.MsgSubmitProofResponse, err error) { + sdkCtx := cosmostypes.UnwrapSDKContext(ctx) + // Declare claim to reference in telemetry. var ( - claim = new(types.Claim) + claim *types.Claim isExistingProof bool numRelays uint64 numClaimComputeUnits uint64 + sessionHeader *sessiontypes.SessionHeader ) logger := k.Logger().With("method", "SubmitProof") - sdkCtx := cosmostypes.UnwrapSDKContext(ctx) logger.Info("About to start submitting proof") // Basic validation of the SubmitProof message. if err = msg.ValidateBasic(); err != nil { + logger.Error("failed to validate the submitProof message") return nil, status.Error(codes.InvalidArgument, err.Error()) } - logger.Info("validated the submitProof message") - // Compare msg session header w/ on-chain session header. - session, err := k.queryAndValidateSessionHeader(ctx, msg.GetSessionHeader(), msg.GetSupplierOperatorAddress()) - if err != nil { - return nil, status.Error(codes.InvalidArgument, err.Error()) - } + sessionHeader = msg.GetSessionHeader() + supplierOperatorAddress := msg.GetSupplierOperatorAddress() - // Defer telemetry calls so that they reference the final values the relevant variables. - defer k.finalizeSubmitProofTelemetry(session, msg, isExistingProof, numRelays, numClaimComputeUnits, err) + logger = logger.With( + "session_id", sessionHeader.GetSessionId(), + "application_address", sessionHeader.GetApplicationAddress(), + "service_id", sessionHeader.GetServiceId(), + "session_end_height", sessionHeader.GetSessionEndBlockHeight(), + "supplier_operator_address", supplierOperatorAddress, + ) + logger.Info("validated the submitProof message") - if err = k.deductProofSubmissionFee(ctx, msg.GetSupplierOperatorAddress()); err != nil { - logger.Error(fmt.Sprintf("failed to deduct proof submission fee: %v", err)) + // Defer telemetry calls so that they reference the final values the relevant variables. + defer k.finalizeSubmitProofTelemetry(sessionHeader, msg, isExistingProof, numRelays, numClaimComputeUnits, err) + + // Construct the proof from the message. + proof := newProofFromMsg(msg) + + // EnsureWellFormedProof ensures proper proof formation by verifying: + // - Proof structure + // - Associated claim + // - Relay session headers + // - Submission timing within required window + if err = k.EnsureWellFormedProof(ctx, proof); err != nil { + logger.Error(fmt.Sprintf("failed to ensure well-formed proof: %v", err)) return nil, status.Error(codes.FailedPrecondition, err.Error()) } - - // Construct the proof - proof := types.Proof{ - SupplierOperatorAddress: msg.GetSupplierOperatorAddress(), - SessionHeader: session.GetHeader(), - ClosestMerkleProof: msg.GetProof(), + logger.Info("ensured the proof is well-formed") + + // Retrieve the claim associated with the proof. + // The claim should ALWAYS exist since the proof validation in EnsureWellFormedProof + // retrieves and validates the associated claim. + foundClaim, claimFound := k.GetClaim(ctx, sessionHeader.GetSessionId(), supplierOperatorAddress) + if !claimFound { + logger.Error("failed to find the claim associated with the proof") + return nil, status.Error(codes.FailedPrecondition, types.ErrProofClaimNotFound.Error()) } - // Helpers for logging the same metadata throughout this function calls - logger = logger.With( - "session_id", proof.SessionHeader.SessionId, - "session_end_height", proof.SessionHeader.SessionEndBlockHeight, - "supplier_operator_address", proof.SupplierOperatorAddress) + claim = &foundClaim - // Validate proof message commit height is within the respective session's - // proof submission window using the on-chain session header. - if err = k.validateProofWindow(ctx, proof.SessionHeader, proof.SupplierOperatorAddress); err != nil { + if err = k.deductProofSubmissionFee(ctx, supplierOperatorAddress); err != nil { + logger.Error(fmt.Sprintf("failed to deduct proof submission fee: %v", err)) return nil, status.Error(codes.FailedPrecondition, err.Error()) } - // Retrieve the corresponding claim for the proof submitted so it can be - // used in the proof validation below. - claim, err = k.queryAndValidateClaimForProof(ctx, proof.SessionHeader, proof.SupplierOperatorAddress) - if err != nil { - return nil, status.Error(codes.Internal, types.ErrProofClaimNotFound.Wrap(err.Error()).Error()) - } - // Check if a proof is required for the claim. proofRequirement, err := k.ProofRequirementForClaim(ctx, claim) if err != nil { @@ -120,7 +123,7 @@ func (k msgServer) SubmitProof( } // Get the service ID relayMiningDifficulty to calculate the claimed uPOKT. - serviceId := session.GetHeader().GetServiceId() + serviceId := sessionHeader.GetServiceId() sharedParams := k.sharedKeeper.GetParams(ctx) relayMiningDifficulty, _ := k.serviceKeeper.GetRelayMiningDifficulty(ctx, serviceId) @@ -131,7 +134,7 @@ func (k msgServer) SubmitProof( _, isExistingProof = k.GetProof(ctx, proof.SessionHeader.SessionId, proof.SupplierOperatorAddress) // Upsert the proof - k.UpsertProof(ctx, proof) + k.UpsertProof(ctx, *proof) logger.Info("successfully upserted the proof") // Emit the appropriate event based on whether the claim was created or updated. @@ -141,7 +144,7 @@ func (k msgServer) SubmitProof( proofUpsertEvent = proto.Message( &types.EventProofUpdated{ Claim: claim, - Proof: &proof, + Proof: proof, NumRelays: numRelays, NumClaimedComputeUnits: numClaimComputeUnits, NumEstimatedComputeUnits: numEstimatedComputUnits, @@ -152,7 +155,7 @@ func (k msgServer) SubmitProof( proofUpsertEvent = proto.Message( &types.EventProofSubmitted{ Claim: claim, - Proof: &proof, + Proof: proof, NumRelays: numRelays, NumClaimedComputeUnits: numClaimComputeUnits, NumEstimatedComputeUnits: numEstimatedComputUnits, @@ -160,6 +163,7 @@ func (k msgServer) SubmitProof( }, ) } + if err = sdkCtx.EventManager().EmitTypedEvent(proofUpsertEvent); err != nil { return nil, status.Error( codes.Internal, @@ -172,7 +176,7 @@ func (k msgServer) SubmitProof( } return &types.MsgSubmitProofResponse{ - Proof: &proof, + Proof: proof, }, nil } @@ -322,10 +326,17 @@ func (k Keeper) getProofRequirementSeedBlockHash( // finalizeSubmitProofTelemetry finalizes telemetry updates for SubmitProof, incrementing counters as needed. // Meant to run deferred. -func (k msgServer) finalizeSubmitProofTelemetry(session *sessiontypes.Session, msg *types.MsgSubmitProof, isExistingProof bool, numRelays, numClaimComputeUnits uint64, err error) { +func (k msgServer) finalizeSubmitProofTelemetry( + sessionHeader *sessiontypes.SessionHeader, + msg *types.MsgSubmitProof, + isExistingProof bool, + numRelays, + numClaimComputeUnits uint64, + err error, +) { if !isExistingProof { - serviceId := session.Header.ServiceId - applicationAddress := session.Header.ApplicationAddress + serviceId := sessionHeader.ServiceId + applicationAddress := sessionHeader.ApplicationAddress supplierOperatorAddress := msg.GetSupplierOperatorAddress() claimProofStage := types.ClaimProofStage_PROVEN.String() @@ -337,7 +348,11 @@ func (k msgServer) finalizeSubmitProofTelemetry(session *sessiontypes.Session, m // finalizeProofRequirementTelemetry finalizes telemetry updates for proof requirements. // Meant to run deferred. -func (k Keeper) finalizeProofRequirementTelemetry(requirementReason types.ProofRequirementReason, claim *types.Claim, err error) { +func (k Keeper) finalizeProofRequirementTelemetry( + requirementReason types.ProofRequirementReason, + claim *types.Claim, + err error, +) { telemetry.ProofRequirementCounter( requirementReason.String(), claim.SessionHeader.ServiceId, @@ -346,3 +361,12 @@ func (k Keeper) finalizeProofRequirementTelemetry(requirementReason types.ProofR err, ) } + +// newProofFromMsg creates a new proof from a MsgSubmitProof message. +func newProofFromMsg(msg *types.MsgSubmitProof) *types.Proof { + return &types.Proof{ + SupplierOperatorAddress: msg.GetSupplierOperatorAddress(), + SessionHeader: msg.GetSessionHeader(), + ClosestMerkleProof: msg.GetProof(), + } +} diff --git a/x/proof/keeper/msg_server_submit_proof_test.go b/x/proof/keeper/msg_server_submit_proof_test.go index 35185f798..dbea95aa7 100644 --- a/x/proof/keeper/msg_server_submit_proof_test.go +++ b/x/proof/keeper/msg_server_submit_proof_test.go @@ -86,9 +86,9 @@ func TestMsgServer_SubmitProof_Success(t *testing.T) { for _, test := range tests { t.Run(test.desc, func(t *testing.T) { opts := []keepertest.ProofKeepersOpt{ - // Set block hash so we can have a deterministic expected on-chain proof requested by the protocol. + // Set block hash so we can have a deterministic expected onchain proof requested by the protocol. keepertest.WithBlockHash(blockHeaderHash), - // Set block height to 1 so there is a valid session on-chain. + // Set block height to 1 so there is a valid session onchain. keepertest.WithBlockHeight(1), } keepers, ctx := keepertest.NewProofModuleKeepers(t, opts...) @@ -264,9 +264,9 @@ func TestMsgServer_SubmitProof_Error_OutsideOfWindow(t *testing.T) { var claimWindowOpenHeightBlockHash, proofWindowOpenHeightBlockHash []byte opts := []keepertest.ProofKeepersOpt{ - // Set block hash so we can have a deterministic expected on-chain proof requested by the protocol. + // Set block hash so we can have a deterministic expected onchain proof requested by the protocol. keepertest.WithBlockHash(blockHeaderHash), - // Set block height to 1 so there is a valid session on-chain. + // Set block height to 1 so there is a valid session onchain. keepertest.WithBlockHeight(1), } keepers, ctx := keepertest.NewProofModuleKeepers(t, opts...) @@ -438,10 +438,10 @@ func TestMsgServer_SubmitProof_Error_OutsideOfWindow(t *testing.T) { func TestMsgServer_SubmitProof_Error(t *testing.T) { opts := []keepertest.ProofKeepersOpt{ - // Set block hash such that on-chain closest merkle proof validation + // Set block hash such that onchain closest merkle proof validation // uses the expected path. keepertest.WithBlockHash(blockHeaderHash), - // Set block height to 1 so there is a valid session on-chain. + // Set block height to 1 so there is a valid session onchain. keepertest.WithBlockHeight(1), } keepers, ctx := keepertest.NewProofModuleKeepers(t, opts...) @@ -618,7 +618,7 @@ func TestMsgServer_SubmitProof_Error(t *testing.T) { }, }, { - desc: "proof session ID must match on-chain session ID", + desc: "proof session ID must match onchain session ID", newProofMsg: func(t *testing.T) *prooftypes.MsgSubmitProof { // Construct new proof message using the wrong session ID. return newTestProofMsg(t, @@ -630,9 +630,9 @@ func TestMsgServer_SubmitProof_Error(t *testing.T) { }, msgSubmitProofToExpectedErrorFn: func(msgSubmitProof *prooftypes.MsgSubmitProof) error { return status.Error( - codes.InvalidArgument, + codes.FailedPrecondition, prooftypes.ErrProofInvalidSessionId.Wrapf( - "session ID does not match on-chain session ID; expected %q, got %q", + "session ID does not match onchain session ID; expected %q, got %q", validSessionHeader.GetSessionId(), msgSubmitProof.GetSessionHeader().GetSessionId(), ).Error(), @@ -640,7 +640,7 @@ func TestMsgServer_SubmitProof_Error(t *testing.T) { }, }, { - desc: "proof supplier must be in on-chain session", + desc: "proof supplier must be in onchain session", newProofMsg: func(t *testing.T) *prooftypes.MsgSubmitProof { // Construct a proof message with a supplier that does not belong in the session. return newTestProofMsg(t, @@ -652,7 +652,7 @@ func TestMsgServer_SubmitProof_Error(t *testing.T) { }, msgSubmitProofToExpectedErrorFn: func(msgSubmitProof *prooftypes.MsgSubmitProof) error { return status.Error( - codes.InvalidArgument, + codes.FailedPrecondition, prooftypes.ErrProofNotFound.Wrapf( "supplier operator address %q not found in session ID %q", wrongSupplierOperatorAddr, @@ -708,9 +708,9 @@ func TestMsgServer_SubmitProof_Error(t *testing.T) { func TestMsgServer_SubmitProof_FailSubmittingNonRequiredProof(t *testing.T) { opts := []keepertest.ProofKeepersOpt{ - // Set block hash so we can have a deterministic expected on-chain proof requested by the protocol. + // Set block hash so we can have a deterministic expected onchain proof requested by the protocol. keepertest.WithBlockHash(blockHeaderHash), - // Set block height to 1 so there is a valid session on-chain. + // Set block height to 1 so there is a valid session onchain. keepertest.WithBlockHeight(1), } keepers, ctx := keepertest.NewProofModuleKeepers(t, opts...) @@ -843,7 +843,7 @@ func TestMsgServer_SubmitProof_FailSubmittingNonRequiredProof(t *testing.T) { } // newTestProofMsg creates a new submit proof message that can be submitted -// to be validated and stored on-chain. +// to be validated and stored onchain. func newTestProofMsg( t *testing.T, supplierOperatorAddr string, @@ -869,7 +869,7 @@ func newTestProofMsg( } } -// createClaimAndStoreBlockHash creates a valid claim, submits it on-chain, +// createClaimAndStoreBlockHash creates a valid claim, submits it onchain, // and on success, stores the block hash for retrieval at future heights. // TODO_TECHDEBT(@bryanchriswhite): Consider if we could/should split // this into two functions. diff --git a/x/proof/keeper/proof.go b/x/proof/keeper/proof.go index 915803199..9a32ddd83 100644 --- a/x/proof/keeper/proof.go +++ b/x/proof/keeper/proof.go @@ -91,11 +91,16 @@ func (k Keeper) RemoveProof(ctx context.Context, sessionId, supplierOperatorAddr ) } -// GetAllProofs returns all proof -func (k Keeper) GetAllProofs(ctx context.Context) (proofs []types.Proof) { +// GetAllProofsIterator returns an iterator for all proofs in the store +func (k Keeper) GetAllProofsIterator(ctx context.Context) storetypes.Iterator { storeAdapter := runtime.KVStoreAdapter(k.storeService.OpenKVStore(ctx)) primaryStore := prefix.NewStore(storeAdapter, types.KeyPrefix(types.ProofPrimaryKeyPrefix)) - iterator := storetypes.KVStorePrefixIterator(primaryStore, []byte{}) + return storetypes.KVStorePrefixIterator(primaryStore, []byte{}) +} + +// GetAllProofs returns all proofs in the store +func (k Keeper) GetAllProofs(ctx context.Context) (proofs []types.Proof) { + iterator := k.GetAllProofsIterator(ctx) defer iterator.Close() diff --git a/x/proof/keeper/proof_validation.go b/x/proof/keeper/proof_validation.go index c9f683cf1..bf55d2e3c 100644 --- a/x/proof/keeper/proof_validation.go +++ b/x/proof/keeper/proof_validation.go @@ -4,8 +4,8 @@ package keeper TODO_MAINNET: Document these steps in the docs and link here. ## Actions (error if anything fails) - 1. Retrieve a fully hydrated `session` from on-chain store using `msg` metadata - 2. Retrieve a fully hydrated `claim` from on-chain store using `msg` metadata + 1. Retrieve a fully hydrated `session` from onchain store using `msg` metadata + 2. Retrieve a fully hydrated `claim` from onchain store using `msg` metadata 3. Retrieve `relay.Req` and `relay.Res` from deserializing `proof.ClosestValueHash` ## Basic Validations (metadata only) @@ -23,7 +23,7 @@ package keeper 2. verify(relay.Res.Signature, supplier.pubKey) ## Relay Mining validation - 1. verify(proof.path) is the expected path; pseudo-random variation using on-chain data + 1. verify(proof.path) is the expected path; pseudo-random variation using onchain data 2. verify(proof.ValueHash, expectedDifficulty); governance based 3. verify(claim.Root, proof.ClosestProof); verify the closest proof is correct */ @@ -31,6 +31,7 @@ package keeper import ( "bytes" "context" + "fmt" cosmostelemetry "github.com/cosmos/cosmos-sdk/telemetry" "github.com/pokt-network/smt" @@ -42,96 +43,98 @@ import ( sessiontypes "github.com/pokt-network/poktroll/x/session/types" ) -// EnsureValidProof validates the proof submitted by the supplier is correct with -// respect to an on-chain claim. +// EnsureWellFormedProof validates a supplier's proof for: +// 1. Valid session header +// 2. Submission height within window +// 3. Matching relay request/response headers +// 4. Relay Mining difficulty above reward threshold // -// This function should be called during session settlement (i.e. EndBlocker) -// rather than during proof submission (i.e. SubmitProof) because: -// 1. RPC requests should be quick, lightweight and only do basic validation -// 2. Validators are the ones responsible for the heavy processing & validation during state transitions -// 3. This creates an opportunity to slash suppliers who submit false proofs, whereas -// they can keep retrying if it takes place in the SubmitProof handler. +// EnsureWellFormedProof does not validate computationally expensive operations like: +// 1. Proof relay signatures +// 2. ClosestMerkleProof // -// Note that some of the validation here is redundant with the validation done in -// SubmitProof (in the handler). The reason for this is because were are trying -// to find a balance between preventing sybil or DoS attacks on full nodes -// during proof submission, but being completely exhaustive in all the checks done here. -func (k Keeper) EnsureValidProof( - ctx context.Context, - proof *types.Proof, -) error { - // Telemetry: measure execution time. - defer cosmostelemetry.MeasureSince(cosmostelemetry.Now(), telemetry.MetricNameKeys("proof", "validation")...) - - logger := k.Logger().With("method", "ValidateProof") +// Additional developer context as of #1031: +// - This function is expected to be called from the SubmitProof messages handler +// - Computationally expensive operations are left to the block's EndBlocker +// +// NOTE: Full validation requires passing both: +// 1. EnsureWellFormedProof (this function) +// 2. EnsureValidProofSignaturesAndClosestPath +func (k Keeper) EnsureWellFormedProof(ctx context.Context, proof *types.Proof) error { + logger := k.Logger().With("method", "EnsureWellFormedProof") - // Retrieve the supplier operator's public key. supplierOperatorAddr := proof.SupplierOperatorAddress - supplierOperatorPubKey, err := k.accountQuerier.GetPubKeyFromAddress(ctx, supplierOperatorAddr) - if err != nil { - return err - } // Validate the session header. var onChainSession *sessiontypes.Session - onChainSession, err = k.queryAndValidateSessionHeader(ctx, proof.SessionHeader, supplierOperatorAddr) + onChainSession, err := k.queryAndValidateSessionHeader(ctx, proof.SessionHeader, supplierOperatorAddr) if err != nil { return err } logger.Info("queried and validated the session header") - // Re-hydrate message session header with the on-chain session header. + // Re-hydrate message session header with the onchain session header. // This corrects for discrepancies between unvalidated fields in the session // header which can be derived from known values (e.g. session end height). sessionHeader := onChainSession.GetHeader() + logger = logger.With( + "session_id", sessionHeader.GetSessionId(), + "application_address", sessionHeader.GetApplicationAddress(), + "service_id", sessionHeader.GetServiceId(), + "session_end_height", sessionHeader.GetSessionEndBlockHeight(), + "supplier_operator_address", supplierOperatorAddr, + ) + // Validate proof message commit height is within the respective session's - // proof submission window using the on-chain session header. + // proof submission window using the onchain session header. if err = k.validateProofWindow(ctx, sessionHeader, supplierOperatorAddr); err != nil { + logger.Error(fmt.Sprintf("failed to validate proof window due to error: %v", err)) return err } if len(proof.ClosestMerkleProof) == 0 { - return types.ErrProofInvalidProof.Wrap("proof cannot be empty") + logger.Error("closest merkle proof cannot be empty") + return types.ErrProofInvalidProof.Wrap("closest merkle proof cannot be empty") } - // Unmarshal the closest merkle proof from the message. + // Unmarshal the sparse compact closest merkle proof from the message. sparseCompactMerkleClosestProof := &smt.SparseCompactMerkleClosestProof{} if err = sparseCompactMerkleClosestProof.Unmarshal(proof.ClosestMerkleProof); err != nil { - return types.ErrProofInvalidProof.Wrapf( - "failed to unmarshal closest merkle proof: %s", - err, - ) + logger.Error(fmt.Sprintf("failed to unmarshal sparse compact merkle closest proof due to error: %v", err)) + return types.ErrProofInvalidProof.Wrapf("failed to unmarshal sparse compact merkle closest proof: %s", err) } // SparseCompactMerkeClosestProof does not implement GetValueHash, so we need to decompact it. - sparseMerkleClosestProof, err := smt.DecompactClosestProof(sparseCompactMerkleClosestProof, &protocol.SmtSpec) + sparseMerkleClosestProof, err := smt.DecompactClosestProof(sparseCompactMerkleClosestProof, protocol.NewSMTSpec()) if err != nil { - return types.ErrProofInvalidProof.Wrapf( - "failed to decompact closest merkle proof: %s", - err, - ) + logger.Error(fmt.Sprintf("failed to decompact sparse merkle closest proof due to error: %v", err)) + return types.ErrProofInvalidProof.Wrapf("failed to decompact sparse erkle closest proof: %s", err) } // Get the relay request and response from the proof.GetClosestMerkleProof. - relayBz := sparseMerkleClosestProof.GetValueHash(&protocol.SmtSpec) + relayBz := sparseMerkleClosestProof.GetValueHash(protocol.NewSMTSpec()) relay := &servicetypes.Relay{} if err = k.cdc.Unmarshal(relayBz, relay); err != nil { - return types.ErrProofInvalidRelay.Wrapf( - "failed to unmarshal relay: %s", - err, - ) + logger.Error(fmt.Sprintf("failed to unmarshal relay due to error: %v", err)) + return types.ErrProofInvalidRelay.Wrapf("failed to unmarshal relay: %s", err) } // Basic validation of the relay request. relayReq := relay.GetReq() if err = relayReq.ValidateBasic(); err != nil { + logger.Error(fmt.Sprintf("failed to validate relay request due to error: %v", err)) return err } logger.Debug("successfully validated relay request") // Make sure that the supplier operator address in the proof matches the one in the relay request. if supplierOperatorAddr != relayReq.Meta.SupplierOperatorAddress { + logger.Error(fmt.Sprintf( + "supplier operator address mismatch; proof: %s, relay request: %s", + supplierOperatorAddr, + relayReq.Meta.SupplierOperatorAddress, + )) return types.ErrProofSupplierMismatch.Wrapf("supplier type mismatch") } logger.Debug("the proof supplier operator address matches the relay request supplier operator address") @@ -139,34 +142,25 @@ func (k Keeper) EnsureValidProof( // Basic validation of the relay response. relayRes := relay.GetRes() if err = relayRes.ValidateBasic(); err != nil { + logger.Error(fmt.Sprintf("failed to validate relay response due to error: %v", err)) return err } logger.Debug("successfully validated relay response") // Verify that the relay request session header matches the proof session header. if err = compareSessionHeaders(sessionHeader, relayReq.Meta.GetSessionHeader()); err != nil { + logger.Error(fmt.Sprintf("relay request and proof session header mismatch: %v", err)) return err } logger.Debug("successfully compared relay request session header") // Verify that the relay response session header matches the proof session header. if err = compareSessionHeaders(sessionHeader, relayRes.Meta.GetSessionHeader()); err != nil { + logger.Error(fmt.Sprintf("relay response and proof session header mismatch: %v", err)) return err } logger.Debug("successfully compared relay response session header") - // Verify the relay request's signature. - if err = k.ringClient.VerifyRelayRequestSignature(ctx, relayReq); err != nil { - return err - } - logger.Debug("successfully verified relay request signature") - - // Verify the relay response's signature. - if err = relayRes.VerifySupplierOperatorSignature(supplierOperatorPubKey); err != nil { - return err - } - logger.Debug("successfully verified relay response signature") - // Get the service's relay mining difficulty. serviceRelayDifficulty, _ := k.serviceKeeper.GetRelayMiningDifficulty(ctx, sessionHeader.GetServiceId()) @@ -175,36 +169,115 @@ func (k Keeper) EnsureValidProof( relayBz, serviceRelayDifficulty.GetTargetHash(), ); err != nil { + logger.Error(fmt.Sprintf("failed to validate relay difficulty due to error: %v", err)) return types.ErrProofInvalidRelayDifficulty.Wrapf("failed to validate relay difficulty for service %s due to: %v", sessionHeader.ServiceId, err) } logger.Debug("successfully validated relay mining difficulty") + // Retrieve the corresponding claim for the proof submitted + if err := k.validateSessionClaim(ctx, sessionHeader, supplierOperatorAddr); err != nil { + return err + } + logger.Debug("successfully retrieved and validated claim") + + return nil +} + +// EnsureValidProofSignaturesAndClosestPath validates: +// 1. Proof signatures from the supplier +// 2. Valid relay request/response signatures from the application/supplier respectively +// 3. Closest path validation against onchain claim +// +// Execution requirements: +// 1. Must run in the EndBlocker of the proof submission height +// 2. Cannot run during SubmitProof due to computational cost +// +// NOTE: Full validation requires passing both: +// 1. EnsureWellFormedProof +// 2. EnsureValidProofSignaturesAndClosestPath (this function) +func (k Keeper) EnsureValidProofSignaturesAndClosestPath( + ctx context.Context, + claim *types.Claim, + proof *types.Proof, +) error { + // Telemetry: measure execution time. + defer cosmostelemetry.MeasureSince(cosmostelemetry.Now(), telemetry.MetricNameKeys("proof", "validation")...) + + sessionHeader := proof.GetSessionHeader() + supplierOperatorAddr := proof.SupplierOperatorAddress + + logger := k.Logger().With( + "method", "EnsureValidProofSignaturesAndClosestPath", + "session_id", sessionHeader.GetSessionId(), + "application_address", sessionHeader.GetApplicationAddress(), + "service_id", sessionHeader.GetServiceId(), + "session_end_height", sessionHeader.GetSessionEndBlockHeight(), + "supplier_operator_address", supplierOperatorAddr, + ) + + // Retrieve the supplier operator's public key. + supplierOperatorPubKey, err := k.accountQuerier.GetPubKeyFromAddress(ctx, supplierOperatorAddr) + if err != nil { + logger.Error(fmt.Sprintf("failed to retrieve supplier operator public key due to error: %v", err)) + return err + } + + // Unmarshal the sparse compact merkle closest proof from the message. + sparseCompactMerkleClosestProof := &smt.SparseCompactMerkleClosestProof{} + if err = sparseCompactMerkleClosestProof.Unmarshal(proof.ClosestMerkleProof); err != nil { + logger.Error(fmt.Sprintf("failed to unmarshal sparse compact merkle closest proof due to error: %v", err)) + return types.ErrProofInvalidProof.Wrapf("failed to unmarshal sparse compact merkle closest proof: %s", err) + } + + // SparseCompactMerkeClosestProof was intentionally compacted to reduce its onchain state size + // so it must be decompacted rather than just retrieving the value via GetValueHash (not implemented). + sparseMerkleClosestProof, err := smt.DecompactClosestProof(sparseCompactMerkleClosestProof, protocol.NewSMTSpec()) + if err != nil { + logger.Error(fmt.Sprintf("failed to decompact sparse merkle closest proof due to error: %v", err)) + return types.ErrProofInvalidProof.Wrapf("failed to decompact sparse merkle closest proof: %s", err) + } + + // Get the relay request and response from the proof.GetClosestMerkleProof. + relayBz := sparseMerkleClosestProof.GetValueHash(protocol.NewSMTSpec()) + relay := &servicetypes.Relay{} + if err = k.cdc.Unmarshal(relayBz, relay); err != nil { + logger.Error(fmt.Sprintf("failed to unmarshal relay due to error: %v", err)) + return types.ErrProofInvalidRelay.Wrapf("failed to unmarshal relay: %s", err) + } + + // Verify the relay request's signature. + if err = k.ringClient.VerifyRelayRequestSignature(ctx, relay.GetReq()); err != nil { + logger.Error(fmt.Sprintf("failed to verify relay request signature due to error: %v", err)) + return err + } + logger.Debug("successfully verified relay request signature") + + // Verify the relay response's signature. + if err = relay.GetRes().VerifySupplierOperatorSignature(supplierOperatorPubKey); err != nil { + logger.Error(fmt.Sprintf("failed to verify relay response signature due to error: %v", err)) + return err + } + logger.Debug("successfully verified relay response signature") + // Validate that path the proof is submitted for matches the expected one - // based on the pseudo-random on-chain data associated with the header. + // based on the pseudo-random onchain data associated with the header. if err = k.validateClosestPath( ctx, sparseMerkleClosestProof, sessionHeader, supplierOperatorAddr, ); err != nil { + logger.Error(fmt.Sprintf("failed to validate closest path due to error: %v", err)) return err } logger.Debug("successfully validated proof path") - // Retrieve the corresponding claim for the proof submitted so it can be - // used in the proof validation below. - claim, err := k.queryAndValidateClaimForProof(ctx, sessionHeader, supplierOperatorAddr) - if err != nil { - return err - } - - logger.Debug("successfully retrieved and validated claim") - - // Verify the proof's closest merkle proof. + // Verify the proof's sparse merkle closest proof. if err = verifyClosestProof(sparseMerkleClosestProof, claim.GetRootHash()); err != nil { + logger.Error(fmt.Sprintf("failed to verify sparse merkle closest proof due to error: %v", err)) return err } - logger.Debug("successfully verified closest merkle proof") + logger.Debug("successfully verified sparse merkle closest proof") return nil } @@ -249,7 +322,7 @@ func (k Keeper) validateClosestPath( expectedProofPath := protocol.GetPathForProof(proofPathSeedBlockHash, sessionHeader.GetSessionId()) if !bytes.Equal(proof.Path, expectedProofPath) { return types.ErrProofInvalidProof.Wrapf( - "the path of the proof provided (%x) does not match one expected by the on-chain protocol (%x)", + "the path of the proof provided (%x) does not match one expected by the onchain protocol (%x)", proof.Path, expectedProofPath, ) @@ -258,21 +331,19 @@ func (k Keeper) validateClosestPath( return nil } -// queryAndValidateClaimForProof ensures that a claim corresponding to the given -// proof's session exists & has a matching supplier operator address and session header, -// it then returns the corresponding claim if the validation is successful. -func (k Keeper) queryAndValidateClaimForProof( +// validateSessionClaim ensures that the given session header and supplierOperatorAddress +// have a corresponding claim. +func (k Keeper) validateSessionClaim( ctx context.Context, sessionHeader *sessiontypes.SessionHeader, supplierOperatorAddr string, -) (*types.Claim, error) { +) error { sessionId := sessionHeader.SessionId - // NB: no need to assert the testSessionId or supplier operator address as it is retrieved - // by respective values of the given proof. I.e., if the claim exists, then these - // values are guaranteed to match. + + // Retrieve the claim corresponding to the session ID and supplier operator address. foundClaim, found := k.GetClaim(ctx, sessionId, supplierOperatorAddr) if !found { - return nil, types.ErrProofClaimNotFound.Wrapf( + return types.ErrProofClaimNotFound.Wrapf( "no claim found for session ID %q and supplier %q", sessionId, supplierOperatorAddr, @@ -280,45 +351,44 @@ func (k Keeper) queryAndValidateClaimForProof( } claimSessionHeader := foundClaim.GetSessionHeader() - proofSessionHeader := sessionHeader // Ensure session start heights match. - if claimSessionHeader.GetSessionStartBlockHeight() != proofSessionHeader.GetSessionStartBlockHeight() { - return nil, types.ErrProofInvalidSessionStartHeight.Wrapf( + if claimSessionHeader.GetSessionStartBlockHeight() != sessionHeader.GetSessionStartBlockHeight() { + return types.ErrProofInvalidSessionStartHeight.Wrapf( "claim session start height %d does not match proof session start height %d", claimSessionHeader.GetSessionStartBlockHeight(), - proofSessionHeader.GetSessionStartBlockHeight(), + sessionHeader.GetSessionStartBlockHeight(), ) } // Ensure session end heights match. - if claimSessionHeader.GetSessionEndBlockHeight() != proofSessionHeader.GetSessionEndBlockHeight() { - return nil, types.ErrProofInvalidSessionEndHeight.Wrapf( + if claimSessionHeader.GetSessionEndBlockHeight() != sessionHeader.GetSessionEndBlockHeight() { + return types.ErrProofInvalidSessionEndHeight.Wrapf( "claim session end height %d does not match proof session end height %d", claimSessionHeader.GetSessionEndBlockHeight(), - proofSessionHeader.GetSessionEndBlockHeight(), + sessionHeader.GetSessionEndBlockHeight(), ) } // Ensure application addresses match. - if claimSessionHeader.GetApplicationAddress() != proofSessionHeader.GetApplicationAddress() { - return nil, types.ErrProofInvalidAddress.Wrapf( + if claimSessionHeader.GetApplicationAddress() != sessionHeader.GetApplicationAddress() { + return types.ErrProofInvalidAddress.Wrapf( "claim application address %q does not match proof application address %q", claimSessionHeader.GetApplicationAddress(), - proofSessionHeader.GetApplicationAddress(), + sessionHeader.GetApplicationAddress(), ) } // Ensure service IDs match. - if claimSessionHeader.GetServiceId() != proofSessionHeader.GetServiceId() { - return nil, types.ErrProofInvalidService.Wrapf( + if claimSessionHeader.GetServiceId() != sessionHeader.GetServiceId() { + return types.ErrProofInvalidService.Wrapf( "claim service ID %q does not match proof service ID %q", claimSessionHeader.GetServiceId(), - proofSessionHeader.GetServiceId(), + sessionHeader.GetServiceId(), ) } - return &foundClaim, nil + return nil } // compareSessionHeaders compares a session header against an expected session header. @@ -379,7 +449,7 @@ func verifyClosestProof( proof *smt.SparseMerkleClosestProof, claimRootHash []byte, ) error { - valid, err := smt.VerifyClosestProof(proof, claimRootHash, &protocol.SmtSpec) + valid, err := smt.VerifyClosestProof(proof, claimRootHash, protocol.NewSMTSpec()) if err != nil { return err } diff --git a/x/proof/keeper/proof_validation_test.go b/x/proof/keeper/proof_validation_test.go index a3e6133ab..f2701db84 100644 --- a/x/proof/keeper/proof_validation_test.go +++ b/x/proof/keeper/proof_validation_test.go @@ -31,10 +31,10 @@ import ( func TestEnsureValidProof_Error(t *testing.T) { opts := []keepertest.ProofKeepersOpt{ - // Set block hash such that on-chain closest merkle proof validation + // Set block hash such that onchain closest merkle proof validation // uses the expected path. keepertest.WithBlockHash(blockHeaderHash), - // Set block height to 1 so there is a valid session on-chain. + // Set block height to 1 so there is a valid session onchain. keepertest.WithBlockHeight(1), } keepers, ctx := keepertest.NewProofModuleKeepers(t, opts...) @@ -210,7 +210,7 @@ func TestEnsureValidProof_Error(t *testing.T) { expectedMerkleProofPath) }, expectedErr: prooftypes.ErrProofInvalidSessionId.Wrapf( - "session ID does not match on-chain session ID; expected %q, got %q", + "session ID does not match onchain session ID; expected %q, got %q", validSessionHeader.GetSessionId(), "", ), @@ -235,7 +235,7 @@ func TestEnsureValidProof_Error(t *testing.T) { ), }, { - desc: "proof session ID must match on-chain session ID", + desc: "proof session ID must match onchain session ID", newProof: func(t *testing.T) *prooftypes.Proof { // Construct new proof message using the wrong session ID. return testtree.NewProof(t, @@ -246,13 +246,13 @@ func TestEnsureValidProof_Error(t *testing.T) { ) }, expectedErr: prooftypes.ErrProofInvalidSessionId.Wrapf( - "session ID does not match on-chain session ID; expected %q, got %q", + "session ID does not match onchain session ID; expected %q, got %q", validSessionHeader.GetSessionId(), wrongSessionIdHeader.GetSessionId(), ), }, { - desc: "proof supplier must be in on-chain session", + desc: "proof supplier must be in onchain session", newProof: func(t *testing.T) *prooftypes.Proof { // Construct a proof message with a supplier that does not belong in the session. return testtree.NewProof(t, @@ -285,7 +285,7 @@ func TestEnsureValidProof_Error(t *testing.T) { return proof }, expectedErr: prooftypes.ErrProofInvalidProof.Wrapf( - "failed to unmarshal closest merkle proof: %s", + "failed to unmarshal sparse compact merkle closest proof: %s", expectedInvalidProofUnmarshalErr, ), }, @@ -582,7 +582,7 @@ func TestEnsureValidProof_Error(t *testing.T) { return testtree.NewProof(t, supplierOperatorAddr, validSessionHeader, wrongPathSessionTree, wrongClosestProofPath) }, expectedErr: prooftypes.ErrProofInvalidProof.Wrapf( - "the path of the proof provided (%x) does not match one expected by the on-chain protocol (%x)", + "the path of the proof provided (%x) does not match one expected by the onchain protocol (%x)", wrongClosestProofPath, protocol.GetPathForProof(sdkCtx.HeaderHash(), validSessionHeader.GetSessionId()), ), @@ -611,10 +611,10 @@ func TestEnsureValidProof_Error(t *testing.T) { err = sparseCompactMerkleClosestProof.Unmarshal(proof.ClosestMerkleProof) require.NoError(t, err) var sparseMerkleClosestProof *smt.SparseMerkleClosestProof - sparseMerkleClosestProof, err = smt.DecompactClosestProof(sparseCompactMerkleClosestProof, &protocol.SmtSpec) + sparseMerkleClosestProof, err = smt.DecompactClosestProof(sparseCompactMerkleClosestProof, protocol.NewSMTSpec()) require.NoError(t, err) - relayBz := sparseMerkleClosestProof.GetValueHash(&protocol.SmtSpec) + relayBz := sparseMerkleClosestProof.GetValueHash(protocol.NewSMTSpec()) relayHashArr := protocol.GetRelayHashFromBytes(relayBz) relayHash := relayHashArr[:] @@ -729,21 +729,21 @@ func TestEnsureValidProof_Error(t *testing.T) { { desc: "claim and proof application addresses must match", newProof: func(t *testing.T) *prooftypes.Proof { - t.Skip("this test case reduces to either the 'claim must exist for proof message' or 'proof session ID must match on-chain session ID cases") + t.Skip("this test case reduces to either the 'claim must exist for proof message' or 'proof session ID must match onchain session ID cases") return nil }, }, { desc: "claim and proof service IDs must match", newProof: func(t *testing.T) *prooftypes.Proof { - t.Skip("this test case reduces to either the 'claim must exist for proof message' or 'proof session ID must match on-chain session ID cases") + t.Skip("this test case reduces to either the 'claim must exist for proof message' or 'proof session ID must match onchain session ID cases") return nil }, }, { desc: "claim and proof supplier operator addresses must match", newProof: func(t *testing.T) *prooftypes.Proof { - t.Skip("this test case reduces to either the 'claim must exist for proof message' or 'proof session ID must match on-chain session ID cases") + t.Skip("this test case reduces to either the 'claim must exist for proof message' or 'proof session ID must match onchain session ID cases") return nil }, }, @@ -753,6 +753,9 @@ func TestEnsureValidProof_Error(t *testing.T) { for _, test := range tests { t.Run(test.desc, func(t *testing.T) { proof := test.newProof(t) + sessionId := proof.GetSessionHeader().GetSessionId() + supplierOperatorAddr := proof.GetSupplierOperatorAddress() + foundClaim, _ := keepers.GetClaim(ctx, sessionId, supplierOperatorAddr) // Advance the block height to the proof path seed height. earliestSupplierProofCommitHeight := sharedtypes.GetEarliestSupplierProofCommitHeight( @@ -769,8 +772,23 @@ func TestEnsureValidProof_Error(t *testing.T) { // Advance the block height to the earliest proof commit height. ctx = keepertest.SetBlockHeight(ctx, earliestSupplierProofCommitHeight) - err := keepers.EnsureValidProof(ctx, proof) - require.ErrorContains(t, err, test.expectedErr.Error()) + + // A proof is valid IFF it is: + // 1. Well-formed; session header and other metadata + // 2. Has valid relay signatures + // 3. Satisfies the closest merkle path + + // Ensure the proof is well-formed. + if err := keepers.EnsureWellFormedProof(ctx, proof); err != nil { + require.ErrorContains(t, err, test.expectedErr.Error()) + return + } + + // Ensure the proof satisfies the closest merkle path and has valid relay signatures. + if err := keepers.EnsureValidProofSignaturesAndClosestPath(ctx, &foundClaim, proof); err != nil { + require.ErrorContains(t, err, test.expectedErr.Error()) + return + } }) } } diff --git a/x/proof/keeper/query_proof.go b/x/proof/keeper/query_proof.go index f2a84ba42..4d596f948 100644 --- a/x/proof/keeper/query_proof.go +++ b/x/proof/keeper/query_proof.go @@ -13,7 +13,10 @@ import ( "github.com/pokt-network/poktroll/x/proof/types" ) -func (k Keeper) AllProofs(ctx context.Context, req *types.QueryAllProofsRequest) (*types.QueryAllProofsResponse, error) { +func (k Keeper) AllProofs( + ctx context.Context, + req *types.QueryAllProofsRequest, +) (*types.QueryAllProofsResponse, error) { logger := k.Logger().With("method", "AllProofs") if req == nil { diff --git a/x/proof/keeper/session.go b/x/proof/keeper/session.go index 68a72cf10..a07d0d897 100644 --- a/x/proof/keeper/session.go +++ b/x/proof/keeper/session.go @@ -14,7 +14,7 @@ import ( // queryAndValidateSessionHeader ensures that a session with the sessionID of the given session // header exists and that this session includes the supplier with the given operator address. -// It returns a session which is hydrated with the on-chain session data. +// It returns a session which is hydrated with the onchain session data. func (k Keeper) queryAndValidateSessionHeader( ctx context.Context, sessionHeader *sessiontypes.SessionHeader, @@ -28,7 +28,7 @@ func (k Keeper) queryAndValidateSessionHeader( BlockHeight: sessionHeader.GetSessionStartBlockHeight(), } - // Get the on-chain session for the ground-truth against which the given + // Get the onchain session for the ground-truth against which the given // session header is to be validated. sessionRes, err := k.sessionKeeper.GetSession(ctx, sessionReq) if err != nil { @@ -46,17 +46,17 @@ func (k Keeper) queryAndValidateSessionHeader( ). Debug("got sessionId for proof") - // Ensure that the given session header's session ID matches the on-chain onChainSession ID. + // Ensure that the given session header's session ID matches the onchain onChainSession ID. if sessionHeader.GetSessionId() != onChainSession.GetSessionId() { return nil, types.ErrProofInvalidSessionId.Wrapf( - "session ID does not match on-chain session ID; expected %q, got %q", + "session ID does not match onchain session ID; expected %q, got %q", onChainSession.GetSessionId(), sessionHeader.GetSessionId(), ) } // NB: it is redundant to assert that the service ID in the request matches the - // on-chain session service ID because the session is queried using the service + // onchain session service ID because the session is queried using the service // ID as a parameter. Either a different session (i.e. different session ID) // or an error would be returned depending on whether an application/supplier // pair exists for the given service ID or not, respectively. @@ -77,7 +77,7 @@ func (k Keeper) queryAndValidateSessionHeader( } // validateClaimWindow returns an error if the given session is not eligible for claiming. -// It *assumes* that the msg's session header is a valid on-chain session with correct +// It *assumes* that the msg's session header is a valid onchain session with correct // height fields. First call #queryAndValidateSessionHeader to ensure any user-provided // session header is valid and correctly hydrated. func (k Keeper) validateClaimWindow( @@ -145,7 +145,7 @@ func (k Keeper) validateClaimWindow( } // validateProofWindow returns an error if the given session is not eligible for proving. -// It *assumes* that the msg's session header is a valid on-chain session with correct +// It *assumes* that the msg's session header is a valid onchain session with correct // height fields. First call #queryAndValidateSessionHeader to ensure any user-provided // session header is valid and correctly hydrated. func (k Keeper) validateProofWindow( diff --git a/x/proof/keeper/validate_proofs.go b/x/proof/keeper/validate_proofs.go new file mode 100644 index 000000000..b6627aeb3 --- /dev/null +++ b/x/proof/keeper/validate_proofs.go @@ -0,0 +1,206 @@ +package keeper + +import ( + "context" + "fmt" + "runtime" + "sync" + + sdk "github.com/cosmos/cosmos-sdk/types" + + "github.com/pokt-network/poktroll/x/proof/types" +) + +// proofValidationTaskCoordinator is a helper struct to coordinate parallel proof +// validation tasks. +type proofValidationTaskCoordinator struct { + // sem is a semaphore to limit the number of concurrent goroutines. + sem chan struct{} + + // wg is a wait group to wait for all goroutines to finish before returning. + wg *sync.WaitGroup + + // processedProofs is a map of supplier operator addresses to the session IDs + // whose proofs that have been processed. + processedProofs map[string][]string + + // numValidProofs and numInvalidProofs are counters to keep track of proof validation results. + numValidProofs, + numInvalidProofs uint64 + + // coordinatorMu protects the coordinator fields. + coordinatorMu *sync.Mutex +} + +// numCPU caches runtime.NumCPU() to avoid being retrieved on every ValidateSubmittedProofs call. +var numCPU int + +func init() { + // Initialize the number of CPU cores available on the machine. + numCPU = runtime.NumCPU() +} + +// ValidateSubmittedProofs performs concurrent proof validation, updating claims' +// proof validation states and removing processed proofs from storage. +func (k Keeper) ValidateSubmittedProofs(ctx sdk.Context) (numValidProofs, numInvalidProofs uint64, err error) { + logger := k.Logger().With("method", "ValidateSubmittedProofs") + + logger.Info(fmt.Sprintf("Number of CPU cores used for parallel proof validation: %d\n", numCPU)) + + // Iterate over proofs using an iterator to prevent OOM issues caused by bulk fetching. + proofIterator := k.GetAllProofsIterator(ctx) + + proofValidationCoordinator := &proofValidationTaskCoordinator{ + // Parallelize proof validation across CPU cores since they are independent from one another. + // Use semaphores to limit concurrent goroutines and prevent memory issues. + sem: make(chan struct{}, numCPU), + // Use a wait group to wait for all goroutines to finish before returning. + wg: &sync.WaitGroup{}, + + processedProofs: make(map[string][]string), + coordinatorMu: &sync.Mutex{}, + } + + for ; proofIterator.Valid(); proofIterator.Next() { + proofBz := proofIterator.Value() + + // Acquire a semaphore to limit the number of goroutines. + // This will block if the sem channel is full. + proofValidationCoordinator.sem <- struct{}{} + + // Increment the wait group to wait for proof validation to finish. + proofValidationCoordinator.wg.Add(1) + + go k.validateProof(ctx, proofBz, proofValidationCoordinator) + } + + // Wait for all goroutines to finish before returning. + proofValidationCoordinator.wg.Wait() + + // Close the proof iterator before deleting the processed proofs. + proofIterator.Close() + + // Delete all the processed proofs from the store since they are no longer needed. + logger.Info("removing processed proofs from the store") + for supplierOperatorAddr, processedProofs := range proofValidationCoordinator.processedProofs { + for _, sessionId := range processedProofs { + k.RemoveProof(ctx, sessionId, supplierOperatorAddr) + logger.Info(fmt.Sprintf( + "removing proof for supplier %s with session ID %s", + supplierOperatorAddr, + sessionId, + )) + } + } + + return proofValidationCoordinator.numValidProofs, proofValidationCoordinator.numInvalidProofs, nil +} + +// validateProof validates a proof submitted by a supplier. +// It marks the corresponding claim as valid or invalid based on the proof validation. +// It is meant to be called concurrently by multiple goroutines to parallelize +// proof validation. +func (k Keeper) validateProof( + ctx context.Context, + proofBz []byte, + coordinator *proofValidationTaskCoordinator, +) { + sdkCtx := sdk.UnwrapSDKContext(ctx) + + logger := k.Logger().With("method", "validateProof") + + // Decrement the wait group when the goroutine finishes. + defer coordinator.wg.Done() + + // Release the semaphore after the goroutine finishes which unblocks another one. + defer func() { <-coordinator.sem }() + + var proof types.Proof + // proofBz is not expected to fail unmarshalling since it is should have + // passed EnsureWellFormedProof validation in MsgSubmitProof handler. + // Panic if it fails unmarshalling. + // If a failure occurs, it indicates either a bug in the code or data corruption. + // In either case, panicking is an appropriate response since both panics and + // returning an error would halt block production. + k.cdc.MustUnmarshal(proofBz, &proof) + + sessionHeader := proof.GetSessionHeader() + supplierOperatorAddr := proof.GetSupplierOperatorAddress() + + logger = logger.With( + "session_id", sessionHeader.GetSessionId(), + "application_address", sessionHeader.GetApplicationAddress(), + "service_id", sessionHeader.GetServiceId(), + "session_end_height", sessionHeader.GetSessionEndBlockHeight(), + "supplier_operator_address", supplierOperatorAddr, + ) + + // Retrieve the corresponding claim for the proof submitted so it can be + // used in the proof validation below. + // EnsureWellFormedProof which is called in MsgSubmitProof handler has already validated + // that the claim referenced by the proof exists and has a matching session header. + claim, claimFound := k.GetClaim(ctx, sessionHeader.GetSessionId(), supplierOperatorAddr) + if !claimFound { + // DEV_NOTE: This should never happen since EnsureWellFormedProof has already checked + // that the proof has a corresponding claim. + logger.Error("no claim found for the corresponding proof") + return + } + logger.Debug("successfully retrieved claim") + + // Set the proof status to valid by default. + proofStatus := types.ClaimProofStatus_VALIDATED + // Set the invalidity reason to an empty string by default. + invalidProofReason := "" + + if err := k.EnsureValidProofSignaturesAndClosestPath(ctx, &claim, &proof); err != nil { + // Set the proof status to invalid. + proofStatus = types.ClaimProofStatus_INVALID + + // Set the invalidity reason to the error message. + invalidProofReason = err.Error() + + logger.Info(fmt.Sprintf("invalid proof due to error: %v", err)) + } + logger.Info(fmt.Sprintf("proof checked, validation result: %s", proofStatus)) + + // Create and emit an event for the proof validation result. + eventProofValidityChecked := types.EventProofValidityChecked{ + Proof: &proof, + BlockHeight: uint64(sdkCtx.BlockHeight()), + ProofStatus: proofStatus, + FailureReason: invalidProofReason, + } + + if err := sdkCtx.EventManager().EmitTypedEvent(&eventProofValidityChecked); err != nil { + logger.Error(fmt.Sprintf("failed to emit proof validity check event due to: %v", err)) + return + } + + // Protect the subsequent operations from concurrent access. + coordinator.coordinatorMu.Lock() + defer coordinator.coordinatorMu.Unlock() + + // Update the claim to reflect the validation result of the associated proof. + // + // It will be used later by the SettlePendingClaims routine to determine whether: + // 1. The claim should be settled or not + // 2. The corresponding supplier should be slashed or not + claim.ProofValidationStatus = proofStatus + k.UpsertClaim(ctx, claim) + + // Collect the processed proofs info to delete them after the proofIterator is closed + // to prevent iterator invalidation. + coordinator.processedProofs[supplierOperatorAddr] = append( + coordinator.processedProofs[supplierOperatorAddr], + sessionHeader.GetSessionId(), + ) + + if proofStatus == types.ClaimProofStatus_INVALID { + // Increment the number of invalid proofs. + coordinator.numInvalidProofs++ + } else { + // Increment the number of valid proofs. + coordinator.numValidProofs++ + } +} diff --git a/x/proof/module/abci.go b/x/proof/module/abci.go new file mode 100644 index 000000000..5c4f02d4b --- /dev/null +++ b/x/proof/module/abci.go @@ -0,0 +1,37 @@ +package proof + +import ( + "fmt" + + cosmostelemetry "github.com/cosmos/cosmos-sdk/telemetry" + sdk "github.com/cosmos/cosmos-sdk/types" + + "github.com/pokt-network/poktroll/x/proof/keeper" + "github.com/pokt-network/poktroll/x/proof/types" +) + +// EndBlocker is called at every block and handles proof-related operations. +func EndBlocker(ctx sdk.Context, k keeper.Keeper) (err error) { + // Telemetry: measure the end-block execution time following standard cosmos-sdk practices. + defer cosmostelemetry.ModuleMeasureSince(types.ModuleName, cosmostelemetry.Now(), cosmostelemetry.MetricKeyEndBlocker) + + logger := k.Logger().With("method", "EndBlocker") + + // Iterates through all proofs submitted in this block and: + // 1. Updates the proof validation status in the associated claim + // 2. Removes all processed proofs from onchain state + numValidProofs, numInvalidProofs, err := k.ValidateSubmittedProofs(ctx) + if err != nil { + logger.Error(fmt.Sprintf("could not validate submitted proofs due to error %v", err)) + return err + } + + logger.Info(fmt.Sprintf( + "checked %d proofs: %d valid, %d invalid", + numValidProofs+numInvalidProofs, + numValidProofs, + numInvalidProofs, + )) + + return nil +} diff --git a/x/proof/module/module.go b/x/proof/module/module.go index 2cc495194..82d9b04d0 100644 --- a/x/proof/module/module.go +++ b/x/proof/module/module.go @@ -149,8 +149,9 @@ func (am AppModule) BeginBlock(_ context.Context) error { // EndBlock contains the logic that is automatically triggered at the end of each block. // The end block implementation is optional. -func (am AppModule) EndBlock(_ context.Context) error { - return nil +func (am AppModule) EndBlock(goCtx context.Context) error { + ctx := sdk.UnwrapSDKContext(goCtx) + return EndBlocker(ctx, am.keeper) } // IsOnePerModuleType implements the depinject.OnePerModuleType interface. diff --git a/x/proof/types/account_query_client.go b/x/proof/types/account_query_client.go index 86ec77a6e..3f2a97374 100644 --- a/x/proof/types/account_query_client.go +++ b/x/proof/types/account_query_client.go @@ -13,7 +13,7 @@ var _ client.AccountQueryClient = (*AccountKeeperQueryClient)(nil) // AccountKeeperQueryClient is a thin wrapper around the AccountKeeper. // It does not rely on the QueryClient, and therefore does not make any -// network requests as in the off-chain implementation. +// network requests as in the offchain implementation. type AccountKeeperQueryClient struct { keeper AccountKeeper } diff --git a/x/proof/types/application_query_client.go b/x/proof/types/application_query_client.go index 1cd887314..1cd526604 100644 --- a/x/proof/types/application_query_client.go +++ b/x/proof/types/application_query_client.go @@ -11,7 +11,7 @@ var _ client.ApplicationQueryClient = (*AppKeeperQueryClient)(nil) // AppKeeperQueryClient is a thin wrapper around the AccountKeeper. // It does not rely on the QueryClient, and therefore does not make any -// network requests as in the off-chain implementation. +// network requests as in the offchain implementation. type AppKeeperQueryClient struct { keeper ApplicationKeeper } @@ -42,3 +42,9 @@ func (appQueryClient *AppKeeperQueryClient) GetApplication( func (appQueryClient *AppKeeperQueryClient) GetAllApplications(ctx context.Context) ([]apptypes.Application, error) { return appQueryClient.keeper.GetAllApplications(ctx), nil } + +// GetParams returns the application module parameters. +func (appQueryClient *AppKeeperQueryClient) GetParams(ctx context.Context) (*apptypes.Params, error) { + params := appQueryClient.keeper.GetParams(ctx) + return ¶ms, nil +} diff --git a/x/proof/types/event.pb.go b/x/proof/types/event.pb.go index 8e467c0c5..3d0e25004 100644 --- a/x/proof/types/event.pb.go +++ b/x/proof/types/event.pb.go @@ -330,46 +330,122 @@ func (m *EventProofUpdated) GetClaimedUpokt() *types.Coin { return nil } +// Event emitted after a proof has been checked for validity in the proof module's +// EndBlocker. +type EventProofValidityChecked struct { + Proof *Proof `protobuf:"bytes,1,opt,name=proof,proto3" json:"proof"` + BlockHeight uint64 `protobuf:"varint,2,opt,name=block_height,json=blockHeight,proto3" json:"block_height"` + ProofStatus ClaimProofStatus `protobuf:"varint,3,opt,name=proof_status,json=proofStatus,proto3,enum=poktroll.proof.ClaimProofStatus" json:"proof_status"` + // reason is the string representation of the error that led to the proof being + // marked as invalid (e.g. "invalid closest merkle proof", "invalid relay request signature") + FailureReason string `protobuf:"bytes,4,opt,name=failure_reason,json=failureReason,proto3" json:"failure_reason"` +} + +func (m *EventProofValidityChecked) Reset() { *m = EventProofValidityChecked{} } +func (m *EventProofValidityChecked) String() string { return proto.CompactTextString(m) } +func (*EventProofValidityChecked) ProtoMessage() {} +func (*EventProofValidityChecked) Descriptor() ([]byte, []int) { + return fileDescriptor_dd4c19e04487fbec, []int{4} +} +func (m *EventProofValidityChecked) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *EventProofValidityChecked) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil +} +func (m *EventProofValidityChecked) XXX_Merge(src proto.Message) { + xxx_messageInfo_EventProofValidityChecked.Merge(m, src) +} +func (m *EventProofValidityChecked) XXX_Size() int { + return m.Size() +} +func (m *EventProofValidityChecked) XXX_DiscardUnknown() { + xxx_messageInfo_EventProofValidityChecked.DiscardUnknown(m) +} + +var xxx_messageInfo_EventProofValidityChecked proto.InternalMessageInfo + +func (m *EventProofValidityChecked) GetProof() *Proof { + if m != nil { + return m.Proof + } + return nil +} + +func (m *EventProofValidityChecked) GetBlockHeight() uint64 { + if m != nil { + return m.BlockHeight + } + return 0 +} + +func (m *EventProofValidityChecked) GetProofStatus() ClaimProofStatus { + if m != nil { + return m.ProofStatus + } + return ClaimProofStatus_PENDING_VALIDATION +} + +func (m *EventProofValidityChecked) GetFailureReason() string { + if m != nil { + return m.FailureReason + } + return "" +} + func init() { proto.RegisterType((*EventClaimCreated)(nil), "poktroll.proof.EventClaimCreated") proto.RegisterType((*EventClaimUpdated)(nil), "poktroll.proof.EventClaimUpdated") proto.RegisterType((*EventProofSubmitted)(nil), "poktroll.proof.EventProofSubmitted") proto.RegisterType((*EventProofUpdated)(nil), "poktroll.proof.EventProofUpdated") + proto.RegisterType((*EventProofValidityChecked)(nil), "poktroll.proof.EventProofValidityChecked") } func init() { proto.RegisterFile("poktroll/proof/event.proto", fileDescriptor_dd4c19e04487fbec) } var fileDescriptor_dd4c19e04487fbec = []byte{ - // 451 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x95, 0x3f, 0x8f, 0xd3, 0x30, - 0x18, 0xc6, 0x1b, 0x7a, 0x3d, 0xe9, 0x0c, 0x9c, 0x74, 0xe1, 0x8f, 0x72, 0x45, 0x38, 0x27, 0xa6, - 0x5b, 0xce, 0x56, 0x41, 0xea, 0x07, 0x48, 0xd4, 0x8d, 0x01, 0x82, 0x2a, 0x21, 0x06, 0xaa, 0x24, - 0x35, 0x25, 0x6a, 0x6c, 0x47, 0x89, 0x5d, 0xe8, 0x27, 0x60, 0xe5, 0x1b, 0x21, 0x36, 0xc6, 0x8e, - 0x9d, 0x22, 0x94, 0x6e, 0xf9, 0x14, 0xc8, 0x76, 0x83, 0xda, 0x08, 0x90, 0x50, 0x25, 0x58, 0x3a, - 0xc5, 0x7e, 0x9f, 0xe7, 0xb1, 0x9d, 0xf7, 0x27, 0xcb, 0xa0, 0x9f, 0xf1, 0xb9, 0xc8, 0x79, 0x9a, - 0xe2, 0x2c, 0xe7, 0xfc, 0x1d, 0x26, 0x0b, 0xc2, 0x04, 0xca, 0x72, 0x2e, 0xb8, 0x7d, 0xde, 0x68, - 0x48, 0x6b, 0x7d, 0x18, 0xf3, 0x82, 0xf2, 0x02, 0x47, 0x61, 0x41, 0xf0, 0x62, 0x10, 0x11, 0x11, - 0x0e, 0x70, 0xcc, 0x13, 0x66, 0xfc, 0xfd, 0xfb, 0x33, 0x3e, 0xe3, 0x7a, 0x88, 0xd5, 0x68, 0x5b, - 0x6d, 0xef, 0x20, 0x96, 0x19, 0x29, 0x8c, 0xf6, 0xe4, 0x53, 0x17, 0x5c, 0x8c, 0xd4, 0x8e, 0x7e, - 0x1a, 0x26, 0xd4, 0xcf, 0x49, 0x28, 0xc8, 0xd4, 0x1e, 0x82, 0x5e, 0xac, 0xe6, 0x8e, 0x75, 0x65, - 0x5d, 0xdf, 0x7e, 0xfa, 0x00, 0xed, 0x9f, 0x03, 0x69, 0xb3, 0x77, 0x56, 0x97, 0xae, 0xf1, 0x05, - 0xe6, 0x63, 0xdf, 0x00, 0xc0, 0x24, 0x9d, 0xe4, 0x24, 0x0d, 0x97, 0x85, 0x73, 0xeb, 0xca, 0xba, - 0x3e, 0xf1, 0xce, 0xeb, 0xd2, 0xdd, 0xa9, 0x06, 0x67, 0x4c, 0xd2, 0x40, 0x0f, 0xed, 0xd7, 0xe0, - 0x52, 0x09, 0x3a, 0x4b, 0xa6, 0x93, 0x98, 0xd3, 0x4c, 0x0a, 0x32, 0x91, 0x2c, 0x11, 0x85, 0x73, - 0xa2, 0xd3, 0x8f, 0xeb, 0xd2, 0xfd, 0xbd, 0x29, 0x78, 0xc8, 0x24, 0xf5, 0x8d, 0xe2, 0x1b, 0x61, - 0xac, 0xea, 0xf6, 0x5b, 0xf0, 0x48, 0x85, 0x48, 0x21, 0x12, 0xaa, 0xfe, 0xa8, 0xb5, 0x76, 0x4f, - 0xaf, 0xed, 0xd6, 0xa5, 0xfb, 0x27, 0x5b, 0xe0, 0x30, 0x49, 0x47, 0x8d, 0xb6, 0xb7, 0xfe, 0x4b, - 0x70, 0xb7, 0x39, 0x90, 0x54, 0xbd, 0x71, 0x4e, 0x75, 0xa3, 0x2e, 0x91, 0x01, 0x84, 0x14, 0x20, - 0xb4, 0x05, 0x84, 0x7c, 0x9e, 0x30, 0xef, 0xa2, 0x2e, 0xdd, 0xfd, 0x4c, 0x70, 0x67, 0x3b, 0x1d, - 0xab, 0x59, 0x8b, 0xc4, 0x38, 0x9b, 0x1e, 0x49, 0xfc, 0x27, 0x12, 0x5f, 0xbb, 0xe0, 0x9e, 0x26, - 0xf1, 0x42, 0xb5, 0xf8, 0x95, 0x8c, 0x68, 0x22, 0x0e, 0x61, 0x31, 0x04, 0x3d, 0x6d, 0xd0, 0x18, - 0x7e, 0x91, 0xd3, 0xdb, 0x98, 0x9c, 0x2e, 0x04, 0xe6, 0xd3, 0x62, 0xd8, 0x3d, 0x32, 0xfc, 0x0b, - 0x86, 0x5f, 0x9a, 0xdb, 0xa4, 0x9b, 0x7b, 0xe8, 0x6d, 0x3a, 0x12, 0xfc, 0xe7, 0x04, 0xbd, 0xe7, - 0xdf, 0x2a, 0x68, 0xad, 0x2a, 0x68, 0xad, 0x2b, 0x68, 0x7d, 0xaf, 0xa0, 0xf5, 0x79, 0x03, 0x3b, - 0xab, 0x0d, 0xec, 0xac, 0x37, 0xb0, 0xf3, 0x06, 0xcd, 0x12, 0xf1, 0x5e, 0x46, 0x28, 0xe6, 0x14, - 0x2b, 0xfb, 0x0d, 0x23, 0xe2, 0x03, 0xcf, 0xe7, 0xf8, 0xe7, 0x5b, 0xf7, 0x71, 0xf7, 0xb5, 0x8b, - 0x4e, 0xf5, 0x73, 0xf7, 0xec, 0x47, 0x00, 0x00, 0x00, 0xff, 0xff, 0xa1, 0x12, 0xa3, 0x30, 0x6e, - 0x07, 0x00, 0x00, + // 562 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x96, 0xb1, 0x6f, 0xd3, 0x4e, + 0x14, 0xc7, 0xe3, 0xa6, 0xa9, 0x94, 0x4b, 0x1a, 0xfd, 0xea, 0x1f, 0xa0, 0x24, 0x08, 0x3b, 0x62, + 0xea, 0x52, 0x5b, 0x6d, 0xa5, 0x4a, 0xac, 0xb1, 0x2a, 0x31, 0x30, 0xc0, 0xa1, 0x20, 0xc4, 0x80, + 0x65, 0x3b, 0xd7, 0xe4, 0x14, 0xfb, 0xce, 0xb2, 0xef, 0x0a, 0xf9, 0x0b, 0x58, 0x99, 0xf9, 0x67, + 0x10, 0x1b, 0x63, 0xc7, 0x4e, 0x16, 0x4a, 0x36, 0xff, 0x15, 0xe8, 0xde, 0x25, 0x34, 0x89, 0x0a, + 0x52, 0x55, 0x09, 0x96, 0x4c, 0xbe, 0xf7, 0xbe, 0xef, 0xfb, 0xee, 0xf2, 0x3e, 0xb1, 0x75, 0xa8, + 0x9b, 0xf2, 0x89, 0xc8, 0x78, 0x1c, 0xbb, 0x69, 0xc6, 0xf9, 0x85, 0x4b, 0x2e, 0x09, 0x13, 0x4e, + 0x9a, 0x71, 0xc1, 0xcd, 0xd6, 0x52, 0x73, 0x40, 0xeb, 0x5a, 0x11, 0xcf, 0x13, 0x9e, 0xbb, 0x61, + 0x90, 0x13, 0xf7, 0xf2, 0x38, 0x24, 0x22, 0x38, 0x76, 0x23, 0x4e, 0x99, 0xae, 0xef, 0x3e, 0x18, + 0xf1, 0x11, 0x87, 0xa5, 0xab, 0x56, 0x8b, 0xec, 0xe6, 0x0e, 0x62, 0x9a, 0x92, 0x5c, 0x6b, 0x4f, + 0x3f, 0x55, 0xd1, 0xc1, 0xb9, 0xda, 0xd1, 0x8b, 0x03, 0x9a, 0x78, 0x19, 0x09, 0x04, 0x19, 0x9a, + 0x67, 0xa8, 0x16, 0xa9, 0xb8, 0x6d, 0xf4, 0x8c, 0xc3, 0xc6, 0xc9, 0x43, 0x67, 0xfd, 0x1c, 0x0e, + 0x14, 0xf7, 0xeb, 0x65, 0x61, 0xeb, 0x3a, 0xac, 0x1f, 0xe6, 0x11, 0x42, 0x4c, 0x26, 0x7e, 0x46, + 0xe2, 0x60, 0x9a, 0xb7, 0x77, 0x7a, 0xc6, 0xe1, 0x6e, 0xbf, 0x55, 0x16, 0xf6, 0x4a, 0x16, 0xd7, + 0x99, 0x4c, 0x30, 0x2c, 0xcd, 0xb7, 0xa8, 0xa3, 0x04, 0xf0, 0x92, 0xa1, 0x1f, 0xf1, 0x24, 0x95, + 0x82, 0xf8, 0x92, 0x51, 0x91, 0xb7, 0x77, 0xc1, 0xfd, 0xa4, 0x2c, 0xec, 0xdf, 0x17, 0xe1, 0x47, + 0x4c, 0x26, 0x9e, 0x56, 0x3c, 0x2d, 0x0c, 0x54, 0xde, 0x7c, 0x8f, 0x1e, 0x2b, 0x13, 0xc9, 0x05, + 0x4d, 0xd4, 0x2f, 0xda, 0xe8, 0x5d, 0x83, 0xde, 0x76, 0x59, 0xd8, 0x7f, 0x2a, 0xc3, 0x6d, 0x26, + 0x93, 0xf3, 0xa5, 0xb6, 0xd6, 0xff, 0x15, 0xda, 0x5f, 0x1e, 0x48, 0xaa, 0xd9, 0xb4, 0xf7, 0x60, + 0x50, 0x1d, 0x47, 0x03, 0x72, 0x14, 0x20, 0x67, 0x01, 0xc8, 0xf1, 0x38, 0x65, 0xfd, 0x83, 0xb2, + 0xb0, 0xd7, 0x3d, 0xb8, 0xb9, 0x08, 0x07, 0x2a, 0xda, 0x20, 0x31, 0x48, 0x87, 0x5b, 0x12, 0xff, + 0x88, 0xc4, 0xb7, 0x2a, 0xfa, 0x1f, 0x48, 0xbc, 0x54, 0x23, 0x7e, 0x2d, 0xc3, 0x84, 0x8a, 0xfb, + 0xb0, 0x38, 0x43, 0x35, 0x28, 0x00, 0x0c, 0xb7, 0xf8, 0x60, 0x1b, 0xed, 0x83, 0x04, 0xd6, 0x8f, + 0x0d, 0x86, 0xd5, 0x2d, 0xc3, 0x3b, 0x30, 0xfc, 0xba, 0x7c, 0x9b, 0x60, 0xb8, 0xf7, 0x7d, 0x9b, + 0xb6, 0x04, 0xff, 0x3e, 0xc1, 0x2f, 0x3b, 0xa8, 0x73, 0x43, 0xf0, 0x4d, 0x10, 0xd3, 0x21, 0x15, + 0x53, 0x6f, 0x4c, 0xa2, 0x89, 0x26, 0xa9, 0x89, 0x18, 0x77, 0x23, 0x72, 0x8a, 0x9a, 0x61, 0xcc, + 0xa3, 0x89, 0x3f, 0x26, 0x74, 0x34, 0x16, 0x8b, 0x2f, 0xe3, 0x7f, 0x65, 0x61, 0xaf, 0xe5, 0x71, + 0x03, 0xa2, 0xe7, 0x10, 0x98, 0x03, 0xd4, 0x04, 0xb7, 0x9f, 0x8b, 0x40, 0x48, 0x0d, 0xb2, 0x75, + 0xd2, 0xbb, 0xf5, 0xdf, 0xa3, 0xbf, 0x19, 0x50, 0xa7, 0xdb, 0xae, 0x3a, 0x71, 0x23, 0xbd, 0x91, + 0xcd, 0x67, 0xa8, 0x75, 0x11, 0xd0, 0x58, 0x66, 0xc4, 0xcf, 0x48, 0x90, 0x73, 0x06, 0x8c, 0xeb, + 0x7d, 0xb3, 0x2c, 0xec, 0x0d, 0x05, 0xef, 0x2f, 0x62, 0x0c, 0x61, 0xff, 0xc5, 0xf7, 0x99, 0x65, + 0x5c, 0xcd, 0x2c, 0xe3, 0x7a, 0x66, 0x19, 0x3f, 0x66, 0x96, 0xf1, 0x79, 0x6e, 0x55, 0xae, 0xe6, + 0x56, 0xe5, 0x7a, 0x6e, 0x55, 0xde, 0x39, 0x23, 0x2a, 0xc6, 0x32, 0x74, 0x22, 0x9e, 0xb8, 0xea, + 0x8c, 0x47, 0x8c, 0x88, 0x0f, 0x3c, 0x9b, 0xb8, 0xbf, 0x2e, 0x02, 0x1f, 0x57, 0xaf, 0x02, 0xe1, + 0x1e, 0xdc, 0x05, 0x4e, 0x7f, 0x06, 0x00, 0x00, 0xff, 0xff, 0x9b, 0xda, 0x61, 0x57, 0x8b, 0x08, + 0x00, 0x00, } func (m *EventClaimCreated) Marshal() (dAtA []byte, err error) { @@ -644,6 +720,58 @@ func (m *EventProofUpdated) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } +func (m *EventProofValidityChecked) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *EventProofValidityChecked) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *EventProofValidityChecked) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.FailureReason) > 0 { + i -= len(m.FailureReason) + copy(dAtA[i:], m.FailureReason) + i = encodeVarintEvent(dAtA, i, uint64(len(m.FailureReason))) + i-- + dAtA[i] = 0x22 + } + if m.ProofStatus != 0 { + i = encodeVarintEvent(dAtA, i, uint64(m.ProofStatus)) + i-- + dAtA[i] = 0x18 + } + if m.BlockHeight != 0 { + i = encodeVarintEvent(dAtA, i, uint64(m.BlockHeight)) + i-- + dAtA[i] = 0x10 + } + if m.Proof != nil { + { + size, err := m.Proof.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintEvent(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + func encodeVarintEvent(dAtA []byte, offset int, v uint64) int { offset -= sovEvent(v) base := offset @@ -767,6 +895,29 @@ func (m *EventProofUpdated) Size() (n int) { return n } +func (m *EventProofValidityChecked) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Proof != nil { + l = m.Proof.Size() + n += 1 + l + sovEvent(uint64(l)) + } + if m.BlockHeight != 0 { + n += 1 + sovEvent(uint64(m.BlockHeight)) + } + if m.ProofStatus != 0 { + n += 1 + sovEvent(uint64(m.ProofStatus)) + } + l = len(m.FailureReason) + if l > 0 { + n += 1 + l + sovEvent(uint64(l)) + } + return n +} + func sovEvent(x uint64) (n int) { return (math_bits.Len64(x|1) + 6) / 7 } @@ -1561,6 +1712,162 @@ func (m *EventProofUpdated) Unmarshal(dAtA []byte) error { } return nil } +func (m *EventProofValidityChecked) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvent + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: EventProofValidityChecked: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: EventProofValidityChecked: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Proof", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvent + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthEvent + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthEvent + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Proof == nil { + m.Proof = &Proof{} + } + if err := m.Proof.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field BlockHeight", wireType) + } + m.BlockHeight = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvent + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.BlockHeight |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ProofStatus", wireType) + } + m.ProofStatus = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvent + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.ProofStatus |= ClaimProofStatus(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field FailureReason", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvent + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthEvent + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthEvent + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.FailureReason = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipEvent(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthEvent + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func skipEvent(dAtA []byte) (n int, err error) { l := len(dAtA) iNdEx := 0 diff --git a/x/proof/types/expected_keepers.go b/x/proof/types/expected_keepers.go index 9d1fd765e..e2981ce1a 100644 --- a/x/proof/types/expected_keepers.go +++ b/x/proof/types/expected_keepers.go @@ -49,6 +49,7 @@ type ApplicationKeeper interface { GetApplication(ctx context.Context, address string) (app apptypes.Application, found bool) GetAllApplications(ctx context.Context) []apptypes.Application SetApplication(context.Context, apptypes.Application) + GetParams(ctx context.Context) (params apptypes.Params) } // SharedKeeper defines the expected interface needed to retrieve shared information. diff --git a/x/proof/types/params.go b/x/proof/types/params.go index 9647651d1..11869057b 100644 --- a/x/proof/types/params.go +++ b/x/proof/types/params.go @@ -36,7 +36,7 @@ var ( ParamProofSubmissionFee = "proof_submission_fee" // TODO_MAINNET: Determine a sensible default value for the proof submission fee. // MinProofSubmissionFee is the default and minimum fee for submitting a proof. - MinProofSubmissionFee = cosmostypes.NewCoin(volatile.DenomuPOKT, math.NewInt(1000000)) + MinProofSubmissionFee = cosmostypes.NewCoin(volatile.DenomuPOKT, math.NewInt(100)) ) // ParamKeyTable the param key table for launch module diff --git a/x/proof/types/params.pb.go b/x/proof/types/params.pb.go index 8427231fa..9fb07ce08 100644 --- a/x/proof/types/params.pb.go +++ b/x/proof/types/params.pb.go @@ -45,7 +45,7 @@ type Params struct { ProofMissingPenalty *types.Coin `protobuf:"bytes,4,opt,name=proof_missing_penalty,json=proofMissingPenalty,proto3" json:"proof_missing_penalty"` // proof_submission_fee is the number of tokens (uPOKT) which should be paid by // the supplier operator when submitting a proof. - // This is needed to account for the cost of storing proofs on-chain and prevent + // This is needed to account for the cost of storing proofs onchain and prevent // spamming (i.e. sybil bloat attacks) the network with non-required proofs. // TODO_MAINNET: Consider renaming this to `proof_submission_fee_upokt`. ProofSubmissionFee *types.Coin `protobuf:"bytes,5,opt,name=proof_submission_fee,json=proofSubmissionFee,proto3" json:"proof_submission_fee"` diff --git a/x/proof/types/query.pb.go b/x/proof/types/query.pb.go index ebe21a473..c27b6d9c2 100644 --- a/x/proof/types/query.pb.go +++ b/x/proof/types/query.pb.go @@ -436,7 +436,6 @@ func (m *QueryGetProofResponse) GetProof() Proof { type QueryAllProofsRequest struct { Pagination *query.PageRequest `protobuf:"bytes,1,opt,name=pagination,proto3" json:"pagination,omitempty"` // Types that are valid to be assigned to Filter: - // // *QueryAllProofsRequest_SupplierOperatorAddress // *QueryAllProofsRequest_SessionId // *QueryAllProofsRequest_SessionEndHeight diff --git a/x/proof/types/query_validation.go b/x/proof/types/query_validation.go index e1742dd99..50e3cbb7f 100644 --- a/x/proof/types/query_validation.go +++ b/x/proof/types/query_validation.go @@ -59,6 +59,7 @@ func (query *QueryGetProofRequest) ValidateBasic() error { return nil } +// ValidateBasic performs basic (non-state-dependant) validation on a QueryAllProofsRequest. func (query *QueryAllProofsRequest) ValidateBasic() error { // TODO_TECHDEBT: update function signature to receive a context. logger := polylog.Ctx(context.TODO()) diff --git a/x/proof/types/shared_query_client.go b/x/proof/types/shared_query_client.go index 574735e7e..ead2cf97f 100644 --- a/x/proof/types/shared_query_client.go +++ b/x/proof/types/shared_query_client.go @@ -11,7 +11,7 @@ var _ client.SharedQueryClient = (*SharedKeeperQueryClient)(nil) // SharedKeeperQueryClient is a thin wrapper around the SharedKeeper. // It does not rely on the QueryClient, and therefore does not make any -// network requests as in the off-chain implementation. +// network requests as in the offchain implementation. type SharedKeeperQueryClient struct { sharedKeeper SharedKeeper sessionKeeper SessionKeeper @@ -29,7 +29,7 @@ func NewSharedKeeperQueryClient( } } -// GetParams queries & returns the shared module on-chain parameters. +// GetParams queries & returns the shared module onchain parameters. func (sqc *SharedKeeperQueryClient) GetParams( ctx context.Context, ) (params *sharedtypes.Params, err error) { diff --git a/x/proof/types/types.pb.go b/x/proof/types/types.pb.go index a316197dc..dc594d9e0 100644 --- a/x/proof/types/types.pb.go +++ b/x/proof/types/types.pb.go @@ -84,6 +84,36 @@ func (ClaimProofStage) EnumDescriptor() ([]byte, []int) { return fileDescriptor_b75ef15dfd4d6998, []int{1} } +// Status of proof validation for a claim +// Default is PENDING_VALIDATION regardless of proof requirement +type ClaimProofStatus int32 + +const ( + ClaimProofStatus_PENDING_VALIDATION ClaimProofStatus = 0 + ClaimProofStatus_VALIDATED ClaimProofStatus = 1 + ClaimProofStatus_INVALID ClaimProofStatus = 2 +) + +var ClaimProofStatus_name = map[int32]string{ + 0: "PENDING_VALIDATION", + 1: "VALIDATED", + 2: "INVALID", +} + +var ClaimProofStatus_value = map[string]int32{ + "PENDING_VALIDATION": 0, + "VALIDATED": 1, + "INVALID": 2, +} + +func (x ClaimProofStatus) String() string { + return proto.EnumName(ClaimProofStatus_name, int32(x)) +} + +func (ClaimProofStatus) EnumDescriptor() ([]byte, []int) { + return fileDescriptor_b75ef15dfd4d6998, []int{2} +} + type Proof struct { // Address of the supplier's operator that submitted this proof. SupplierOperatorAddress string `protobuf:"bytes,1,opt,name=supplier_operator_address,json=supplierOperatorAddress,proto3" json:"supplier_operator_address,omitempty"` @@ -143,13 +173,16 @@ func (m *Proof) GetClosestMerkleProof() []byte { return nil } -// Claim is the serialized object stored on-chain for claims pending to be proven +// Claim is the serialized object stored onchain for claims pending to be proven type Claim struct { + // Address of the supplier's operator that submitted this claim. SupplierOperatorAddress string `protobuf:"bytes,1,opt,name=supplier_operator_address,json=supplierOperatorAddress,proto3" json:"supplier_operator_address,omitempty"` - // The session header of the session that this claim is for. + // Session header this claim is for. SessionHeader *types.SessionHeader `protobuf:"bytes,2,opt,name=session_header,json=sessionHeader,proto3" json:"session_header,omitempty"` - // Root hash returned from smt.SMST#Root(). + // Root hash from smt.SMST#Root(). RootHash []byte `protobuf:"bytes,3,opt,name=root_hash,json=rootHash,proto3" json:"root_hash,omitempty"` + // Important: This field MUST only be set by proofKeeper#EnsureValidProofSignaturesAndClosestPath + ProofValidationStatus ClaimProofStatus `protobuf:"varint,4,opt,name=proof_validation_status,json=proofValidationStatus,proto3,enum=poktroll.proof.ClaimProofStatus" json:"proof_validation_status,omitempty"` } func (m *Claim) Reset() { *m = Claim{} } @@ -202,9 +235,17 @@ func (m *Claim) GetRootHash() []byte { return nil } +func (m *Claim) GetProofValidationStatus() ClaimProofStatus { + if m != nil { + return m.ProofValidationStatus + } + return ClaimProofStatus_PENDING_VALIDATION +} + func init() { proto.RegisterEnum("poktroll.proof.ProofRequirementReason", ProofRequirementReason_name, ProofRequirementReason_value) proto.RegisterEnum("poktroll.proof.ClaimProofStage", ClaimProofStage_name, ClaimProofStage_value) + proto.RegisterEnum("poktroll.proof.ClaimProofStatus", ClaimProofStatus_name, ClaimProofStatus_value) proto.RegisterType((*Proof)(nil), "poktroll.proof.Proof") proto.RegisterType((*Claim)(nil), "poktroll.proof.Claim") } @@ -212,36 +253,41 @@ func init() { func init() { proto.RegisterFile("poktroll/proof/types.proto", fileDescriptor_b75ef15dfd4d6998) } var fileDescriptor_b75ef15dfd4d6998 = []byte{ - // 452 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x92, 0xcf, 0x6e, 0xd3, 0x40, - 0x10, 0xc6, 0xb3, 0xa9, 0x5a, 0xc8, 0xb6, 0x29, 0x66, 0x15, 0x41, 0x1a, 0x90, 0x89, 0x7a, 0x8a, - 0x2a, 0xd5, 0x46, 0xf0, 0x04, 0xf9, 0x63, 0x14, 0x4b, 0x6e, 0x1d, 0xd6, 0x06, 0x21, 0x2e, 0x96, - 0x9b, 0x2c, 0xb6, 0x15, 0xdb, 0x63, 0x76, 0x37, 0x02, 0xde, 0x82, 0x87, 0xe1, 0x09, 0x38, 0x71, - 0xac, 0xb8, 0xd0, 0x23, 0x72, 0x5e, 0x04, 0x79, 0xed, 0x46, 0x79, 0x04, 0x4e, 0xf6, 0xcc, 0x6f, - 0xe6, 0x9b, 0xfd, 0x46, 0x83, 0x07, 0x05, 0xac, 0x25, 0x87, 0x34, 0x35, 0x0b, 0x0e, 0xf0, 0xc9, - 0x94, 0xdf, 0x0a, 0x26, 0x8c, 0x82, 0x83, 0x04, 0x72, 0x7a, 0xcf, 0x0c, 0xc5, 0x06, 0x67, 0x4b, - 0x10, 0x19, 0x88, 0x40, 0x51, 0xb3, 0x0e, 0xea, 0xd2, 0xc1, 0xf3, 0x9d, 0x8c, 0x60, 0x42, 0x24, - 0x90, 0xef, 0x0b, 0x0d, 0x7a, 0x11, 0x44, 0x50, 0x77, 0x55, 0x7f, 0x75, 0xf6, 0xfc, 0x0f, 0xc2, - 0x87, 0x8b, 0x4a, 0x98, 0xf8, 0xf8, 0x4c, 0x6c, 0x8a, 0x22, 0x4d, 0x18, 0x0f, 0xa0, 0x60, 0x3c, - 0x94, 0xc0, 0x83, 0x70, 0xb5, 0xe2, 0x4c, 0x88, 0x3e, 0x1a, 0xa2, 0x51, 0x67, 0xd2, 0xff, 0xfd, - 0xe3, 0xb2, 0xd7, 0x8c, 0x1c, 0xd7, 0xc4, 0x93, 0x3c, 0xc9, 0x23, 0xfa, 0xf4, 0xbe, 0xd5, 0x6d, - 0x3a, 0x1b, 0x4c, 0xde, 0xe0, 0xd3, 0xe6, 0x31, 0x41, 0xcc, 0xc2, 0x15, 0xe3, 0xfd, 0xf6, 0x10, - 0x8d, 0x8e, 0x5f, 0xbd, 0x30, 0x76, 0xbe, 0x1a, 0x6e, 0x78, 0xf5, 0x77, 0xae, 0xca, 0x68, 0x57, - 0xec, 0x87, 0xe4, 0x25, 0xee, 0x2d, 0x53, 0x10, 0x4c, 0xc8, 0x20, 0x63, 0x7c, 0x9d, 0xb2, 0x40, - 0xad, 0xa3, 0x7f, 0x30, 0x44, 0xa3, 0x13, 0x4a, 0x1a, 0x76, 0xa5, 0x90, 0xf2, 0x73, 0xfe, 0x13, - 0xe1, 0xc3, 0x69, 0x1a, 0x26, 0xd9, 0x7f, 0xee, 0xec, 0x19, 0xee, 0x70, 0x00, 0x19, 0xc4, 0xa1, - 0x88, 0x1b, 0x3b, 0x0f, 0xab, 0xc4, 0x3c, 0x14, 0xf1, 0x85, 0x83, 0x9f, 0x28, 0x37, 0x94, 0x7d, - 0xde, 0x24, 0x9c, 0x65, 0x2c, 0x97, 0x94, 0x85, 0x02, 0x72, 0xa2, 0xe1, 0x93, 0x6b, 0xd7, 0x0f, - 0xa8, 0xf5, 0xf6, 0x9d, 0x4d, 0xad, 0x99, 0xd6, 0x22, 0x8f, 0x71, 0x77, 0x41, 0xdd, 0xc9, 0x78, - 0x62, 0x3b, 0xb6, 0xe7, 0xdb, 0x53, 0x0d, 0x91, 0x2e, 0xee, 0xf8, 0x73, 0x6a, 0x79, 0x73, 0xd7, - 0x99, 0x69, 0xed, 0x8b, 0x19, 0x7e, 0xa4, 0x36, 0xa2, 0x24, 0x3d, 0x19, 0x46, 0x8c, 0x1c, 0xe3, - 0x07, 0x53, 0x67, 0x6c, 0x5f, 0x29, 0x05, 0x8c, 0x8f, 0x16, 0xd4, 0x7d, 0x6f, 0x5d, 0x6b, 0xa8, - 0x02, 0x9e, 0xe5, 0xfb, 0x8e, 0x35, 0xd3, 0xda, 0x55, 0x60, 0x7d, 0x58, 0xa8, 0x39, 0x07, 0x13, - 0xe7, 0x57, 0xa9, 0xa3, 0xdb, 0x52, 0x47, 0x77, 0xa5, 0x8e, 0xfe, 0x96, 0x3a, 0xfa, 0xbe, 0xd5, - 0x5b, 0xb7, 0x5b, 0xbd, 0x75, 0xb7, 0xd5, 0x5b, 0x1f, 0x8d, 0x28, 0x91, 0xf1, 0xe6, 0xc6, 0x58, - 0x42, 0x66, 0x56, 0x8b, 0xb8, 0xcc, 0x99, 0xfc, 0x02, 0x7c, 0x6d, 0xee, 0x8e, 0xf3, 0xeb, 0xfe, - 0x95, 0xdf, 0x1c, 0xa9, 0x3b, 0x7c, 0xfd, 0x2f, 0x00, 0x00, 0xff, 0xff, 0x74, 0x9b, 0x7a, 0x80, - 0x04, 0x03, 0x00, 0x00, + // 533 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x53, 0x5f, 0x6e, 0xda, 0x4e, + 0x10, 0x66, 0xc9, 0x2f, 0xf9, 0x95, 0x4d, 0xa0, 0xee, 0x8a, 0x26, 0x84, 0x56, 0x2e, 0xca, 0x13, + 0x42, 0x8a, 0xa9, 0xd2, 0x13, 0x00, 0x76, 0x8a, 0x25, 0xc7, 0xa6, 0x6b, 0x17, 0x45, 0x7d, 0xb1, + 0x36, 0xb0, 0x05, 0x0b, 0xe3, 0x75, 0x77, 0x97, 0xfe, 0xb9, 0x45, 0x0f, 0xd0, 0x63, 0xf4, 0x10, + 0x7d, 0x8c, 0xfa, 0xd2, 0x3c, 0x56, 0x70, 0x91, 0xca, 0x6b, 0x07, 0x91, 0x9e, 0xa0, 0x4f, 0xf6, + 0x7c, 0xdf, 0xcc, 0x37, 0xf3, 0x8d, 0x76, 0x60, 0x33, 0x65, 0x0b, 0xc9, 0x59, 0x1c, 0x77, 0x53, + 0xce, 0xd8, 0xfb, 0xae, 0xfc, 0x92, 0x52, 0x61, 0xa4, 0x9c, 0x49, 0x86, 0x6a, 0xf7, 0x9c, 0xa1, + 0xb8, 0xe6, 0xe9, 0x84, 0x89, 0x25, 0x13, 0xa1, 0x62, 0xbb, 0x79, 0x90, 0xa7, 0x36, 0x9f, 0x6f, + 0x65, 0x04, 0x15, 0x22, 0x62, 0xc9, 0xae, 0x50, 0xb3, 0x3e, 0x63, 0x33, 0x96, 0x57, 0x65, 0x7f, + 0x39, 0x7a, 0xf6, 0x0b, 0xc0, 0xfd, 0x51, 0x26, 0x8c, 0x02, 0x78, 0x2a, 0x56, 0x69, 0x1a, 0x47, + 0x94, 0x87, 0x2c, 0xa5, 0x9c, 0x48, 0xc6, 0x43, 0x32, 0x9d, 0x72, 0x2a, 0x44, 0x03, 0xb4, 0x40, + 0xbb, 0xd2, 0x6f, 0xfc, 0xfc, 0x7e, 0x5e, 0x2f, 0x5a, 0xf6, 0x72, 0xc6, 0x97, 0x3c, 0x4a, 0x66, + 0xf8, 0xe4, 0xbe, 0xd4, 0x2b, 0x2a, 0x0b, 0x1a, 0x5d, 0xc2, 0x5a, 0x31, 0x4c, 0x38, 0xa7, 0x64, + 0x4a, 0x79, 0xa3, 0xdc, 0x02, 0xed, 0xc3, 0x8b, 0x17, 0xc6, 0xd6, 0x57, 0xc1, 0x1b, 0x7e, 0xfe, + 0x1d, 0xaa, 0x34, 0x5c, 0x15, 0xbb, 0x21, 0x7a, 0x09, 0xeb, 0x93, 0x98, 0x09, 0x2a, 0x64, 0xb8, + 0xa4, 0x7c, 0x11, 0xd3, 0x50, 0xad, 0xa3, 0xb1, 0xd7, 0x02, 0xed, 0x23, 0x8c, 0x0a, 0xee, 0x4a, + 0x51, 0xca, 0xcf, 0xd9, 0xb7, 0x32, 0xdc, 0x1f, 0xc4, 0x24, 0x5a, 0xfe, 0xe3, 0xce, 0x9e, 0xc1, + 0x0a, 0x67, 0x4c, 0x86, 0x73, 0x22, 0xe6, 0x85, 0x9d, 0x47, 0x19, 0x30, 0x24, 0x62, 0x8e, 0xae, + 0xe1, 0x89, 0xf2, 0x19, 0x7e, 0x24, 0x71, 0x34, 0x25, 0x32, 0xeb, 0x26, 0x24, 0x91, 0x2b, 0xd1, + 0xf8, 0xaf, 0x05, 0xda, 0xb5, 0x8b, 0x96, 0xf1, 0xf0, 0x7d, 0x18, 0xca, 0xb2, 0xda, 0x80, 0xaf, + 0xf2, 0xf0, 0x53, 0x85, 0x8f, 0xb7, 0xf5, 0x39, 0xdc, 0x71, 0xe0, 0xb1, 0xca, 0xc2, 0xf4, 0xc3, + 0x2a, 0xe2, 0x74, 0x49, 0x13, 0x89, 0x29, 0x11, 0x2c, 0x41, 0x1a, 0x3c, 0x72, 0xbd, 0x20, 0xc4, + 0xd6, 0x9b, 0xb7, 0x36, 0xb6, 0x4c, 0xad, 0x84, 0x9e, 0xc0, 0xea, 0x08, 0x7b, 0xfd, 0x5e, 0xdf, + 0x76, 0x6c, 0x3f, 0xb0, 0x07, 0x1a, 0x40, 0x55, 0x58, 0x09, 0x86, 0xd8, 0xf2, 0x87, 0x9e, 0x63, + 0x6a, 0xe5, 0x8e, 0x09, 0x1f, 0x3f, 0x68, 0x3c, 0xa3, 0xe8, 0x10, 0xfe, 0x3f, 0x70, 0x7a, 0xf6, + 0x95, 0x52, 0x80, 0xf0, 0x60, 0x84, 0xbd, 0xb1, 0xe5, 0x6a, 0x20, 0x23, 0x7c, 0x2b, 0x08, 0x1c, + 0xcb, 0xd4, 0xca, 0x59, 0x60, 0x5d, 0x8f, 0x54, 0x9f, 0xbd, 0xce, 0x25, 0xd4, 0xfe, 0x1e, 0x1f, + 0x1d, 0x43, 0x34, 0xb2, 0x5c, 0xd3, 0x76, 0x5f, 0x87, 0xe3, 0x9e, 0x63, 0x9b, 0xbd, 0xc0, 0xf6, + 0x5c, 0xad, 0x94, 0x0d, 0x50, 0xc4, 0x96, 0x99, 0x8b, 0xda, 0xae, 0x02, 0xb4, 0x72, 0xdf, 0xf9, + 0xb1, 0xd6, 0xc1, 0xed, 0x5a, 0x07, 0x77, 0x6b, 0x1d, 0xfc, 0x5e, 0xeb, 0xe0, 0xeb, 0x46, 0x2f, + 0xdd, 0x6e, 0xf4, 0xd2, 0xdd, 0x46, 0x2f, 0xbd, 0x33, 0x66, 0x91, 0x9c, 0xaf, 0x6e, 0x8c, 0x09, + 0x5b, 0x76, 0xb3, 0xe5, 0x9d, 0x27, 0x54, 0x7e, 0x62, 0x7c, 0xd1, 0xdd, 0x9e, 0xcf, 0xe7, 0xdd, + 0x3b, 0xbc, 0x39, 0x50, 0x97, 0xf2, 0xea, 0x4f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x03, 0x4b, 0xbc, + 0x6b, 0xa6, 0x03, 0x00, 0x00, } func (m *Proof) Marshal() (dAtA []byte, err error) { @@ -313,6 +359,11 @@ func (m *Claim) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if m.ProofValidationStatus != 0 { + i = encodeVarintTypes(dAtA, i, uint64(m.ProofValidationStatus)) + i-- + dAtA[i] = 0x20 + } if len(m.RootHash) > 0 { i -= len(m.RootHash) copy(dAtA[i:], m.RootHash) @@ -392,6 +443,9 @@ func (m *Claim) Size() (n int) { if l > 0 { n += 1 + l + sovTypes(uint64(l)) } + if m.ProofValidationStatus != 0 { + n += 1 + sovTypes(uint64(m.ProofValidationStatus)) + } return n } @@ -684,6 +738,25 @@ func (m *Claim) Unmarshal(dAtA []byte) error { m.RootHash = []byte{} } iNdEx = postIndex + case 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ProofValidationStatus", wireType) + } + m.ProofValidationStatus = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.ProofValidationStatus |= ClaimProofStatus(b&0x7F) << shift + if b < 0x80 { + break + } + } default: iNdEx = preIndex skippy, err := skipTypes(dAtA[iNdEx:]) diff --git a/x/service/keeper/msg_server_add_service.go b/x/service/keeper/msg_server_add_service.go index 4596883f9..8a1fea482 100644 --- a/x/service/keeper/msg_server_add_service.go +++ b/x/service/keeper/msg_server_add_service.go @@ -15,7 +15,7 @@ import ( // AddService adds a service to the network. // The operation checks if the signer has enough funds (upokt) to pay the AddServiceFee. // If funds are insufficient, the service won't be added. Otherwise, the fee is transferred from -// the signer to the service module's account, afterwards the service will be present on-chain. +// the signer to the service module's account, afterwards the service will be present onchain. func (k msgServer) AddService( goCtx context.Context, msg *types.MsgAddService, diff --git a/x/service/keeper/query_service.go b/x/service/keeper/query_service.go index 73f420edc..999962eba 100644 --- a/x/service/keeper/query_service.go +++ b/x/service/keeper/query_service.go @@ -54,7 +54,8 @@ func (k Keeper) Service(ctx context.Context, req *types.QueryGetServiceRequest) service, found := k.GetService(ctx, req.Id) if !found { - return nil, status.Error(codes.NotFound, "service ID not found") + msg := fmt.Sprintf("service ID not found: %q", req.GetId()) + return nil, status.Error(codes.NotFound, msg) } return &types.QueryGetServiceResponse{Service: service}, nil diff --git a/x/service/keeper/query_service_test.go b/x/service/keeper/query_service_test.go index 7f2ab0584..02d123f36 100644 --- a/x/service/keeper/query_service_test.go +++ b/x/service/keeper/query_service_test.go @@ -43,9 +43,9 @@ func TestServiceQuerySingle(t *testing.T) { { desc: "KeyNotFound", request: &types.QueryGetServiceRequest{ - Id: strconv.Itoa(100000), + Id: "service", }, - expectedErr: status.Error(codes.NotFound, "service ID not found"), + expectedErr: status.Error(codes.NotFound, "service ID not found: \"service\""), }, { desc: "InvalidRequest", diff --git a/x/service/keeper/update_relay_mining_difficulty.go b/x/service/keeper/update_relay_mining_difficulty.go index b73e79131..d7e7512a4 100644 --- a/x/service/keeper/update_relay_mining_difficulty.go +++ b/x/service/keeper/update_relay_mining_difficulty.go @@ -30,8 +30,8 @@ var ( emaSmoothingFactor = new(big.Float).SetFloat64(0.1) ) -// UpdateRelayMiningDifficulty updates the on-chain relay mining difficulty -// based on the amount of on-chain relays for each service, given a map of serviceId->numRelays. +// UpdateRelayMiningDifficulty updates the onchain relay mining difficulty +// based on the amount of onchain relays for each service, given a map of serviceId->numRelays. func (k Keeper) UpdateRelayMiningDifficulty( ctx context.Context, relaysPerServiceMap map[string]uint64, diff --git a/x/service/types/params.pb.go b/x/service/types/params.pb.go index 3fd9295e8..5f7693d39 100644 --- a/x/service/types/params.pb.go +++ b/x/service/types/params.pb.go @@ -32,7 +32,7 @@ type Params struct { // and transferred to the pocket network foundation. AddServiceFee *types.Coin `protobuf:"bytes,1,opt,name=add_service_fee,json=addServiceFee,proto3" json:"add_service_fee" yaml:"add_service_fee"` // target_num_relays is the target for the EMA of the number of relays per session. - // Per service, on-chain relay mining difficulty will be adjusted to maintain this target. + // Per service, onchain relay mining difficulty will be adjusted to maintain this target. TargetNumRelays uint64 `protobuf:"varint,2,opt,name=target_num_relays,json=targetNumRelays,proto3" json:"target_num_relays" yaml:"target_num_relays"` } diff --git a/x/service/types/relay.go b/x/service/types/relay.go index 57264aafc..bb21139b8 100644 --- a/x/service/types/relay.go +++ b/x/service/types/relay.go @@ -83,7 +83,7 @@ func (res RelayResponse) GetSignableBytesHash() ([protocol.RelayHasherSize]byte, // TODO_TEST: Add tests for RelayResponse validation func (res *RelayResponse) ValidateBasic() error { // TODO_POST_MAINNET: if a client gets a response with an invalid/incomplete - // SessionHeader, consider sending an on-chain challenge, lowering their + // SessionHeader, consider sending an onchain challenge, lowering their // QoS, or other future work. meta := res.GetMeta() diff --git a/x/service/types/relay.pb.go b/x/service/types/relay.pb.go index 305ff1de7..9a1129ac5 100644 --- a/x/service/types/relay.pb.go +++ b/x/service/types/relay.pb.go @@ -83,7 +83,7 @@ type RelayRequestMetadata struct { // application has delegated to. The signature is made using the ring of the // application in both cases. Signature []byte `protobuf:"bytes,2,opt,name=signature,proto3" json:"signature,omitempty"` - // TODO_MAINNET: make sure we're checking/verifying this address on-chain (if needed). + // TODO_MAINNET: make sure we're checking/verifying this address onchain (if needed). // Relevant conversation: https://github.com/pokt-network/poktroll/pull/567#discussion_r1628722168 // // The supplier operator address the relay is sent to. It is being used on the diff --git a/x/service/types/relay_mining_difficulty.pb.go b/x/service/types/relay_mining_difficulty.pb.go index 751c4b433..988d3ad48 100644 --- a/x/service/types/relay_mining_difficulty.pb.go +++ b/x/service/types/relay_mining_difficulty.pb.go @@ -23,7 +23,7 @@ var _ = math.Inf // proto package needs to be updated. const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package -// RelayMiningDifficulty is a message used to store the on-chain Relay Mining +// RelayMiningDifficulty is a message used to store the onchain Relay Mining // difficulty associated with a specific service ID. // TODO_TECHDEBT: Embed this message in the Service message. type RelayMiningDifficulty struct { diff --git a/x/session/keeper/session_hydrator.go b/x/session/keeper/session_hydrator.go index 10d2c11e9..eaf5661bb 100644 --- a/x/session/keeper/session_hydrator.go +++ b/x/session/keeper/session_hydrator.go @@ -108,7 +108,7 @@ func (k Keeper) hydrateSessionMetadata(ctx context.Context, sh *sessionHydrator) return nil } -// hydrateSessionID use both session and on-chain data to determine a unique session ID +// hydrateSessionID use both session and onchain data to determine a unique session ID func (k Keeper) hydrateSessionID(ctx context.Context, sh *sessionHydrator) error { prevHashBz := k.GetBlockHash(ctx, sh.sessionHeader.SessionStartBlockHeight) @@ -290,7 +290,7 @@ func (k Keeper) GetSessionId( } // GetSessionId returns the string and bytes representation of the sessionId for the -// session containing blockHeight, given the shared on-chain parameters, application +// session containing blockHeight, given the shared onchain parameters, application // address, service ID, and block hash. func GetSessionId( sharedParams *sharedtypes.Params, @@ -316,7 +316,7 @@ func GetSessionId( } // getSessionStartBlockHeightBz returns the bytes representation of the session -// start height for the session containing blockHeight, given the shared on-chain +// start height for the session containing blockHeight, given the shared onchain // parameters. func getSessionStartBlockHeightBz(sharedParams *sharedtypes.Params, blockHeight int64) []byte { sessionStartBlockHeight := sharedtypes.GetSessionStartHeight(sharedParams, blockHeight) diff --git a/x/session/types/types.pb.go b/x/session/types/types.pb.go index 2d12d8f47..43295f939 100644 --- a/x/session/types/types.pb.go +++ b/x/session/types/types.pb.go @@ -31,11 +31,11 @@ const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package type SessionHeader struct { ApplicationAddress string `protobuf:"bytes,1,opt,name=application_address,json=applicationAddress,proto3" json:"application_address,omitempty"` ServiceId string `protobuf:"bytes,2,opt,name=service_id,json=serviceId,proto3" json:"service_id,omitempty"` - // NOTE: session_id can be derived from the above values using on-chain but is included in the header for convenience + // NOTE: session_id can be derived from the above values using onchain but is included in the header for convenience SessionId string `protobuf:"bytes,3,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"` SessionStartBlockHeight int64 `protobuf:"varint,4,opt,name=session_start_block_height,json=sessionStartBlockHeight,proto3" json:"session_start_block_height,omitempty"` // Note that`session_end_block_height` is a derivative of (`start` + `num_blocks_per_session`) - // as goverened by on-chain params at the time of the session start. + // as goverened by onchain params at the time of the session start. // It is stored as an additional field to simplofy business logic in case // the number of blocks_per_session changes during the session. SessionEndBlockHeight int64 `protobuf:"varint,5,opt,name=session_end_block_height,json=sessionEndBlockHeight,proto3" json:"session_end_block_height,omitempty"` diff --git a/x/shared/keeper/session.go b/x/shared/keeper/session.go index 3eaebb044..f97c2a72f 100644 --- a/x/shared/keeper/session.go +++ b/x/shared/keeper/session.go @@ -7,7 +7,7 @@ import ( ) // GetSessionStartHeight returns the block height at which the session containing -// queryHeight starts, given the current shared on-chain parameters. +// queryHeight starts, given the current shared onchain parameters. // Returns 0 if the block height is not a consensus produced block. // Example: If NumBlocksPerSession == 4, sessions start at blocks 1, 5, 9, etc. func (k Keeper) GetSessionStartHeight(ctx context.Context, queryHeight int64) int64 { @@ -16,7 +16,7 @@ func (k Keeper) GetSessionStartHeight(ctx context.Context, queryHeight int64) in } // GetSessionEndHeight returns the block height at which the session containing -// queryHeight ends, given the current shared on-chain parameters. +// queryHeight ends, given the current shared onchain parameters. // Returns 0 if the block height is not a consensus produced block. // Example: If NumBlocksPerSession == 4, sessions end at blocks 4, 8, 11, etc. func (k Keeper) GetSessionEndHeight(ctx context.Context, queryHeight int64) int64 { @@ -25,7 +25,7 @@ func (k Keeper) GetSessionEndHeight(ctx context.Context, queryHeight int64) int6 } // GetSessionNumber returns the session number for the session containing queryHeight, -// given the current shared on-chain parameters. +// given the current shared onchain parameters. // Returns session number 0 if the block height is not a consensus produced block. // Returns session number 1 for block 1 to block NumBlocksPerSession - 1 (inclusive). // i.e. If NubBlocksPerSession == 4, session == 1 for [1, 4], session == 2 for [5, 8], etc. diff --git a/x/shared/types/params.pb.go b/x/shared/types/params.pb.go index 7b5863516..d4447f61f 100644 --- a/x/shared/types/params.pb.go +++ b/x/shared/types/params.pb.go @@ -47,12 +47,12 @@ type Params struct { ProofWindowCloseOffsetBlocks uint64 `protobuf:"varint,6,opt,name=proof_window_close_offset_blocks,json=proofWindowCloseOffsetBlocks,proto3" json:"proof_window_close_offset_blocks"` // supplier_unbonding_period_sessions is the number of sessions that a supplier must wait after // unstaking before their staked assets are moved to their account balance. - // On-chain business logic requires, and ensures, that the corresponding block count of the unbonding + // Onchain business logic requires, and ensures, that the corresponding block count of the unbonding // period will exceed the end of any active claim & proof lifecycles. SupplierUnbondingPeriodSessions uint64 `protobuf:"varint,7,opt,name=supplier_unbonding_period_sessions,json=supplierUnbondingPeriodSessions,proto3" json:"supplier_unbonding_period_sessions"` // application_unbonding_period_sessions is the number of sessions that an application must wait after // unstaking before their staked assets are moved to their account balance. - // On-chain business logic requires, and ensures, that the corresponding block count of the + // Onchain business logic requires, and ensures, that the corresponding block count of the // application unbonding period will exceed the end of its corresponding proof window close height. ApplicationUnbondingPeriodSessions uint64 `protobuf:"varint,8,opt,name=application_unbonding_period_sessions,json=applicationUnbondingPeriodSessions,proto3" json:"application_unbonding_period_sessions"` // The amount of upokt that a compute unit should translate to when settling a session. diff --git a/x/shared/types/service.pb.go b/x/shared/types/service.pb.go index d5998637f..6da21cd5f 100644 --- a/x/shared/types/service.pb.go +++ b/x/shared/types/service.pb.go @@ -7,7 +7,6 @@ package types import ( - encoding_binary "encoding/binary" fmt "fmt" _ "github.com/cosmos/cosmos-proto" _ "github.com/cosmos/gogoproto/gogoproto" @@ -64,7 +63,7 @@ func (RPCType) EnumDescriptor() ([]byte, []int) { } // Enum to define configuration options -// TODO_RESEARCH: Should these be configs, SLAs or something else? There will be more discussion once we get closer to implementing on-chain QoS. +// TODO_RESEARCH: Should these be configs, SLAs or something else? There will be more discussion once we get closer to implementing onchain QoS. type ConfigOptions int32 const ( @@ -101,7 +100,7 @@ type Service struct { // cost_per_relay_for_specific_service = compute_units_per_relay_for_specific_service * compute_units_to_tokens_multipler_global_value ComputeUnitsPerRelay uint64 `protobuf:"varint,3,opt,name=compute_units_per_relay,json=computeUnitsPerRelay,proto3" json:"compute_units_per_relay,omitempty"` // The owner address that created the service. - // It is the address that receives rewards based on the Service's on-chain usage + // It is the address that receives rewards based on the Service's onchain usage // It is the only address that can update the service configuration (e.g. compute_units_per_relay), // or make other updates to it. OwnerAddress string `protobuf:"bytes,4,opt,name=owner_address,json=ownerAddress,proto3" json:"owner_address,omitempty"` @@ -321,8 +320,8 @@ func (m *SupplierEndpoint) GetConfigs() []*ConfigOption { // ServiceRevenueShare message to hold revenue share configuration details type ServiceRevenueShare struct { - Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` - RevSharePercentage float32 `protobuf:"fixed32,2,opt,name=rev_share_percentage,json=revSharePercentage,proto3" json:"rev_share_percentage,omitempty"` + Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` + RevSharePercentage uint64 `protobuf:"varint,3,opt,name=rev_share_percentage,json=revSharePercentage,proto3" json:"rev_share_percentage,omitempty"` } func (m *ServiceRevenueShare) Reset() { *m = ServiceRevenueShare{} } @@ -361,7 +360,7 @@ func (m *ServiceRevenueShare) GetAddress() string { return "" } -func (m *ServiceRevenueShare) GetRevSharePercentage() float32 { +func (m *ServiceRevenueShare) GetRevSharePercentage() uint64 { if m != nil { return m.RevSharePercentage } @@ -431,46 +430,47 @@ func init() { func init() { proto.RegisterFile("poktroll/shared/service.proto", fileDescriptor_302c2f793a11ae1e) } var fileDescriptor_302c2f793a11ae1e = []byte{ - // 621 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x54, 0xc1, 0x6e, 0xd3, 0x40, - 0x10, 0xcd, 0x26, 0x81, 0x24, 0xd3, 0x36, 0xb5, 0x86, 0x20, 0x4c, 0xa5, 0x5a, 0x25, 0xe2, 0x50, - 0x55, 0x6a, 0x52, 0xa5, 0x42, 0x88, 0x03, 0x42, 0x6d, 0x14, 0xaa, 0x52, 0x35, 0x89, 0xd6, 0x29, - 0x95, 0xb8, 0x58, 0xae, 0xbd, 0xa4, 0x56, 0x13, 0xaf, 0xb5, 0xb6, 0x53, 0x22, 0x7e, 0x02, 0xf1, - 0x0b, 0xfc, 0x02, 0x27, 0xbe, 0x80, 0x63, 0xc5, 0xa9, 0x47, 0x94, 0xfe, 0x08, 0x5a, 0xaf, 0x1d, - 0xa0, 0x41, 0x20, 0x6e, 0xe3, 0x79, 0x6f, 0x66, 0xde, 0xbe, 0x1d, 0x2f, 0xac, 0x07, 0xfc, 0x22, - 0x12, 0x7c, 0x34, 0x6a, 0x86, 0xe7, 0xb6, 0x60, 0x6e, 0x33, 0x64, 0x62, 0xe2, 0x39, 0xac, 0x11, - 0x08, 0x1e, 0x71, 0x5c, 0xcd, 0xe0, 0x86, 0x82, 0xd7, 0x1e, 0x3a, 0x3c, 0x1c, 0xf3, 0xd0, 0x4a, - 0xe0, 0xa6, 0xfa, 0x50, 0xdc, 0xb5, 0xda, 0x90, 0x0f, 0xb9, 0xca, 0xcb, 0x48, 0x65, 0xeb, 0x9f, - 0x08, 0x94, 0x4c, 0xd5, 0x13, 0xab, 0x90, 0xf7, 0x5c, 0x9d, 0x6c, 0x90, 0xcd, 0x0a, 0xcd, 0x7b, - 0x2e, 0x22, 0x14, 0x7d, 0x7b, 0xcc, 0xf4, 0x7c, 0x92, 0x49, 0x62, 0x7c, 0x02, 0x0f, 0x1c, 0x3e, - 0x0e, 0xe2, 0x88, 0x59, 0xb1, 0xef, 0x45, 0xa1, 0x15, 0x30, 0x61, 0x09, 0x36, 0xb2, 0xa7, 0x7a, - 0x61, 0x83, 0x6c, 0x16, 0x69, 0x2d, 0x85, 0x4f, 0x24, 0xda, 0x67, 0x82, 0x4a, 0x0c, 0x9f, 0xc3, - 0x0a, 0xbf, 0xf4, 0x99, 0xb0, 0x6c, 0xd7, 0x15, 0x2c, 0x0c, 0xf5, 0xa2, 0xec, 0xb9, 0xaf, 0x7f, - 0xfb, 0xbc, 0x5d, 0x4b, 0x55, 0xee, 0x29, 0xc4, 0x8c, 0x84, 0xe7, 0x0f, 0xe9, 0x72, 0x42, 0x4f, - 0x73, 0xf5, 0x67, 0xa0, 0xef, 0x05, 0xc1, 0xc8, 0x73, 0xec, 0xc8, 0xe3, 0x7e, 0xaa, 0xb7, 0xcd, - 0xfd, 0xb7, 0xde, 0x10, 0xd7, 0x01, 0x52, 0x53, 0xac, 0xb9, 0xfa, 0x4a, 0x9a, 0x39, 0x74, 0xeb, - 0x5f, 0x08, 0xdc, 0x37, 0x63, 0x59, 0xcc, 0xc4, 0xff, 0x14, 0xe2, 0x0b, 0xa8, 0x30, 0xdf, 0x0d, - 0xb8, 0xe7, 0x47, 0xa1, 0x9e, 0xdf, 0x28, 0x6c, 0x2e, 0xb5, 0x1e, 0x35, 0x6e, 0xf9, 0xdd, 0xc8, - 0x3a, 0x77, 0x52, 0x26, 0xfd, 0x59, 0x83, 0x7b, 0x50, 0x11, 0x6c, 0x62, 0x25, 0x4c, 0xbd, 0x90, - 0x34, 0x78, 0xbc, 0xd8, 0x40, 0xcd, 0xa3, 0x6c, 0xc2, 0xfc, 0x98, 0x99, 0x32, 0x49, 0xcb, 0x82, - 0x4d, 0x92, 0xa8, 0xfe, 0x91, 0x80, 0x76, 0x7b, 0x04, 0x6a, 0x50, 0x88, 0xc5, 0x28, 0x15, 0x2c, - 0x43, 0xdc, 0x85, 0xb2, 0x08, 0x1c, 0x2b, 0x9a, 0x06, 0xea, 0xb2, 0xaa, 0x2d, 0x7d, 0x61, 0x10, - 0xed, 0xb7, 0x07, 0xd3, 0x80, 0xd1, 0x92, 0x08, 0x1c, 0x19, 0xe0, 0x53, 0x28, 0x39, 0x89, 0x11, - 0x61, 0x2a, 0x6e, 0x7d, 0xa1, 0x46, 0x19, 0xd5, 0x0b, 0xa4, 0xe9, 0x34, 0x63, 0xd7, 0xdf, 0xc3, - 0xbd, 0x3f, 0xa8, 0xc6, 0x16, 0x94, 0xb2, 0xcb, 0x25, 0xff, 0xb8, 0xdc, 0x8c, 0x88, 0x3b, 0x50, - 0x9b, 0x5b, 0x24, 0x37, 0xc9, 0x61, 0x7e, 0x64, 0x0f, 0xd5, 0x21, 0xf2, 0x14, 0x33, 0x1f, 0xfa, - 0x73, 0xa4, 0xfe, 0x1a, 0x96, 0x7f, 0x55, 0x85, 0x3b, 0x50, 0xb8, 0x60, 0xd3, 0x64, 0x62, 0xb5, - 0x65, 0xfc, 0xf5, 0x04, 0x21, 0x95, 0x54, 0xac, 0xc1, 0x9d, 0x89, 0x3d, 0x8a, 0xb3, 0xb5, 0x56, - 0x1f, 0x5b, 0x47, 0x50, 0x4a, 0x1d, 0xc2, 0x55, 0x58, 0x3a, 0xe9, 0x1e, 0x75, 0x7b, 0xa7, 0x5d, - 0x8b, 0xf6, 0xdb, 0x5a, 0x0e, 0xcb, 0x50, 0x3c, 0x90, 0x11, 0xc1, 0x15, 0xa8, 0x9c, 0x76, 0xf6, - 0xcd, 0x5e, 0xfb, 0xa8, 0x33, 0xd0, 0xf2, 0xb8, 0x0c, 0xe5, 0x57, 0x66, 0x4f, 0xd1, 0x0a, 0x92, - 0x46, 0x3b, 0xe6, 0x40, 0x2b, 0x6e, 0xed, 0xc0, 0xca, 0x6f, 0x83, 0x11, 0xa1, 0x9a, 0xb5, 0x6c, - 0xf7, 0xba, 0x2f, 0x0f, 0x0f, 0xb4, 0x1c, 0x2e, 0x41, 0x69, 0x70, 0x78, 0xdc, 0xe9, 0x9d, 0x0c, - 0x34, 0xb2, 0x7f, 0xfc, 0x75, 0x66, 0x90, 0xab, 0x99, 0x41, 0xae, 0x67, 0x06, 0xf9, 0x3e, 0x33, - 0xc8, 0x87, 0x1b, 0x23, 0x77, 0x75, 0x63, 0xe4, 0xae, 0x6f, 0x8c, 0xdc, 0x9b, 0xe6, 0xd0, 0x8b, - 0xce, 0xe3, 0xb3, 0x86, 0xc3, 0xc7, 0x4d, 0x79, 0xc2, 0x6d, 0x9f, 0x45, 0x97, 0x5c, 0x5c, 0x34, - 0xe7, 0xaf, 0xc3, 0xbb, 0xec, 0x7d, 0x90, 0x3b, 0x10, 0x9e, 0xdd, 0x4d, 0x7e, 0xee, 0xdd, 0x1f, - 0x01, 0x00, 0x00, 0xff, 0xff, 0x3f, 0x19, 0xf1, 0x60, 0x3f, 0x04, 0x00, 0x00, + // 628 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x54, 0xcf, 0x6e, 0xd3, 0x4e, + 0x10, 0xce, 0xc6, 0xf9, 0xfd, 0x92, 0x4c, 0xdb, 0xd4, 0x1a, 0x82, 0x30, 0x95, 0x6a, 0x95, 0x88, + 0x43, 0x55, 0xa9, 0x49, 0x95, 0x0a, 0x21, 0x0e, 0x08, 0xb5, 0x51, 0xa8, 0xda, 0xaa, 0x49, 0xb4, + 0x4e, 0xa9, 0xc4, 0xc5, 0x72, 0xed, 0x25, 0xb5, 0xea, 0x78, 0xad, 0xb5, 0x9d, 0x92, 0x23, 0x6f, + 0x80, 0x78, 0x05, 0x5e, 0x81, 0x13, 0x4f, 0xc0, 0xb1, 0xe2, 0xd4, 0x23, 0x4a, 0x5f, 0x04, 0xad, + 0xff, 0x04, 0x68, 0x10, 0x88, 0xdb, 0x78, 0xbe, 0x6f, 0x66, 0xbe, 0xfd, 0x76, 0xbc, 0xb0, 0x1e, + 0xf0, 0xcb, 0x48, 0x70, 0xcf, 0x6b, 0x85, 0x17, 0x96, 0x60, 0x4e, 0x2b, 0x64, 0x62, 0xe2, 0xda, + 0xac, 0x19, 0x08, 0x1e, 0x71, 0x5c, 0xcd, 0xe1, 0x66, 0x0a, 0xaf, 0x3d, 0xb4, 0x79, 0x38, 0xe6, + 0xa1, 0x99, 0xc0, 0xad, 0xf4, 0x23, 0xe5, 0xae, 0xd5, 0x47, 0x7c, 0xc4, 0xd3, 0xbc, 0x8c, 0xd2, + 0x6c, 0xe3, 0x23, 0x81, 0xb2, 0x91, 0xf6, 0xc4, 0x1a, 0x14, 0x5d, 0x47, 0x23, 0x1b, 0x64, 0xb3, + 0x4a, 0x8b, 0xae, 0x83, 0x08, 0x25, 0xdf, 0x1a, 0x33, 0xad, 0x98, 0x64, 0x92, 0x18, 0x9f, 0xc0, + 0x03, 0x9b, 0x8f, 0x83, 0x38, 0x62, 0x66, 0xec, 0xbb, 0x51, 0x68, 0x06, 0x4c, 0x98, 0x82, 0x79, + 0xd6, 0x54, 0x53, 0x36, 0xc8, 0x66, 0x89, 0xd6, 0x33, 0xf8, 0x54, 0xa2, 0x03, 0x26, 0xa8, 0xc4, + 0xf0, 0x39, 0xac, 0xf0, 0x2b, 0x9f, 0x09, 0xd3, 0x72, 0x1c, 0xc1, 0xc2, 0x50, 0x2b, 0xc9, 0x9e, + 0xfb, 0xda, 0xd7, 0x4f, 0xdb, 0xf5, 0x4c, 0xe5, 0x5e, 0x8a, 0x18, 0x91, 0x70, 0xfd, 0x11, 0x5d, + 0x4e, 0xe8, 0x59, 0xae, 0xf1, 0x0c, 0xb4, 0xbd, 0x20, 0xf0, 0x5c, 0xdb, 0x8a, 0x5c, 0xee, 0x67, + 0x7a, 0x3b, 0xdc, 0x7f, 0xe3, 0x8e, 0x70, 0x1d, 0x20, 0x33, 0xc5, 0x9c, 0xab, 0xaf, 0x66, 0x99, + 0x43, 0xa7, 0xf1, 0x99, 0xc0, 0x7d, 0x23, 0x96, 0xc5, 0x4c, 0xfc, 0x4b, 0x21, 0xbe, 0x80, 0x2a, + 0xf3, 0x9d, 0x80, 0xbb, 0x7e, 0x14, 0x6a, 0xc5, 0x0d, 0x65, 0x73, 0xa9, 0xfd, 0xa8, 0x79, 0xc7, + 0xef, 0x66, 0xde, 0xb9, 0x9b, 0x31, 0xe9, 0x8f, 0x1a, 0xdc, 0x83, 0xaa, 0x60, 0x13, 0x33, 0x61, + 0x6a, 0x4a, 0xd2, 0xe0, 0xf1, 0x62, 0x83, 0x74, 0x1e, 0x65, 0x13, 0xe6, 0xc7, 0xcc, 0x90, 0x49, + 0x5a, 0x11, 0x6c, 0x92, 0x44, 0x8d, 0x0f, 0x04, 0xd4, 0xbb, 0x23, 0x50, 0x05, 0x25, 0x16, 0x5e, + 0x26, 0x58, 0x86, 0xb8, 0x0b, 0x15, 0x11, 0xd8, 0x66, 0x34, 0x0d, 0xd2, 0xcb, 0xaa, 0xb5, 0xb5, + 0x85, 0x41, 0x74, 0xd0, 0x19, 0x4e, 0x03, 0x46, 0xcb, 0x22, 0xb0, 0x65, 0x80, 0x4f, 0xa1, 0x6c, + 0x27, 0x46, 0x84, 0x99, 0xb8, 0xf5, 0x85, 0x9a, 0xd4, 0xa8, 0x7e, 0x20, 0x4d, 0xa7, 0x39, 0xbb, + 0xf1, 0x8e, 0xc0, 0xbd, 0xdf, 0xc8, 0xc6, 0x36, 0x94, 0xf3, 0xdb, 0x25, 0x7f, 0xb9, 0xdd, 0x9c, + 0x88, 0x3b, 0x50, 0x9f, 0x7b, 0x24, 0x57, 0xc9, 0x66, 0x7e, 0x64, 0x8d, 0x58, 0xb6, 0x4b, 0x98, + 0x1b, 0x31, 0x98, 0x23, 0x47, 0xa5, 0x4a, 0x51, 0x55, 0x1a, 0xaf, 0x60, 0xf9, 0x67, 0x71, 0xb8, + 0x03, 0xca, 0x25, 0x9b, 0x26, 0x73, 0x6b, 0x6d, 0xfd, 0x8f, 0x07, 0x09, 0xa9, 0xa4, 0x62, 0x1d, + 0xfe, 0x9b, 0x58, 0x5e, 0x9c, 0x6f, 0x77, 0xfa, 0xb1, 0x75, 0x0c, 0xe5, 0xcc, 0x28, 0x5c, 0x85, + 0xa5, 0xd3, 0xde, 0x71, 0xaf, 0x7f, 0xd6, 0x33, 0xe9, 0xa0, 0xa3, 0x16, 0xb0, 0x02, 0xa5, 0x03, + 0x19, 0x11, 0x5c, 0x81, 0xea, 0x59, 0x77, 0xdf, 0xe8, 0x77, 0x8e, 0xbb, 0x43, 0xb5, 0x88, 0xcb, + 0x50, 0x39, 0x32, 0xfa, 0x29, 0x4d, 0x91, 0x34, 0xda, 0x35, 0x86, 0x6a, 0x69, 0x6b, 0x07, 0x56, + 0x7e, 0x19, 0x8c, 0x08, 0xb5, 0xbc, 0x65, 0xa7, 0xdf, 0x7b, 0x79, 0x78, 0xa0, 0x16, 0x70, 0x09, + 0xca, 0xc3, 0xc3, 0x93, 0x6e, 0xff, 0x74, 0xa8, 0x92, 0xfd, 0x93, 0x2f, 0x33, 0x9d, 0x5c, 0xcf, + 0x74, 0x72, 0x33, 0xd3, 0xc9, 0xb7, 0x99, 0x4e, 0xde, 0xdf, 0xea, 0x85, 0xeb, 0x5b, 0xbd, 0x70, + 0x73, 0xab, 0x17, 0x5e, 0xb7, 0x46, 0x6e, 0x74, 0x11, 0x9f, 0x37, 0x6d, 0x3e, 0x6e, 0xc9, 0x13, + 0x6e, 0xfb, 0x2c, 0xba, 0xe2, 0xe2, 0xb2, 0x35, 0x7f, 0x24, 0xde, 0xe6, 0xcf, 0x84, 0x5c, 0x85, + 0xf0, 0xfc, 0xff, 0xe4, 0x1f, 0xdf, 0xfd, 0x1e, 0x00, 0x00, 0xff, 0xff, 0x46, 0xaf, 0x53, 0xa2, + 0x46, 0x04, 0x00, 0x00, } func (m *Service) Marshal() (dAtA []byte, err error) { @@ -680,10 +680,9 @@ func (m *ServiceRevenueShare) MarshalToSizedBuffer(dAtA []byte) (int, error) { var l int _ = l if m.RevSharePercentage != 0 { - i -= 4 - encoding_binary.LittleEndian.PutUint32(dAtA[i:], uint32(math.Float32bits(float32(m.RevSharePercentage)))) + i = encodeVarintService(dAtA, i, uint64(m.RevSharePercentage)) i-- - dAtA[i] = 0x15 + dAtA[i] = 0x18 } if len(m.Address) > 0 { i -= len(m.Address) @@ -836,7 +835,7 @@ func (m *ServiceRevenueShare) Size() (n int) { n += 1 + l + sovService(uint64(l)) } if m.RevSharePercentage != 0 { - n += 5 + n += 1 + sovService(uint64(m.RevSharePercentage)) } return n } @@ -1456,17 +1455,25 @@ func (m *ServiceRevenueShare) Unmarshal(dAtA []byte) error { } m.Address = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 2: - if wireType != 5 { + case 3: + if wireType != 0 { return fmt.Errorf("proto: wrong wireType = %d for field RevSharePercentage", wireType) } - var v uint32 - if (iNdEx + 4) > l { - return io.ErrUnexpectedEOF + m.RevSharePercentage = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowService + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.RevSharePercentage |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } } - v = uint32(encoding_binary.LittleEndian.Uint32(dAtA[iNdEx:])) - iNdEx += 4 - m.RevSharePercentage = float32(math.Float32frombits(v)) default: iNdEx = preIndex skippy, err := skipService(dAtA[iNdEx:]) diff --git a/x/shared/types/service_configs.go b/x/shared/types/service_configs.go index 122a10241..bcfb3935e 100644 --- a/x/shared/types/service_configs.go +++ b/x/shared/types/service_configs.go @@ -7,7 +7,7 @@ import ( ) const ( - requiredRevSharePercentageSum = 100 + requiredRevSharePercentageSum = uint64(100) ) // ValidateAppServiceConfigs returns an error if any of the application service configs are invalid @@ -95,7 +95,7 @@ func ValidateSupplierServiceConfigs(services []*SupplierServiceConfig) error { // ensuring that the sum of the revenue share percentages is 100. // NB: This function is unit tested via the supplier staking config tests. func ValidateServiceRevShare(revShareList []*ServiceRevenueShare) error { - revSharePercentageSum := float32(0) + revSharePercentageSum := uint64(0) if len(revShareList) == 0 { return ErrSharedInvalidRevShare.Wrap("no rev share configurations") @@ -106,7 +106,7 @@ func ValidateServiceRevShare(revShareList []*ServiceRevenueShare) error { return ErrSharedInvalidRevShare.Wrap("rev share cannot be nil") } - // Validate the revshare address + // Validate the revenue share address if revShare.Address == "" { return ErrSharedInvalidRevShare.Wrapf("rev share address cannot be empty: %v", revShare) } diff --git a/x/shared/types/session.go b/x/shared/types/session.go index 355d83c1e..a697c70aa 100644 --- a/x/shared/types/session.go +++ b/x/shared/types/session.go @@ -1,7 +1,7 @@ package types // GetSessionStartHeight returns the block height at which the session containing -// queryHeight starts, given the passed shared on-chain parameters. +// queryHeight starts, given the passed shared onchain parameters. // Returns 0 if the block height is not a consensus produced block. // Example: If NumBlocksPerSession == 4, sessions start at blocks 1, 5, 9, etc. func GetSessionStartHeight(sharedParams *Params, queryHeight int64) int64 { @@ -17,7 +17,7 @@ func GetSessionStartHeight(sharedParams *Params, queryHeight int64) int64 { } // GetSessionEndHeight returns the block height at which the session containing -// queryHeight ends, given the passed shared on-chain parameters. +// queryHeight ends, given the passed shared onchain parameters. // Returns 0 if the block height is not a consensus produced block. // Example: If NumBlocksPerSession == 4, sessions end at blocks 4, 8, 11, etc. func GetSessionEndHeight(sharedParams *Params, queryHeight int64) int64 { @@ -32,8 +32,8 @@ func GetSessionEndHeight(sharedParams *Params, queryHeight int64) int64 { } // GetSessionNumber returns the session number of the session containing queryHeight, -// given the passed on-chain shared parameters. -// shared on-chain parameters. +// given the passed onchain shared parameters. +// shared onchain parameters. // Returns session number 0 if the block height is not a consensus produced block. // Returns session number 1 for block 1 to block NumBlocksPerSession - 1 (inclusive). // i.e. If NubBlocksPerSession == 4, session == 1 for [1, 4], session == 2 for [5, 8], etc. @@ -171,7 +171,7 @@ func GetSessionEndToProofWindowCloseBlocks(params *Params) int64 { } // GetSettlementSessionEndHeight returns the end height of the session in which the -// session that includes queryHeight is settled, given the passed shared on-chain parameters. +// session that includes queryHeight is settled, given the passed shared onchain parameters. func GetSettlementSessionEndHeight(sharedParams *Params, queryHeight int64) int64 { return GetSessionEndToProofWindowCloseBlocks(sharedParams) + GetSessionEndHeight(sharedParams, queryHeight) + 1 diff --git a/x/shared/types/supplier.pb.go b/x/shared/types/supplier.pb.go index 2a062c371..dee27dc69 100644 --- a/x/shared/types/supplier.pb.go +++ b/x/shared/types/supplier.pb.go @@ -26,25 +26,26 @@ var _ = math.Inf // proto package needs to be updated. const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package -// Supplier is the type defining the actor in Pocket Network that provides RPC services. +// Supplier represents an actor in Pocket Network that provides RPC services type Supplier struct { - // The address of the owner (i.e. staker, custodial) that owns the funds for staking. - // By default, this address is the one that receives all the rewards unless owtherwise specified. - // This property cannot be updated by the operator. + // Owner address that controls the staked funds and receives rewards by default + // Cannot be updated by the operator OwnerAddress string `protobuf:"bytes,1,opt,name=owner_address,json=ownerAddress,proto3" json:"owner_address,omitempty"` - // The operator address of the supplier operator (i.e. the one managing the off-chain server). - // The operator address can update the supplier's configurations excluding the owner address. - // This property does not change over the supplier's lifespan, the supplier must be unstaked - // and re-staked to effectively update this value. - OperatorAddress string `protobuf:"bytes,2,opt,name=operator_address,json=operatorAddress,proto3" json:"operator_address,omitempty"` - Stake *types.Coin `protobuf:"bytes,3,opt,name=stake,proto3" json:"stake,omitempty"` - Services []*SupplierServiceConfig `protobuf:"bytes,4,rep,name=services,proto3" json:"services,omitempty"` - // The session end height at which an actively unbonding supplier unbonds its stake. - // If the supplier did not unstake, this value will be 0. + // Operator address managing the offchain server + // Immutable for supplier's lifespan - requires unstake/re-stake to change. + // Can update supplier configs except for owner address. + OperatorAddress string `protobuf:"bytes,2,opt,name=operator_address,json=operatorAddress,proto3" json:"operator_address,omitempty"` + // Total amount of staked uPOKT + Stake *types.Coin `protobuf:"bytes,3,opt,name=stake,proto3" json:"stake,omitempty"` + // List of service configurations supported by this supplier + Services []*SupplierServiceConfig `protobuf:"bytes,4,rep,name=services,proto3" json:"services,omitempty"` + // Session end height when supplier initiated unstaking (0 if not unstaking) UnstakeSessionEndHeight uint64 `protobuf:"varint,5,opt,name=unstake_session_end_height,json=unstakeSessionEndHeight,proto3" json:"unstake_session_end_height,omitempty"` - // services_activation_heights_map is a map of serviceIds to the height at - // which the staked supplier will become active for that service. - // Activation heights are session start heights. + // Mapping of serviceIds to their activation heights + // - Key: serviceId + // - Value: Session start height when supplier becomes active for the service + // TODO_MAINNET(@olshansk, #1033): Look into moving this to an external repeated protobuf + // because maps are no longer supported for serialized types in the CosmoSDK. ServicesActivationHeightsMap map[string]uint64 `protobuf:"bytes,6,rep,name=services_activation_heights_map,json=servicesActivationHeightsMap,proto3" json:"services_activation_heights_map,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` } diff --git a/x/supplier/config/supplier_configs_reader.go b/x/supplier/config/supplier_configs_reader.go index c2f009c2e..6c604677e 100644 --- a/x/supplier/config/supplier_configs_reader.go +++ b/x/supplier/config/supplier_configs_reader.go @@ -19,14 +19,14 @@ type YAMLStakeConfig struct { OperatorAddress string `yaml:"operator_address"` StakeAmount string `yaml:"stake_amount"` Services []*YAMLStakeService `yaml:"services"` - DefaultRevSharePercent map[string]float32 `yaml:"default_rev_share_percent"` + DefaultRevSharePercent map[string]uint64 `yaml:"default_rev_share_percent"` } // YAMLStakeService is the structure describing a single service entry in the // stake config file. type YAMLStakeService struct { ServiceId string `yaml:"service_id"` - RevSharePercent map[string]float32 `yaml:"rev_share_percent"` + RevSharePercent map[string]uint64 `yaml:"rev_share_percent"` Endpoints []YAMLServiceEndpoint `yaml:"endpoints"` } @@ -102,7 +102,7 @@ func ParseSupplierConfigs(ctx context.Context, configContent []byte) (*SupplierS ) } - defaultRevSharePercent := map[string]float32{} + defaultRevSharePercent := map[string]uint64{} if len(stakeConfig.DefaultRevSharePercent) == 0 { // Ensure that if no default rev share is provided, the owner address is set // to 100% rev share. diff --git a/x/supplier/config/supplier_configs_reader_test.go b/x/supplier/config/supplier_configs_reader_test.go index f5d557345..5b0f149bc 100644 --- a/x/supplier/config/supplier_configs_reader_test.go +++ b/x/supplier/config/supplier_configs_reader_test.go @@ -287,8 +287,8 @@ func Test_ParseSupplierConfigs_Services(t *testing.T) { owner_address: %s operator_address: %s default_rev_share_percent: - %s: 50.5 - %s: 49.5 + %s: 51 + %s: 49 stake_amount: 1000upokt services: # Service with default rev share @@ -322,11 +322,11 @@ func Test_ParseSupplierConfigs_Services(t *testing.T) { RevShare: []*types.ServiceRevenueShare{ { Address: firstShareHolderAddress, - RevSharePercentage: 50.5, + RevSharePercentage: 51, }, { Address: secondShareHolderAddress, - RevSharePercentage: 49.5, + RevSharePercentage: 49, }, }, }, @@ -728,24 +728,6 @@ func Test_ParseSupplierConfigs_Services(t *testing.T) { `, ownerAddress, operatorAddress, firstShareHolderAddress, ""), expectedError: config.ErrSupplierConfigUnmarshalYAML, }, - { - desc: "negative revenue share allocation is disallowed", - inputConfig: fmt.Sprintf(` - owner_address: %s - operator_address: %s - stake_amount: 1000upokt - services: - - service_id: svc - endpoints: - - publicly_exposed_url: http://pokt.network:8081 - rpc_type: json_rpc - rev_share_percent: - %s: 90 - %s: 11 - %s: -1 - `, ownerAddress, operatorAddress, ownerAddress, firstShareHolderAddress, secondShareHolderAddress), - expectedError: sharedtypes.ErrSharedInvalidRevShare, - }, { desc: "errors when the rev share config is empty", inputConfig: fmt.Sprintf(` diff --git a/x/supplier/keeper/msg_server_unstake_supplier.go b/x/supplier/keeper/msg_server_unstake_supplier.go index 3757a2224..47240db86 100644 --- a/x/supplier/keeper/msg_server_unstake_supplier.go +++ b/x/supplier/keeper/msg_server_unstake_supplier.go @@ -76,10 +76,10 @@ func (k msgServer) UnstakeSupplier( // Mark the supplier as unstaking by recording the height at which it should stop // providing service. // The supplier MUST continue to provide service until the end of the current - // session. I.e., on-chain sessions' suppliers list MUST NOT change mid-session. + // session. I.e., onchain sessions' suppliers list MUST NOT change mid-session. // Removing it right away could have undesired effects on the network // (e.g. a session with less than the minimum or 0 number of suppliers, - // off-chain actors that need to listen to session supplier's change mid-session, etc). + // offchain actors that need to listen to session supplier's change mid-session, etc). supplier.UnstakeSessionEndHeight = uint64(sharedtypes.GetSessionEndHeight(&sharedParams, currentHeight)) k.SetSupplier(ctx, supplier) diff --git a/x/supplier/keeper/query_supplier.go b/x/supplier/keeper/query_supplier.go index 3d370a8fa..bdecfd975 100644 --- a/x/supplier/keeper/query_supplier.go +++ b/x/supplier/keeper/query_supplier.go @@ -24,11 +24,18 @@ func (k Keeper) AllSuppliers( return nil, status.Error(codes.InvalidArgument, "invalid request") } - var suppliers []sharedtypes.Supplier + if err := req.ValidateBasic(); err != nil { + return nil, status.Error(codes.InvalidArgument, err.Error()) + } + // TODO_IMPROVE: Consider adding a custom onchain index (similar to proofs) + // based on other parameters (e.g. serviceId) if/when the performance of the + // flags used to filter the response becomes an issue. store := runtime.KVStoreAdapter(k.storeService.OpenKVStore(ctx)) supplierStore := prefix.NewStore(store, types.KeyPrefix(types.SupplierKeyOperatorPrefix)) + var suppliers []sharedtypes.Supplier + pageRes, err := query.Paginate( supplierStore, req.Pagination, @@ -40,6 +47,25 @@ func (k Keeper) AllSuppliers( return status.Error(codes.Internal, err.Error()) } + serviceIdFilter := req.GetServiceId() + if serviceIdFilter != "" { + hasService := false + for _, supplierServiceConfig := range supplier.Services { + if supplierServiceConfig.ServiceId == serviceIdFilter { + hasService = true + break + } + } + // Do not include the current supplier in the list returned. + if !hasService { + return nil + } + } + + // TODO_MAINNET(@olshansk, #1033): Newer version of the CosmosSDK doesn't support maps. + // Decide on a direction w.r.t maps in protos based on feedback from the CosmoSDK team. + supplier.ServicesActivationHeightsMap = nil + suppliers = append(suppliers, supplier) return nil }, @@ -62,10 +88,13 @@ func (k Keeper) Supplier( supplier, found := k.GetSupplier(ctx, req.OperatorAddress) if !found { - // TODO_TECHDEBT(@bryanchriswhite, #384): conform to logging conventions once established - msg := fmt.Sprintf("supplier with address %q", req.GetOperatorAddress()) + msg := fmt.Sprintf("supplier with address: %q", req.GetOperatorAddress()) return nil, status.Error(codes.NotFound, msg) } + // TODO_MAINNET(@olshansk, #1033): Newer version of the CosmosSDK doesn't support maps. + // Decide on a direction w.r.t maps in protos based on feedback from the CosmoSDK team. + supplier.ServicesActivationHeightsMap = nil + return &types.QueryGetSupplierResponse{Supplier: supplier}, nil } diff --git a/x/supplier/keeper/query_supplier_test.go b/x/supplier/keeper/query_supplier_test.go index b0d448ec4..880f815f9 100644 --- a/x/supplier/keeper/query_supplier_test.go +++ b/x/supplier/keeper/query_supplier_test.go @@ -1,6 +1,7 @@ package keeper_test import ( + "fmt" "strconv" "testing" @@ -11,6 +12,7 @@ import ( keepertest "github.com/pokt-network/poktroll/testutil/keeper" "github.com/pokt-network/poktroll/testutil/nullify" + "github.com/pokt-network/poktroll/testutil/sample" "github.com/pokt-network/poktroll/x/supplier/types" ) @@ -20,6 +22,8 @@ var _ = strconv.IntSize func TestSupplierQuerySingle(t *testing.T) { supplierModuleKeepers, ctx := keepertest.SupplierKeeper(t) suppliers := createNSuppliers(*supplierModuleKeepers.Keeper, ctx, 2) + supplierAddr := sample.AccAddress() + tests := []struct { desc string request *types.QueryGetSupplierRequest @@ -43,9 +47,9 @@ func TestSupplierQuerySingle(t *testing.T) { { desc: "KeyNotFound", request: &types.QueryGetSupplierRequest{ - OperatorAddress: strconv.Itoa(100000), + OperatorAddress: supplierAddr, }, - expectedErr: status.Error(codes.NotFound, "supplier with address \"100000\""), + expectedErr: status.Error(codes.NotFound, fmt.Sprintf("supplier with address: \"%s\"", supplierAddr)), }, { desc: "InvalidRequest", @@ -70,7 +74,13 @@ func TestSupplierQuerySingle(t *testing.T) { func TestSupplierQueryPaginated(t *testing.T) { supplierModuleKeepers, ctx := keepertest.SupplierKeeper(t) - msgs := createNSuppliers(*supplierModuleKeepers.Keeper, ctx, 5) + suppliers := createNSuppliers(*supplierModuleKeepers.Keeper, ctx, 5) + + // TODO_MAINNET(@olshansk, #1033): Newer version of the CosmosSDK doesn't support maps. + // Decide on a direction w.r.t maps in protos based on feedback from the CosmoSDK team. + for _, supplier := range suppliers { + supplier.ServicesActivationHeightsMap = nil + } request := func(next []byte, offset, limit uint64, total bool) *types.QueryAllSuppliersRequest { return &types.QueryAllSuppliersRequest{ @@ -84,12 +94,12 @@ func TestSupplierQueryPaginated(t *testing.T) { } t.Run("ByOffset", func(t *testing.T) { step := 2 - for i := 0; i < len(msgs); i += step { + for i := 0; i < len(suppliers); i += step { resp, err := supplierModuleKeepers.AllSuppliers(ctx, request(nil, uint64(i), uint64(step), false)) require.NoError(t, err) require.LessOrEqual(t, len(resp.Supplier), step) require.Subset(t, - nullify.Fill(msgs), + nullify.Fill(suppliers), nullify.Fill(resp.Supplier), ) } @@ -97,12 +107,12 @@ func TestSupplierQueryPaginated(t *testing.T) { t.Run("ByKey", func(t *testing.T) { step := 2 var next []byte - for i := 0; i < len(msgs); i += step { + for i := 0; i < len(suppliers); i += step { resp, err := supplierModuleKeepers.AllSuppliers(ctx, request(next, 0, uint64(step), false)) require.NoError(t, err) require.LessOrEqual(t, len(resp.Supplier), step) require.Subset(t, - nullify.Fill(msgs), + nullify.Fill(suppliers), nullify.Fill(resp.Supplier), ) next = resp.Pagination.NextKey @@ -111,9 +121,9 @@ func TestSupplierQueryPaginated(t *testing.T) { t.Run("Total", func(t *testing.T) { resp, err := supplierModuleKeepers.AllSuppliers(ctx, request(nil, 0, 0, true)) require.NoError(t, err) - require.Equal(t, len(msgs), int(resp.Pagination.Total)) + require.Equal(t, len(suppliers), int(resp.Pagination.Total)) require.ElementsMatch(t, - nullify.Fill(msgs), + nullify.Fill(suppliers), nullify.Fill(resp.Supplier), ) }) @@ -122,3 +132,39 @@ func TestSupplierQueryPaginated(t *testing.T) { require.ErrorIs(t, err, status.Error(codes.InvalidArgument, "invalid request")) }) } + +func TestSupplierQueryFilterByServiceId(t *testing.T) { + supplierModuleKeepers, ctx := keepertest.SupplierKeeper(t) + suppliers := createNSuppliers(*supplierModuleKeepers.Keeper, ctx, 5) + + // Get the first service ID from the first supplier to use as filter + firstServiceId := suppliers[0].Services[0].ServiceId + + request := &types.QueryAllSuppliersRequest{ + Filter: &types.QueryAllSuppliersRequest_ServiceId{ + ServiceId: firstServiceId, + }, + Pagination: &query.PageRequest{ + Limit: uint64(len(suppliers)), + }, + } + + resp, err := supplierModuleKeepers.AllSuppliers(ctx, request) + require.NoError(t, err) + + // createNSuppliers assigns a separate service to each supplier + // so we can only expect one supplier to have the filtered service. + require.Len(t, resp.Supplier, 1) + + // Verify each returned supplier has the filtered service + for _, supplier := range resp.Supplier { + hasService := false + for _, service := range supplier.Services { + if service.ServiceId == firstServiceId { + hasService = true + break + } + } + require.True(t, hasService, "Supplier should have the filtered service") + } +} diff --git a/x/supplier/keeper/supplier_test.go b/x/supplier/keeper/supplier_test.go index 8cbddd555..cde7952c5 100644 --- a/x/supplier/keeper/supplier_test.go +++ b/x/supplier/keeper/supplier_test.go @@ -8,8 +8,11 @@ import ( "cosmossdk.io/math" sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/cosmos/cosmos-sdk/types/query" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" + "github.com/gogo/status" "github.com/stretchr/testify/require" + "google.golang.org/grpc/codes" "github.com/pokt-network/poktroll/cmd/poktrolld/cmd" keepertest "github.com/pokt-network/poktroll/testutil/keeper" @@ -27,13 +30,7 @@ func init() { cmd.InitSDKConfig() } -// The module address is derived off of its semantic name. -// This test is a helper for us to easily identify the underlying address. -func TestModuleAddressSupplier(t *testing.T) { - moduleAddress := authtypes.NewModuleAddress(types.ModuleName) - require.Equal(t, "pokt1j40dzzmn6cn9kxku7a5tjnud6hv37vesr5ccaa", moduleAddress.String()) -} - +// createNSuppliers creates n suppliers and stores them in the keeper func createNSuppliers(keeper keeper.Keeper, ctx context.Context, n int) []sharedtypes.Supplier { suppliers := make([]sharedtypes.Supplier, n) for i := range suppliers { @@ -59,7 +56,15 @@ func createNSuppliers(keeper keeper.Keeper, ctx context.Context, n int) []shared return suppliers } -func TestSupplierGet(t *testing.T) { +// DEV_NOTE: The account address is derived off of the module's semantic name (supplier). +// This test is a helper for us to easily identify the underlying address. +// See Module Accounts for more details: https://docs.cosmos.network/main/learn/beginner/accounts#module-accounts +func TestModuleAddressSupplier(t *testing.T) { + moduleAddress := authtypes.NewModuleAddress(types.ModuleName) + require.Equal(t, "pokt1j40dzzmn6cn9kxku7a5tjnud6hv37vesr5ccaa", moduleAddress.String()) +} + +func TestSupplier_Get(t *testing.T) { supplierModuleKeepers, ctx := keepertest.SupplierKeeper(t) suppliers := createNSuppliers(*supplierModuleKeepers.Keeper, ctx, 10) for _, supplier := range suppliers { @@ -74,7 +79,7 @@ func TestSupplierGet(t *testing.T) { } } -func TestSupplierRemove(t *testing.T) { +func TestSupplier_Remove(t *testing.T) { supplierModuleKeepers, ctx := keepertest.SupplierKeeper(t) suppliers := createNSuppliers(*supplierModuleKeepers.Keeper, ctx, 10) for _, supplier := range suppliers { @@ -86,7 +91,7 @@ func TestSupplierRemove(t *testing.T) { } } -func TestSupplierGetAll(t *testing.T) { +func TestSupplier_GetAll(t *testing.T) { supplierModuleKeepers, ctx := keepertest.SupplierKeeper(t) suppliers := createNSuppliers(*supplierModuleKeepers.Keeper, ctx, 10) require.ElementsMatch(t, @@ -94,3 +99,145 @@ func TestSupplierGetAll(t *testing.T) { nullify.Fill(supplierModuleKeepers.GetAllSuppliers(ctx)), ) } + +func TestSupplier_Query(t *testing.T) { + keeper, ctx := keepertest.SupplierKeeper(t) + suppliers := createNSuppliers(*keeper.Keeper, ctx, 2) + + tests := []struct { + desc string + request *types.QueryGetSupplierRequest + response *types.QueryGetSupplierResponse + expectedErr error + }{ + { + desc: "supplier found", + request: &types.QueryGetSupplierRequest{ + OperatorAddress: suppliers[0].OperatorAddress, + }, + response: &types.QueryGetSupplierResponse{ + Supplier: suppliers[0], + }, + }, + { + desc: "supplier not found", + request: &types.QueryGetSupplierRequest{ + OperatorAddress: "non_existent_address", + }, + expectedErr: status.Error(codes.NotFound, fmt.Sprintf("supplier with address: %q", "non_existent_address")), + }, + } + + for _, test := range tests { + t.Run(test.desc, func(t *testing.T) { + response, err := keeper.Supplier(ctx, test.request) + if test.expectedErr != nil { + stat, ok := status.FromError(test.expectedErr) + require.True(t, ok) + require.ErrorContains(t, stat.Err(), test.expectedErr.Error()) + } else { + require.NoError(t, err) + require.NotNil(t, response) + require.Equal(t, + nullify.Fill(test.response), + nullify.Fill(response), + ) + } + }) + } +} + +func TestSuppliers_QueryAll_Pagination(t *testing.T) { + keeper, ctx := keepertest.SupplierKeeper(t) + suppliers := createNSuppliers(*keeper.Keeper, ctx, 5) + + t.Run("ByOffset", func(t *testing.T) { + step := 2 + for i := 0; i < len(suppliers); i += step { + req := &types.QueryAllSuppliersRequest{ + Pagination: &query.PageRequest{ + Offset: uint64(i), + Limit: uint64(step), + }, + } + resp, err := keeper.AllSuppliers(ctx, req) + require.NoError(t, err) + require.LessOrEqual(t, len(resp.Supplier), step) + require.Subset(t, + nullify.Fill(suppliers), + nullify.Fill(resp.Supplier), + ) + } + }) + + t.Run("ByKey", func(t *testing.T) { + step := 2 + var nextKey []byte + for i := 0; i < len(suppliers); i += step { + req := &types.QueryAllSuppliersRequest{ + Pagination: &query.PageRequest{ + Key: nextKey, + Limit: uint64(step), + }, + } + resp, err := keeper.AllSuppliers(ctx, req) + require.NoError(t, err) + require.LessOrEqual(t, len(resp.Supplier), step) + require.Subset(t, + nullify.Fill(suppliers), + nullify.Fill(resp.Supplier), + ) + nextKey = resp.Pagination.NextKey + } + }) + + t.Run("Total", func(t *testing.T) { + req := &types.QueryAllSuppliersRequest{ + Pagination: &query.PageRequest{ + Offset: 0, + Limit: uint64(len(suppliers)), + CountTotal: true, + }, + } + resp, err := keeper.AllSuppliers(ctx, req) + require.NoError(t, err) + require.Equal(t, len(suppliers), int(resp.Pagination.Total)) + require.ElementsMatch(t, + nullify.Fill(suppliers), + nullify.Fill(resp.Supplier), + ) + }) +} + +func TestSuppliers_QueryAll_Filters(t *testing.T) { + keeper, ctx := keepertest.SupplierKeeper(t) + suppliers := createNSuppliers(*keeper.Keeper, ctx, 5) + + t.Run("Filter By ServiceId", func(t *testing.T) { + // Assuming the first supplier has at least one service + serviceId := suppliers[0].Services[0].ServiceId + req := &types.QueryAllSuppliersRequest{ + Pagination: &query.PageRequest{ + Offset: 0, + Limit: uint64(len(suppliers)), + }, + Filter: &types.QueryAllSuppliersRequest_ServiceId{ + ServiceId: serviceId, + }, + } + resp, err := keeper.AllSuppliers(ctx, req) + require.NoError(t, err) + + // Verify each returned supplier has the specified service + for _, s := range resp.Supplier { + hasService := false + for _, service := range s.Services { + if service.ServiceId == serviceId { + hasService = true + break + } + } + require.True(t, hasService, "Returned supplier does not have the specified service") + } + }) +} diff --git a/x/supplier/module/autocli.go b/x/supplier/module/autocli.go index 716e3774f..a64176dd8 100644 --- a/x/supplier/module/autocli.go +++ b/x/supplier/module/autocli.go @@ -10,30 +10,58 @@ import ( func (am AppModule) AutoCLIOptions() *autocliv1.ModuleOptions { return &autocliv1.ModuleOptions{ Query: &autocliv1.ServiceCommandDescriptor{ - Service: modulev1.Query_ServiceDesc.ServiceName, + Service: modulev1.Query_ServiceDesc.ServiceName, + EnhanceCustomCommand: true, // only required if you want to use the custom command (for backwards compatibility) RpcCommandOptions: []*autocliv1.RpcCommandOptions{ - //{ - // RpcMethod: "Params", - // Use: "params", - // Short: "Shows the parameters of the module", - //}, - //{ - // RpcMethod: "AllSuppliers", - // Use: "list-supplier", - // Short: "List all supplier", - //}, - //{ - // RpcMethod: "Supplier", - // Use: "show-supplier [id]", - // Short: "Shows a supplier", - // PositionalArgs: []*autocliv1.PositionalArgDescriptor{{ProtoField: "index"}}, - //}, + // { + // RpcMethod: "Params", + // Use: "params", + // Short: "Shows the parameters of the module", + // }, + { + Alias: []string{"suppliers", "ls"}, + RpcMethod: "AllSuppliers", + Use: "list-suppliers", + Short: "List all suppliers on Pocket Network", + Long: `Retrieves a paginated list of all suppliers currently registered on Pocket Network, including all their details. + +The command supports optional filtering by service ID and pagination parameters. +Returns supplier addresses, staked amounts, service details, and current status.`, + + Example: ` poktrolld query supplier list-suppliers + poktrolld query supplier list-suppliers --service-id anvil + poktrolld query supplier list-suppliers --page 2 --limit 50 + poktrolld query supplier list-suppliers --service-id anvil --page 1 --limit 100`, + FlagOptions: map[string]*autocliv1.FlagOptions{ + "service_id": {Name: "service-id", Shorthand: "s", Usage: "service id to filter by", Hidden: false}, + }, + }, + { + Alias: []string{"supplier", "s"}, + RpcMethod: "Supplier", + Use: "show-supplier [operator_address]", + Short: "Shows detailed information about a specific supplier", + Long: `Retrieves comprehensive information about a supplier identified by their address. + +Returns details include things like: +- Supplier's staked amount and status +- List of services they provide`, + + Example: ` poktrolld query supplier show-supplier pokt1abc...xyz + poktrolld query supplier show-supplier pokt1abc...xyz --output json + poktrolld query supplier show-supplier pokt1abc...xyz --height 100`, + PositionalArgs: []*autocliv1.PositionalArgDescriptor{ + { + ProtoField: "operator_address", + }, + }, + }, // this line is used by ignite scaffolding # autocli/query }, }, Tx: &autocliv1.ServiceCommandDescriptor{ Service: modulev1.Msg_ServiceDesc.ServiceName, - EnhanceCustomCommand: true, // only required if you want to use the custom command + EnhanceCustomCommand: true, // only required if you want to use the custom command (for backwards compatibility) RpcCommandOptions: []*autocliv1.RpcCommandOptions{ //{ // RpcMethod: "UpdateParams", diff --git a/x/supplier/module/flags.go b/x/supplier/module/flags.go new file mode 100644 index 000000000..e4b1cbd9e --- /dev/null +++ b/x/supplier/module/flags.go @@ -0,0 +1,5 @@ +package supplier + +const ( + FlagServiceId = "service-id" +) diff --git a/x/supplier/module/query.go b/x/supplier/module/query.go index b49ebf142..bb81daf33 100644 --- a/x/supplier/module/query.go +++ b/x/supplier/module/query.go @@ -22,8 +22,6 @@ func (am AppModule) GetQueryCmd() *cobra.Command { } cmd.AddCommand(CmdQueryParams()) - cmd.AddCommand(CmdListSuppliers()) - cmd.AddCommand(CmdShowSupplier()) // this line is used by starport scaffolding # 1 return cmd diff --git a/x/supplier/module/query_supplier.go b/x/supplier/module/query_supplier.go deleted file mode 100644 index 81a18454e..000000000 --- a/x/supplier/module/query_supplier.go +++ /dev/null @@ -1,78 +0,0 @@ -package supplier - -import ( - "github.com/cosmos/cosmos-sdk/client" - "github.com/cosmos/cosmos-sdk/client/flags" - "github.com/spf13/cobra" - - "github.com/pokt-network/poktroll/x/supplier/types" -) - -func CmdListSuppliers() *cobra.Command { - cmd := &cobra.Command{ - Use: "list-supplier", - Short: "list all supplier", - RunE: func(cmd *cobra.Command, args []string) error { - clientCtx, err := client.GetClientQueryContext(cmd) - if err != nil { - return err - } - - pageReq, err := client.ReadPageRequest(cmd.Flags()) - if err != nil { - return err - } - - queryClient := types.NewQueryClient(clientCtx) - - params := &types.QueryAllSuppliersRequest{ - Pagination: pageReq, - } - - res, err := queryClient.AllSuppliers(cmd.Context(), params) - if err != nil { - return err - } - - return clientCtx.PrintProto(res) - }, - } - - flags.AddPaginationFlagsToCmd(cmd, cmd.Use) - flags.AddQueryFlagsToCmd(cmd) - - return cmd -} - -func CmdShowSupplier() *cobra.Command { - cmd := &cobra.Command{ - Use: "show-supplier ", - Short: "shows a supplier", - Args: cobra.ExactArgs(1), - RunE: func(cmd *cobra.Command, args []string) (err error) { - clientCtx, err := client.GetClientQueryContext(cmd) - if err != nil { - return err - } - - queryClient := types.NewQueryClient(clientCtx) - - argAddress := args[0] - - params := &types.QueryGetSupplierRequest{ - OperatorAddress: argAddress, - } - - res, err := queryClient.Supplier(cmd.Context(), params) - if err != nil { - return err - } - - return clientCtx.PrintProto(res) - }, - } - - flags.AddQueryFlagsToCmd(cmd) - - return cmd -} diff --git a/x/supplier/module/query_supplier_test.go b/x/supplier/module/query_supplier_test.go deleted file mode 100644 index 78c529d90..000000000 --- a/x/supplier/module/query_supplier_test.go +++ /dev/null @@ -1,140 +0,0 @@ -package supplier_test - -import ( - "fmt" - "strconv" - "testing" - - cometcli "github.com/cometbft/cometbft/libs/cli" - "github.com/cosmos/cosmos-sdk/client/flags" - clitestutil "github.com/cosmos/cosmos-sdk/testutil/cli" - "github.com/stretchr/testify/require" - "google.golang.org/grpc/codes" - "google.golang.org/grpc/status" - - "github.com/pokt-network/poktroll/testutil/nullify" - sharedtypes "github.com/pokt-network/poktroll/x/shared/types" - supplier "github.com/pokt-network/poktroll/x/supplier/module" - "github.com/pokt-network/poktroll/x/supplier/types" -) - -func TestShowSupplier(t *testing.T) { - net, suppliers := networkWithSupplierObjects(t, 2) - - ctx := net.Validators[0].ClientCtx - common := []string{ - fmt.Sprintf("--%s=json", cometcli.OutputFlag), - } - tests := []struct { - desc string - idAddress string - - args []string - expectedErr error - supplier sharedtypes.Supplier - }{ - { - desc: "supplier found", - idAddress: suppliers[0].OperatorAddress, - - args: common, - supplier: suppliers[0], - }, - { - desc: "supplier not found", - idAddress: strconv.Itoa(100000), - - args: common, - expectedErr: status.Error(codes.NotFound, "not found"), - }, - } - for _, test := range tests { - t.Run(test.desc, func(t *testing.T) { - args := []string{ - test.idAddress, - } - args = append(args, test.args...) - out, err := clitestutil.ExecTestCLICmd(ctx, supplier.CmdShowSupplier(), args) - if test.expectedErr != nil { - stat, ok := status.FromError(test.expectedErr) - require.True(t, ok) - require.ErrorIs(t, stat.Err(), test.expectedErr) - } else { - require.NoError(t, err) - var resp types.QueryGetSupplierResponse - require.NoError(t, net.Config.Codec.UnmarshalJSON(out.Bytes(), &resp)) - require.NotNil(t, resp.Supplier) - require.Equal(t, - nullify.Fill(&test.supplier), - nullify.Fill(&resp.Supplier), - ) - } - }) - } -} - -func TestListSuppliers(t *testing.T) { - net, suppliers := networkWithSupplierObjects(t, 5) - - ctx := net.Validators[0].ClientCtx - request := func(next []byte, offset, limit uint64, total bool) []string { - args := []string{ - fmt.Sprintf("--%s=json", cometcli.OutputFlag), - } - if next == nil { - args = append(args, fmt.Sprintf("--%s=%d", flags.FlagOffset, offset)) - } else { - args = append(args, fmt.Sprintf("--%s=%s", flags.FlagPageKey, next)) - } - args = append(args, fmt.Sprintf("--%s=%d", flags.FlagLimit, limit)) - if total { - args = append(args, fmt.Sprintf("--%s", flags.FlagCountTotal)) - } - return args - } - t.Run("ByOffset", func(t *testing.T) { - step := 2 - for i := 0; i < len(suppliers); i += step { - args := request(nil, uint64(i), uint64(step), false) - out, err := clitestutil.ExecTestCLICmd(ctx, supplier.CmdListSuppliers(), args) - require.NoError(t, err) - var resp types.QueryAllSuppliersResponse - require.NoError(t, net.Config.Codec.UnmarshalJSON(out.Bytes(), &resp)) - require.LessOrEqual(t, len(resp.Supplier), step) - require.Subset(t, - nullify.Fill(suppliers), - nullify.Fill(resp.Supplier), - ) - } - }) - t.Run("ByKey", func(t *testing.T) { - step := 2 - var next []byte - for i := 0; i < len(suppliers); i += step { - args := request(next, 0, uint64(step), false) - out, err := clitestutil.ExecTestCLICmd(ctx, supplier.CmdListSuppliers(), args) - require.NoError(t, err) - var resp types.QueryAllSuppliersResponse - require.NoError(t, net.Config.Codec.UnmarshalJSON(out.Bytes(), &resp)) - require.LessOrEqual(t, len(resp.Supplier), step) - require.Subset(t, - nullify.Fill(suppliers), - nullify.Fill(resp.Supplier), - ) - next = resp.Pagination.NextKey - } - }) - t.Run("Total", func(t *testing.T) { - args := request(nil, 0, uint64(len(suppliers)), true) - out, err := clitestutil.ExecTestCLICmd(ctx, supplier.CmdListSuppliers(), args) - require.NoError(t, err) - var resp types.QueryAllSuppliersResponse - require.NoError(t, net.Config.Codec.UnmarshalJSON(out.Bytes(), &resp)) - require.NoError(t, err) - require.Equal(t, len(suppliers), int(resp.Pagination.Total)) - require.ElementsMatch(t, - nullify.Fill(suppliers), - nullify.Fill(resp.Supplier), - ) - }) -} diff --git a/x/supplier/types/errors.go b/x/supplier/types/errors.go index c6188aade..d3a615a3b 100644 --- a/x/supplier/types/errors.go +++ b/x/supplier/types/errors.go @@ -15,4 +15,5 @@ var ( ErrSupplierServiceNotFound = sdkerrors.Register(ModuleName, 1106, "service not found") ErrSupplierParamInvalid = sdkerrors.Register(ModuleName, 1107, "the provided param is invalid") ErrSupplierEmitEvent = sdkerrors.Register(ModuleName, 1108, "failed to emit event") + ErrSupplierInvalidServiceId = sdkerrors.Register(ModuleName, 1109, "invalid service ID") ) diff --git a/x/supplier/types/event.pb.go b/x/supplier/types/event.pb.go index 49c1cc28b..a797d281b 100644 --- a/x/supplier/types/event.pb.go +++ b/x/supplier/types/event.pb.go @@ -54,7 +54,7 @@ func (SupplierUnbondingReason) EnumDescriptor() ([]byte, []int) { return fileDescriptor_22d2d1a82853ce0a, []int{0} } -// EventSupplierStaked is emitted when a supplier stake message is committed on-chain. +// EventSupplierStaked is emitted when a supplier stake message is committed onchain. type EventSupplierStaked struct { Supplier *types.Supplier `protobuf:"bytes,1,opt,name=supplier,proto3" json:"supplier"` // The session end height of the last session in which the supplier was staked. @@ -105,7 +105,7 @@ func (m *EventSupplierStaked) GetSessionEndHeight() int64 { } // EventSupplierUnbondingBegin is emitted when an application unstake message -// is committed on-chain, indicating that the supplier will now begin unbonding. +// is committed onchain, indicating that the supplier will now begin unbonding. type EventSupplierUnbondingBegin struct { Supplier *types.Supplier `protobuf:"bytes,1,opt,name=supplier,proto3" json:"supplier"` Reason SupplierUnbondingReason `protobuf:"varint,2,opt,name=reason,proto3,enum=poktroll.supplier.SupplierUnbondingReason" json:"reason"` diff --git a/x/supplier/types/query.pb.go b/x/supplier/types/query.pb.go index fc4da1c09..739fb0ef7 100644 --- a/x/supplier/types/query.pb.go +++ b/x/supplier/types/query.pb.go @@ -191,6 +191,9 @@ func (m *QueryGetSupplierResponse) GetSupplier() types.Supplier { type QueryAllSuppliersRequest struct { Pagination *query.PageRequest `protobuf:"bytes,1,opt,name=pagination,proto3" json:"pagination,omitempty"` + // Types that are valid to be assigned to Filter: + // *QueryAllSuppliersRequest_ServiceId + Filter isQueryAllSuppliersRequest_Filter `protobuf_oneof:"filter"` } func (m *QueryAllSuppliersRequest) Reset() { *m = QueryAllSuppliersRequest{} } @@ -222,6 +225,25 @@ func (m *QueryAllSuppliersRequest) XXX_DiscardUnknown() { var xxx_messageInfo_QueryAllSuppliersRequest proto.InternalMessageInfo +type isQueryAllSuppliersRequest_Filter interface { + isQueryAllSuppliersRequest_Filter() + MarshalTo([]byte) (int, error) + Size() int +} + +type QueryAllSuppliersRequest_ServiceId struct { + ServiceId string `protobuf:"bytes,2,opt,name=service_id,json=serviceId,proto3,oneof" json:"service_id,omitempty"` +} + +func (*QueryAllSuppliersRequest_ServiceId) isQueryAllSuppliersRequest_Filter() {} + +func (m *QueryAllSuppliersRequest) GetFilter() isQueryAllSuppliersRequest_Filter { + if m != nil { + return m.Filter + } + return nil +} + func (m *QueryAllSuppliersRequest) GetPagination() *query.PageRequest { if m != nil { return m.Pagination @@ -229,6 +251,20 @@ func (m *QueryAllSuppliersRequest) GetPagination() *query.PageRequest { return nil } +func (m *QueryAllSuppliersRequest) GetServiceId() string { + if x, ok := m.GetFilter().(*QueryAllSuppliersRequest_ServiceId); ok { + return x.ServiceId + } + return "" +} + +// XXX_OneofWrappers is for the internal use of the proto package. +func (*QueryAllSuppliersRequest) XXX_OneofWrappers() []interface{} { + return []interface{}{ + (*QueryAllSuppliersRequest_ServiceId)(nil), + } +} + type QueryAllSuppliersResponse struct { Supplier []types.Supplier `protobuf:"bytes,1,rep,name=supplier,proto3" json:"supplier"` Pagination *query.PageResponse `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination,omitempty"` @@ -289,43 +325,45 @@ func init() { func init() { proto.RegisterFile("poktroll/supplier/query.proto", fileDescriptor_7a8c18c53656bd0d) } var fileDescriptor_7a8c18c53656bd0d = []byte{ - // 567 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x94, 0x31, 0x6f, 0x13, 0x31, - 0x14, 0xc7, 0xe3, 0x16, 0xa2, 0xd6, 0x20, 0x41, 0x4d, 0x24, 0x92, 0x08, 0x0e, 0x74, 0x12, 0x21, - 0x0a, 0xd4, 0x26, 0x65, 0x2c, 0x0c, 0x4d, 0x25, 0x3a, 0x52, 0x92, 0x01, 0x89, 0x81, 0xca, 0x49, - 0xac, 0xeb, 0xa9, 0x97, 0xb3, 0x6b, 0x3b, 0x40, 0x85, 0x58, 0x58, 0x58, 0x91, 0x18, 0x99, 0xd8, - 0x3a, 0x32, 0xf0, 0x21, 0x3a, 0x56, 0xb0, 0x54, 0x0c, 0x08, 0x25, 0x48, 0x7c, 0x0d, 0x14, 0xdb, - 0x97, 0xa6, 0xdc, 0x45, 0x49, 0x97, 0xc8, 0xe7, 0xf7, 0xff, 0xbf, 0xf7, 0xf3, 0x7b, 0x4f, 0x81, - 0x37, 0x05, 0xdf, 0xd3, 0x92, 0x47, 0x11, 0x51, 0x7d, 0x21, 0xa2, 0x90, 0x49, 0xb2, 0xdf, 0x67, - 0xf2, 0x00, 0x0b, 0xc9, 0x35, 0x47, 0x2b, 0x49, 0x18, 0x27, 0xe1, 0xf2, 0x0a, 0xed, 0x85, 0x31, - 0x27, 0xe6, 0xd7, 0xaa, 0xca, 0x85, 0x80, 0x07, 0xdc, 0x1c, 0xc9, 0xe8, 0xe4, 0x6e, 0x6f, 0x04, - 0x9c, 0x07, 0x11, 0x23, 0x54, 0x84, 0x84, 0xc6, 0x31, 0xd7, 0x54, 0x87, 0x3c, 0x56, 0x2e, 0x5a, - 0xea, 0x70, 0xd5, 0xe3, 0x6a, 0xc7, 0xda, 0xec, 0x87, 0x0b, 0xd5, 0xec, 0x17, 0x69, 0x53, 0xc5, - 0x2c, 0x0d, 0x79, 0x55, 0x6f, 0x33, 0x4d, 0xeb, 0x44, 0xd0, 0x20, 0x8c, 0x4d, 0x1e, 0xa7, 0xf5, - 0x26, 0xb5, 0x89, 0xaa, 0xc3, 0xc3, 0x71, 0x3c, 0xfd, 0x3e, 0x41, 0x25, 0xed, 0xa9, 0x74, 0x7c, - 0x97, 0x4a, 0xd6, 0x1d, 0xcb, 0x6c, 0xdc, 0x2f, 0x40, 0xf4, 0x6c, 0x44, 0xb0, 0x6d, 0x4c, 0x4d, - 0xb6, 0xdf, 0x67, 0x4a, 0xfb, 0x2d, 0x78, 0xed, 0xcc, 0xad, 0x12, 0x3c, 0x56, 0x0c, 0x3d, 0x82, - 0x79, 0x9b, 0xbc, 0x08, 0x6e, 0x83, 0xea, 0xa5, 0xb5, 0x12, 0x4e, 0xb5, 0x0f, 0x5b, 0x4b, 0x63, - 0xf9, 0xe8, 0xd7, 0xad, 0xdc, 0xe1, 0xdf, 0xaf, 0x35, 0xd0, 0x74, 0x1e, 0xff, 0x25, 0xbc, 0x6e, - 0x92, 0x6e, 0x31, 0xdd, 0x72, 0x6a, 0x57, 0x0f, 0x6d, 0xc2, 0xab, 0x5c, 0x30, 0x49, 0x35, 0x97, - 0x3b, 0xb4, 0xdb, 0x95, 0x4c, 0xd9, 0x12, 0xcb, 0x8d, 0xe2, 0xf7, 0x6f, 0xab, 0x05, 0xd7, 0xbd, - 0x0d, 0x1b, 0x69, 0x69, 0x19, 0xc6, 0x41, 0xf3, 0x4a, 0xe2, 0x70, 0xd7, 0xfe, 0x73, 0x58, 0x4c, - 0xe7, 0x77, 0xe4, 0xeb, 0x70, 0x29, 0x21, 0xcc, 0x60, 0x37, 0x9d, 0xc1, 0x89, 0xa9, 0x71, 0x61, - 0xc4, 0xde, 0x1c, 0x1b, 0xfc, 0xb6, 0x4b, 0xbc, 0x11, 0x45, 0x89, 0x26, 0xe9, 0x14, 0x7a, 0x02, - 0xe1, 0xe9, 0xcc, 0x5c, 0xea, 0x0a, 0x76, 0xc0, 0xa3, 0xa1, 0x61, 0xbb, 0x6e, 0x6e, 0x74, 0x78, - 0x9b, 0x06, 0xcc, 0x79, 0x9b, 0x13, 0x4e, 0xff, 0x0b, 0x80, 0xa5, 0x8c, 0x22, 0x99, 0xf8, 0x8b, - 0xe7, 0xc2, 0x47, 0x5b, 0x67, 0x10, 0x17, 0x0c, 0xe2, 0xdd, 0x99, 0x88, 0xb6, 0xf2, 0x24, 0xe3, - 0xda, 0xcf, 0x45, 0x78, 0xd1, 0x30, 0xa2, 0x0f, 0x00, 0xe6, 0xed, 0xa0, 0xd1, 0x9d, 0x8c, 0x1d, - 0x48, 0x6f, 0x54, 0xb9, 0x32, 0x4b, 0x66, 0xeb, 0xf9, 0xf8, 0xfd, 0x8f, 0x3f, 0x9f, 0x16, 0xaa, - 0xa8, 0x42, 0x46, 0xfa, 0xd5, 0x98, 0xe9, 0xd7, 0x5c, 0xee, 0x91, 0x69, 0x5b, 0x8e, 0x0e, 0x01, - 0x5c, 0x4a, 0x5e, 0x8e, 0x6a, 0xd3, 0x8a, 0xa4, 0x57, 0xae, 0x7c, 0x6f, 0x2e, 0xad, 0xa3, 0xda, - 0x34, 0x54, 0x8f, 0xd1, 0xfa, 0x2c, 0xaa, 0xf1, 0xe1, 0xed, 0xff, 0xfb, 0xfc, 0x0e, 0x7d, 0x06, - 0xf0, 0xf2, 0xe4, 0x74, 0xd1, 0x54, 0x84, 0x8c, 0x45, 0x2b, 0xdf, 0x9f, 0x4f, 0xec, 0x80, 0x1f, - 0x18, 0xe0, 0x1a, 0xaa, 0xce, 0x0b, 0xdc, 0x78, 0x7a, 0x34, 0xf0, 0xc0, 0xf1, 0xc0, 0x03, 0x27, - 0x03, 0x0f, 0xfc, 0x1e, 0x78, 0xe0, 0xe3, 0xd0, 0xcb, 0x1d, 0x0f, 0xbd, 0xdc, 0xc9, 0xd0, 0xcb, - 0xbd, 0xa8, 0x07, 0xa1, 0xde, 0xed, 0xb7, 0x71, 0x87, 0xf7, 0xa6, 0x64, 0x7c, 0x73, 0x9a, 0x53, - 0x1f, 0x08, 0xa6, 0xda, 0x79, 0xf3, 0x07, 0xf3, 0xf0, 0x5f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x07, - 0x67, 0x7e, 0xca, 0x82, 0x05, 0x00, 0x00, + // 602 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x54, 0xb1, 0x6f, 0x13, 0x3f, + 0x18, 0x8d, 0xd3, 0xdf, 0x2f, 0x4a, 0x0c, 0x12, 0xd4, 0x44, 0x22, 0x89, 0xe0, 0x8a, 0x4e, 0x22, + 0x44, 0x81, 0xde, 0x91, 0x32, 0x16, 0x86, 0xa6, 0x12, 0x85, 0x89, 0x72, 0x19, 0x90, 0x18, 0x88, + 0x9c, 0xc4, 0x5c, 0xad, 0x5e, 0xce, 0x57, 0xdb, 0x29, 0x54, 0x88, 0x85, 0x85, 0x09, 0x09, 0x89, + 0x91, 0x89, 0xad, 0x23, 0x03, 0x7f, 0x44, 0xc7, 0x0a, 0x96, 0x8a, 0x01, 0xa1, 0x04, 0x89, 0x7f, + 0x03, 0x9d, 0xed, 0x4b, 0x53, 0x2e, 0x51, 0xc2, 0x12, 0xd9, 0xfe, 0xde, 0x7b, 0xdf, 0x7b, 0xf6, + 0x97, 0x83, 0x57, 0x23, 0xb6, 0x2b, 0x39, 0x0b, 0x02, 0x57, 0x0c, 0xa2, 0x28, 0xa0, 0x84, 0xbb, + 0x7b, 0x03, 0xc2, 0x0f, 0x9c, 0x88, 0x33, 0xc9, 0xd0, 0x72, 0x52, 0x76, 0x92, 0x72, 0x65, 0x19, + 0xf7, 0x69, 0xc8, 0x5c, 0xf5, 0xab, 0x51, 0x95, 0xa2, 0xcf, 0x7c, 0xa6, 0x96, 0x6e, 0xbc, 0x32, + 0xa7, 0x57, 0x7c, 0xc6, 0xfc, 0x80, 0xb8, 0x38, 0xa2, 0x2e, 0x0e, 0x43, 0x26, 0xb1, 0xa4, 0x2c, + 0x14, 0xa6, 0x5a, 0xee, 0x32, 0xd1, 0x67, 0xa2, 0xad, 0x69, 0x7a, 0x63, 0x4a, 0x75, 0xbd, 0x73, + 0x3b, 0x58, 0x10, 0xed, 0xc6, 0xdd, 0x6f, 0x74, 0x88, 0xc4, 0x0d, 0x37, 0xc2, 0x3e, 0x0d, 0x95, + 0x8e, 0xc1, 0x5a, 0x93, 0xd8, 0x04, 0xd5, 0x65, 0x74, 0x5c, 0x4f, 0xe7, 0x8b, 0x30, 0xc7, 0x7d, + 0x91, 0xae, 0xef, 0x60, 0x4e, 0x7a, 0x63, 0x98, 0xae, 0xdb, 0x45, 0x88, 0x1e, 0xc7, 0x0e, 0xb6, + 0x15, 0xc9, 0x23, 0x7b, 0x03, 0x22, 0xa4, 0xdd, 0x82, 0x97, 0xce, 0x9c, 0x8a, 0x88, 0x85, 0x82, + 0xa0, 0xbb, 0x30, 0xa7, 0xc5, 0x4b, 0xe0, 0x1a, 0xa8, 0x9d, 0x5b, 0x2b, 0x3b, 0xa9, 0xeb, 0x73, + 0x34, 0xa5, 0x59, 0x38, 0xfa, 0xb1, 0x92, 0x39, 0xfc, 0xfd, 0xb9, 0x0e, 0x3c, 0xc3, 0xb1, 0x9f, + 0xc1, 0xcb, 0x4a, 0x74, 0x8b, 0xc8, 0x96, 0x41, 0x9b, 0x7e, 0x68, 0x13, 0x5e, 0x64, 0x11, 0xe1, + 0x58, 0x32, 0xde, 0xc6, 0xbd, 0x1e, 0x27, 0x42, 0xb7, 0x28, 0x34, 0x4b, 0x5f, 0xbf, 0xac, 0x16, + 0xcd, 0xed, 0x6d, 0xe8, 0x4a, 0x4b, 0x72, 0x1a, 0xfa, 0xde, 0x85, 0x84, 0x61, 0x8e, 0xed, 0x27, + 0xb0, 0x94, 0xd6, 0x37, 0xce, 0xd7, 0x61, 0x3e, 0x71, 0x38, 0xc5, 0xbb, 0xba, 0x19, 0x27, 0x21, + 0x35, 0xff, 0x8b, 0xbd, 0x7b, 0x63, 0x82, 0xfd, 0x0e, 0x18, 0xe5, 0x8d, 0x20, 0x48, 0x40, 0xc9, + 0x55, 0xa1, 0xfb, 0x10, 0x9e, 0x3e, 0x9a, 0xd1, 0xae, 0x3a, 0xc6, 0x71, 0xfc, 0x6a, 0x8e, 0x9e, + 0x37, 0xf3, 0x76, 0xce, 0x36, 0xf6, 0x89, 0xe1, 0x7a, 0x13, 0x4c, 0xb4, 0x02, 0xa1, 0x20, 0x7c, + 0x9f, 0x76, 0x49, 0x9b, 0xf6, 0x4a, 0xd9, 0x38, 0xfc, 0x83, 0x8c, 0x57, 0x30, 0x67, 0x0f, 0x7b, + 0xcd, 0x3c, 0xcc, 0x3d, 0xa7, 0x81, 0x24, 0xdc, 0xfe, 0x04, 0x60, 0x79, 0x8a, 0x9f, 0xa9, 0x51, + 0x97, 0xfe, 0x29, 0x2a, 0xda, 0x3a, 0x93, 0x26, 0xab, 0xd2, 0xdc, 0x98, 0x9b, 0x46, 0x77, 0x9e, + 0x8c, 0xb3, 0xf6, 0x7d, 0x09, 0xfe, 0xaf, 0x3c, 0xa2, 0xb7, 0x00, 0xe6, 0xf4, 0x50, 0xa0, 0xeb, + 0x53, 0xe6, 0x25, 0x3d, 0x7d, 0x95, 0xea, 0x3c, 0x98, 0xee, 0x67, 0x3b, 0x6f, 0xbe, 0xfd, 0xfa, + 0x90, 0xad, 0xa1, 0xaa, 0x1b, 0xe3, 0x57, 0x43, 0x22, 0x5f, 0x30, 0xbe, 0xeb, 0xce, 0xfa, 0x47, + 0xa0, 0x43, 0x00, 0xf3, 0x49, 0x72, 0x54, 0x9f, 0xd5, 0x24, 0x3d, 0x9e, 0x95, 0x9b, 0x0b, 0x61, + 0x8d, 0xab, 0x4d, 0xe5, 0xea, 0x1e, 0x5a, 0x9f, 0xe7, 0x6a, 0xbc, 0x78, 0xf5, 0xf7, 0xec, 0xbf, + 0x46, 0x1f, 0x01, 0x3c, 0x3f, 0xf9, 0xba, 0x68, 0xa6, 0x85, 0x29, 0x33, 0x59, 0xb9, 0xb5, 0x18, + 0xd8, 0x18, 0xbe, 0xad, 0x0c, 0xd7, 0x51, 0x6d, 0x51, 0xc3, 0xcd, 0x47, 0x47, 0x43, 0x0b, 0x1c, + 0x0f, 0x2d, 0x70, 0x32, 0xb4, 0xc0, 0xcf, 0xa1, 0x05, 0xde, 0x8f, 0xac, 0xcc, 0xf1, 0xc8, 0xca, + 0x9c, 0x8c, 0xac, 0xcc, 0xd3, 0x86, 0x4f, 0xe5, 0xce, 0xa0, 0xe3, 0x74, 0x59, 0x7f, 0x86, 0xe2, + 0xcb, 0x53, 0x4d, 0x79, 0x10, 0x11, 0xd1, 0xc9, 0xa9, 0x8f, 0xd1, 0x9d, 0x3f, 0x01, 0x00, 0x00, + 0xff, 0xff, 0xc0, 0xc9, 0xa7, 0x97, 0xae, 0x05, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -623,6 +661,15 @@ func (m *QueryAllSuppliersRequest) MarshalToSizedBuffer(dAtA []byte) (int, error _ = i var l int _ = l + if m.Filter != nil { + { + size := m.Filter.Size() + i -= size + if _, err := m.Filter.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + } + } if m.Pagination != nil { { size, err := m.Pagination.MarshalToSizedBuffer(dAtA[:i]) @@ -638,6 +685,20 @@ func (m *QueryAllSuppliersRequest) MarshalToSizedBuffer(dAtA []byte) (int, error return len(dAtA) - i, nil } +func (m *QueryAllSuppliersRequest_ServiceId) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryAllSuppliersRequest_ServiceId) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + i -= len(m.ServiceId) + copy(dAtA[i:], m.ServiceId) + i = encodeVarintQuery(dAtA, i, uint64(len(m.ServiceId))) + i-- + dAtA[i] = 0x12 + return len(dAtA) - i, nil +} func (m *QueryAllSuppliersResponse) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -752,9 +813,22 @@ func (m *QueryAllSuppliersRequest) Size() (n int) { l = m.Pagination.Size() n += 1 + l + sovQuery(uint64(l)) } + if m.Filter != nil { + n += m.Filter.Size() + } return n } +func (m *QueryAllSuppliersRequest_ServiceId) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.ServiceId) + n += 1 + l + sovQuery(uint64(l)) + return n +} func (m *QueryAllSuppliersResponse) Size() (n int) { if m == nil { return 0 @@ -1143,6 +1217,38 @@ func (m *QueryAllSuppliersRequest) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ServiceId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Filter = &QueryAllSuppliersRequest_ServiceId{string(dAtA[iNdEx:postIndex])} + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipQuery(dAtA[iNdEx:]) diff --git a/x/supplier/types/query_validation.go b/x/supplier/types/query_validation.go new file mode 100644 index 000000000..ccab23065 --- /dev/null +++ b/x/supplier/types/query_validation.go @@ -0,0 +1,44 @@ +package types + +import ( + "context" + + sdk "github.com/cosmos/cosmos-sdk/types" + + "github.com/pokt-network/poktroll/pkg/polylog" + sharedtypes "github.com/pokt-network/poktroll/x/shared/types" +) + +// NOTE: Please note that these messages are not of type `sdk.Msg`, and are therefore not a message/request +// that will be signable or invoke a state transition. However, following a similar `ValidateBasic` pattern +// allows us to localize & reuse validation logic. + +// ValidateBasic performs basic (non-state-dependant) validation on a QueryGetSupplierRequest. +func (query *QueryGetSupplierRequest) ValidateBasic() error { + // Validate the supplier operator address + if _, err := sdk.AccAddressFromBech32(query.OperatorAddress); err != nil { + return ErrSupplierInvalidAddress.Wrapf("invalid supplier operator address %s; (%v)", query.OperatorAddress, err) + } + + return nil +} + +// ValidateBasic performs basic (non-state-dependant) validation on a QueryAllSuppliersRequest. +func (query *QueryAllSuppliersRequest) ValidateBasic() error { + // TODO_TECHDEBT: update function signature to receive a context. + logger := polylog.Ctx(context.TODO()) + + switch filter := query.Filter.(type) { + case *QueryAllSuppliersRequest_ServiceId: + // If the service ID is set, check if it's valid + if filter.ServiceId != "" && !sharedtypes.IsValidServiceId(filter.ServiceId) { + return ErrSupplierInvalidServiceId.Wrap("invalid empty service ID for suppliers being retrieved") + } + + default: + // No filter is set + logger.Info().Msg("No specific filter set when listing suppliers") + } + + return nil +} diff --git a/x/tokenomics/keeper/keeper_settle_pending_claims_test.go b/x/tokenomics/keeper/keeper_settle_pending_claims_test.go index 076663cce..46daae103 100644 --- a/x/tokenomics/keeper/keeper_settle_pending_claims_test.go +++ b/x/tokenomics/keeper/keeper_settle_pending_claims_test.go @@ -384,12 +384,15 @@ func (s *TestSuite) TestSettlePendingClaims_ClaimSettled_ProofRequiredAndProvide s.keepers.UpsertClaim(ctx, s.claim) s.keepers.UpsertProof(ctx, s.proof) + sdkCtx := cosmostypes.UnwrapSDKContext(ctx) + s.keepers.ValidateSubmittedProofs(sdkCtx) + // Settle pending claims after proof window closes // Expectation: All (1) claims should be claimed. // NB: proofs should be rejected when the current height equals the proof window close height. sessionEndHeight := s.claim.SessionHeader.SessionEndBlockHeight blockHeight := sharedtypes.GetProofWindowCloseHeight(&sharedParams, sessionEndHeight) - sdkCtx := cosmostypes.UnwrapSDKContext(ctx).WithBlockHeight(blockHeight) + sdkCtx = cosmostypes.UnwrapSDKContext(ctx).WithBlockHeight(blockHeight) settledResult, expiredResult, err := s.keepers.SettlePendingClaims(sdkCtx) require.NoError(t, err) @@ -440,12 +443,15 @@ func (s *TestSuite) TestSettlePendingClaims_ClaimExpired_ProofRequired_InvalidOn s.keepers.UpsertClaim(ctx, s.claim) s.keepers.UpsertProof(ctx, proof) + sdkCtx := cosmostypes.UnwrapSDKContext(ctx) + s.keepers.ValidateSubmittedProofs(sdkCtx) + // Settle pending claims after proof window closes // Expectation: All (1) claims should be expired. // NB: proofs should be rejected when the current height equals the proof window close height. sessionEndHeight := s.claim.SessionHeader.SessionEndBlockHeight blockHeight := sharedtypes.GetProofWindowCloseHeight(&sharedParams, sessionEndHeight) - sdkCtx := cosmostypes.UnwrapSDKContext(ctx).WithBlockHeight(blockHeight) + sdkCtx = sdkCtx.WithBlockHeight(blockHeight) settledResults, expiredResults, err := s.keepers.SettlePendingClaims(sdkCtx) require.NoError(t, err) @@ -469,10 +475,15 @@ func (s *TestSuite) TestSettlePendingClaims_ClaimExpired_ProofRequired_InvalidOn // Confirm an expiration event was emitted events := sdkCtx.EventManager().Events() - require.Equal(t, 12, len(events)) // minting, burning, settling, etc.. + require.Equal(t, 13, len(events)) // minting, burning, settling, etc.. + expectedClaimExpiredEvents := testutilevents.FilterEvents[*tokenomicstypes.EventClaimExpired](t, events) require.Equal(t, 1, len(expectedClaimExpiredEvents)) + // Confirm an invalid proof removed event was emitted + expectedProofValidityCheckedEvents := testutilevents.FilterEvents[*prooftypes.EventProofValidityChecked](t, events) + require.Equal(t, 1, len(expectedProofValidityCheckedEvents)) + // Validate the event expectedClaimExpiredEvent := expectedClaimExpiredEvents[0] require.Equal(t, tokenomicstypes.ClaimExpirationReason_PROOF_INVALID, expectedClaimExpiredEvent.GetExpirationReason()) @@ -481,6 +492,9 @@ func (s *TestSuite) TestSettlePendingClaims_ClaimExpired_ProofRequired_InvalidOn require.Equal(t, s.numEstimatedComputeUnits, expectedClaimExpiredEvent.GetNumEstimatedComputeUnits()) require.Equal(t, s.claimedUpokt, *expectedClaimExpiredEvent.GetClaimedUpokt()) + expectedProofValidityCheckedEvent := expectedProofValidityCheckedEvents[0] + require.Equal(t, prooftypes.ClaimProofStatus_INVALID, expectedProofValidityCheckedEvent.GetProofStatus()) + // Confirm that a slashing event was emitted expectedSlashingEvents := testutilevents.FilterEvents[*tokenomicstypes.EventSupplierSlashed](t, events) require.Equal(t, 1, len(expectedSlashingEvents)) @@ -516,12 +530,15 @@ func (s *TestSuite) TestClaimSettlement_ClaimSettled_ProofRequiredAndProvided_Vi s.keepers.UpsertClaim(ctx, s.claim) s.keepers.UpsertProof(ctx, s.proof) + sdkCtx := cosmostypes.UnwrapSDKContext(ctx) + s.keepers.ValidateSubmittedProofs(sdkCtx) + // Settle pending claims after proof window closes // Expectation: All (1) claims should be claimed. // NB: proof window has definitely closed at this point sessionEndHeight := s.claim.SessionHeader.SessionEndBlockHeight blockHeight := sharedtypes.GetProofWindowCloseHeight(&sharedParams, sessionEndHeight) - sdkCtx := cosmostypes.UnwrapSDKContext(ctx).WithBlockHeight(blockHeight) + sdkCtx = cosmostypes.UnwrapSDKContext(ctx).WithBlockHeight(blockHeight) settledResults, expiredResults, err := s.keepers.SettlePendingClaims(sdkCtx) require.NoError(t, err) @@ -571,12 +588,15 @@ func (s *TestSuite) TestSettlePendingClaims_Settles_WhenAProofIsNotRequired() { // Upsert the claim only (not the proof) s.keepers.UpsertClaim(ctx, s.claim) + sdkCtx := cosmostypes.UnwrapSDKContext(ctx) + s.keepers.ValidateSubmittedProofs(sdkCtx) + // Settle pending claims after proof window closes // Expectation: All (1) claims should be claimed. // NB: proofs should be rejected when the current height equals the proof window close height. sessionEndHeight := s.claim.SessionHeader.SessionEndBlockHeight blockHeight := sharedtypes.GetProofWindowCloseHeight(&sharedParams, sessionEndHeight) - sdkCtx := cosmostypes.UnwrapSDKContext(ctx).WithBlockHeight(blockHeight) + sdkCtx = cosmostypes.UnwrapSDKContext(ctx).WithBlockHeight(blockHeight) settledResults, expiredResults, err := s.keepers.SettlePendingClaims(sdkCtx) require.NoError(t, err) @@ -771,7 +791,7 @@ func (s *TestSuite) TestSettlePendingClaims_ClaimExpired_SupplierUnstaked() { // Validate the EventSupplierUnbondingBegin event. unbondingEndHeight := sharedtypes.GetSupplierUnbondingEndHeight(&sharedParams, &slashedSupplier) slashedSupplier.ServicesActivationHeightsMap = make(map[string]uint64) - for i, _ := range slashedSupplier.GetServices() { + for i := range slashedSupplier.GetServices() { slashedSupplier.Services[i].Endpoints = make([]*sharedtypes.SupplierEndpoint, 0) } expectedUnbondingBeginEvent := &suppliertypes.EventSupplierUnbondingBegin{ diff --git a/x/tokenomics/keeper/msg_server_update_param_test.go b/x/tokenomics/keeper/msg_server_update_param_test.go index 6c358482a..b0da8a230 100644 --- a/x/tokenomics/keeper/msg_server_update_param_test.go +++ b/x/tokenomics/keeper/msg_server_update_param_test.go @@ -42,7 +42,7 @@ func TestMsgUpdateParam_UpdateMintAllocationPercentagesOnly(t *testing.T) { require.NotEqual(t, defaultParams.MintAllocationPercentages, res.Params.MintAllocationPercentages) require.Equal(t, expectedMintAllocationPercentages, res.Params.MintAllocationPercentages) - // Assert that the on-chain mint allocation percentages is updated. + // Assert that the onchain mint allocation percentages is updated. params := k.GetParams(ctx) require.Equal(t, expectedMintAllocationPercentages, params.MintAllocationPercentages) @@ -74,7 +74,7 @@ func TestMsgUpdateParam_UpdateDaoRewardAddressOnly(t *testing.T) { require.NotEqual(t, defaultParams.DaoRewardAddress, res.Params.DaoRewardAddress) require.Equal(t, expectedDaoRewardAddress, res.Params.DaoRewardAddress) - // Assert that the on-chain dao reward address is updated. + // Assert that the onchain dao reward address is updated. params := k.GetParams(ctx) require.Equal(t, expectedDaoRewardAddress, params.DaoRewardAddress) @@ -106,7 +106,7 @@ func TestMsgUpdateParam_UpdateGlobalInflationPerClaimOnly(t *testing.T) { require.NotEqual(t, defaultParams.GlobalInflationPerClaim, res.Params.GlobalInflationPerClaim) require.Equal(t, expectedGlobalInflationPerClaim, res.Params.GlobalInflationPerClaim) - // Assert that the on-chain dao reward address is updated. + // Assert that the onchain dao reward address is updated. params := k.GetParams(ctx) require.Equal(t, expectedGlobalInflationPerClaim, params.GlobalInflationPerClaim) diff --git a/x/tokenomics/keeper/msg_update_params_test.go b/x/tokenomics/keeper/msg_update_params_test.go index 71375b179..dbc10b231 100644 --- a/x/tokenomics/keeper/msg_update_params_test.go +++ b/x/tokenomics/keeper/msg_update_params_test.go @@ -44,7 +44,7 @@ func TestMsgUpdateParams(t *testing.T) { }, shouldError: true, - expectedErrMsg: "the provided authority address does not match the on-chain governance address", + expectedErrMsg: "the provided authority address does not match the onchain governance address", }, { desc: "invalid: dao reward address missing", diff --git a/x/tokenomics/keeper/settle_pending_claims.go b/x/tokenomics/keeper/settle_pending_claims.go index fa1995de2..722d328d6 100644 --- a/x/tokenomics/keeper/settle_pending_claims.go +++ b/x/tokenomics/keeper/settle_pending_claims.go @@ -25,7 +25,7 @@ import ( // If a claim is expired and requires a proof and a proof IS NOT available -> it's deleted. // If a claim is expired and does NOT require a proof -> it's settled. // Events are emitted for each claim that is settled or removed. -// On-chain Claims & Proofs are deleted after they're settled or expired to free up space. +// Onchain Claims & Proofs are deleted after they're settled or expired to free up space. func (k Keeper) SettlePendingClaims(ctx cosmostypes.Context) ( settledResults tlm.ClaimSettlementResults, expiredResults tlm.ClaimSettlementResults, @@ -95,7 +95,7 @@ func (k Keeper) SettlePendingClaims(ctx cosmostypes.Context) ( targetNumRelays, ) } - // numEstimatedComputeUnits is the probabilistic estimation of the off-chain + // numEstimatedComputeUnits is the probabilistic estimation of the offchain // work done by the relay miner in this session. It is derived from the claimed // work and the relay mining difficulty. numEstimatedComputeUnits, err = claim.GetNumEstimatedComputeUnits(relayMiningDifficulty) @@ -112,9 +112,8 @@ func (k Keeper) SettlePendingClaims(ctx cosmostypes.Context) ( return settledResults, expiredResults, err } - proof, isProofFound := k.proofKeeper.GetProof(ctx, sessionId, claim.SupplierOperatorAddress) // Using the probabilistic proofs approach, determine if this expiring - // claim required an on-chain proof + // claim required an onchain proof proofRequirement, err = k.proofKeeper.ProofRequirementForClaim(ctx, &claim) if err != nil { return settledResults, expiredResults, err @@ -135,19 +134,25 @@ func (k Keeper) SettlePendingClaims(ctx cosmostypes.Context) ( proofIsRequired := proofRequirement != prooftypes.ProofRequirementReason_NOT_REQUIRED if proofIsRequired { - expirationReason := tokenomicstypes.ClaimExpirationReason_EXPIRATION_REASON_UNSPECIFIED // EXPIRATION_REASON_UNSPECIFIED is the default - - if isProofFound { - if err = k.proofKeeper.EnsureValidProof(ctx, &proof); err != nil { - logger.Warn(fmt.Sprintf("Proof was found but is invalid due to %v", err)) - expirationReason = tokenomicstypes.ClaimExpirationReason_PROOF_INVALID - } - } else { + // IMPORTANT: Proof validation and claims settlement timing: + // - Proof validation (proof end blocker): Executes WITHIN proof submission window + // - Claims settlement (tokenomics end blocker): Executes AFTER window closes + // This ensures proofs are validated before claims are settled + + var expirationReason tokenomicstypes.ClaimExpirationReason + switch claim.ProofValidationStatus { + // If the proof is required and not found, the claim is expired. + case prooftypes.ClaimProofStatus_PENDING_VALIDATION: expirationReason = tokenomicstypes.ClaimExpirationReason_PROOF_MISSING + // If the proof is required and invalid, the claim is expired. + case prooftypes.ClaimProofStatus_INVALID: + expirationReason = tokenomicstypes.ClaimExpirationReason_PROOF_INVALID + // If the proof is required and valid, the claim is settled. + case prooftypes.ClaimProofStatus_VALIDATED: + expirationReason = tokenomicstypes.ClaimExpirationReason_EXPIRATION_REASON_UNSPECIFIED } - // If the proof is missing or invalid -> expire it - if expirationReason != tokenomicstypes.ClaimExpirationReason_EXPIRATION_REASON_UNSPECIFIED { + if claim.ProofValidationStatus != prooftypes.ClaimProofStatus_VALIDATED { // TODO_BETA(@red-0ne): Slash the supplier in proportion to their stake. // TODO_POST_MAINNET: Consider allowing suppliers to RemoveClaim via a new // message in case it was sent by accident @@ -177,12 +182,8 @@ func (k Keeper) SettlePendingClaims(ctx cosmostypes.Context) ( // have other valid claims and the protocol might want to touch the supplier // owner or operator balances if the stake is negative. - // The claim & proof are no longer necessary, so there's no need for them - // to take up on-chain space. + // The claim is no longer necessary, so there's no need for it to take up onchain space. k.proofKeeper.RemoveClaim(ctx, sessionId, claim.SupplierOperatorAddress) - if isProofFound { - k.proofKeeper.RemoveProof(ctx, sessionId, claim.SupplierOperatorAddress) - } // Append the settlement result to the expired results. expiredResults.Append(ClaimSettlementResult) @@ -233,6 +234,7 @@ func (k Keeper) SettlePendingClaims(ctx cosmostypes.Context) ( NumEstimatedComputeUnits: numEstimatedComputeUnits, ClaimedUpokt: &claimeduPOKT, ProofRequirement: proofRequirement, + SettlementResult: *ClaimSettlementResult, } if err = ctx.EventManager().EmitTypedEvent(&claimSettledEvent); err != nil { @@ -242,15 +244,8 @@ func (k Keeper) SettlePendingClaims(ctx cosmostypes.Context) ( logger.Info("claim settled") // The claim & proof are no longer necessary, so there's no need for them - // to take up on-chain space. + // to take up onchain space. k.proofKeeper.RemoveClaim(ctx, sessionId, claim.SupplierOperatorAddress) - // Whether or not the proof is required, the supplier may have submitted one - // so we need to delete it either way. If we don't have the if structure, - // a safe error will be printed, but it can be confusing to the operator - // or developer. - if isProofFound { - k.proofKeeper.RemoveProof(ctx, sessionId, claim.SupplierOperatorAddress) - } logger.Debug(fmt.Sprintf("Successfully settled claim for session ID %q at block height %d", claim.SessionHeader.SessionId, blockHeight)) @@ -329,36 +324,36 @@ func (k Keeper) ExecutePendingSettledResults(ctx cosmostypes.Context, settledRes logger.Info(fmt.Sprintf("begin executing %d pending settlement results", len(settledResults))) for _, settledResult := range settledResults { - logger = logger.With("session_id", settledResult.GetSessionId()) - logger.Info("begin executing pending settlement result") + sessionLogger := logger.With("session_id", settledResult.GetSessionId()) + sessionLogger.Info("begin executing pending settlement result") - logger.Info(fmt.Sprintf("begin executing %d pending mints", len(settledResult.GetMints()))) - if err := k.executePendingModuleMints(ctx, logger, settledResult.GetMints()); err != nil { + sessionLogger.Info(fmt.Sprintf("begin executing %d pending mints", len(settledResult.GetMints()))) + if err := k.executePendingModuleMints(ctx, sessionLogger, settledResult.GetMints()); err != nil { return err } - logger.Info("done executing pending mints") + sessionLogger.Info("done executing pending mints") - logger.Info(fmt.Sprintf("begin executing %d pending module to module transfers", len(settledResult.GetModToModTransfers()))) - if err := k.executePendingModToModTransfers(ctx, logger, settledResult.GetModToModTransfers()); err != nil { + sessionLogger.Info(fmt.Sprintf("begin executing %d pending module to module transfers", len(settledResult.GetModToModTransfers()))) + if err := k.executePendingModToModTransfers(ctx, sessionLogger, settledResult.GetModToModTransfers()); err != nil { return err } - logger.Info("done executing pending module account to module account transfers") + sessionLogger.Info("done executing pending module account to module account transfers") - logger.Info(fmt.Sprintf("begin executing %d pending module to account transfers", len(settledResult.GetModToAcctTransfers()))) - if err := k.executePendingModToAcctTransfers(ctx, logger, settledResult.GetModToAcctTransfers()); err != nil { + sessionLogger.Info(fmt.Sprintf("begin executing %d pending module to account transfers", len(settledResult.GetModToAcctTransfers()))) + if err := k.executePendingModToAcctTransfers(ctx, sessionLogger, settledResult.GetModToAcctTransfers()); err != nil { return err } - logger.Info("done executing pending module to account transfers") + sessionLogger.Info("done executing pending module to account transfers") - logger.Info(fmt.Sprintf("begin executing %d pending burns", len(settledResult.GetBurns()))) - if err := k.executePendingModuleBurns(ctx, logger, settledResult.GetBurns()); err != nil { + sessionLogger.Info(fmt.Sprintf("begin executing %d pending burns", len(settledResult.GetBurns()))) + if err := k.executePendingModuleBurns(ctx, sessionLogger, settledResult.GetBurns()); err != nil { return err } - logger.Info("done executing pending burns") + sessionLogger.Info("done executing pending burns") - logger.Info("done executing pending settlement result") + sessionLogger.Info("done executing pending settlement result") - logger.Info(fmt.Sprintf( + sessionLogger.Info(fmt.Sprintf( "done applying settled results for session %q", settledResult.Claim.GetSessionHeader().GetSessionId(), )) @@ -510,7 +505,7 @@ func (k Keeper) GetExpiringClaims(ctx cosmostypes.Context) (expiringClaims []pro // 2a. This likely also requires adding validation to the shared module params. blockHeight := ctx.BlockHeight() - // NB: This error can be safely ignored as on-chain SharedQueryClient implementation cannot return an error. + // NB: This error can be safely ignored as onchain SharedQueryClient implementation cannot return an error. sharedParams, _ := k.sharedQuerier.GetParams(ctx) // expiringSessionEndHeight is the session end height of the session whose proof @@ -656,7 +651,7 @@ func (k Keeper) slashSupplierStake( )) // TODO_MAINNET: Should we just remove the supplier if the stake is - // below the minimum, at the risk of making the off-chain actors have an + // below the minimum, at the risk of making the offchain actors have an // inconsistent session supplier list? See the comment above for more details. supplierToSlash.UnstakeSessionEndHeight = uint64(unstakeSessionEndHeight) diff --git a/x/tokenomics/keeper/token_logic_modules.go b/x/tokenomics/keeper/token_logic_modules.go index 876dddb28..3564322ca 100644 --- a/x/tokenomics/keeper/token_logic_modules.go +++ b/x/tokenomics/keeper/token_logic_modules.go @@ -109,7 +109,7 @@ func (k Keeper) ProcessTokenLogicModules( return tokenomicstypes.ErrTokenomicsApplicationAddressInvalid.Wrapf("address (%q)", sessionHeader.GetApplicationAddress()) } - // Retrieve the on-chain staked application record + // Retrieve the onchain staked application record application, isAppFound := k.applicationKeeper.GetApplication(ctx, applicationAddress.String()) if !isAppFound { logger.Warn(fmt.Sprintf("application for claim with address %q not found", applicationAddress)) @@ -124,7 +124,7 @@ func (k Keeper) ProcessTokenLogicModules( ) } - // Retrieve the on-chain staked supplier record + // Retrieve the onchain staked supplier record supplier, isSupplierFound := k.supplierKeeper.GetSupplier(ctx, supplierOperatorAddr.String()) if !isSupplierFound { logger.Warn(fmt.Sprintf("supplier for claim with address %q not found", supplierOperatorAddr)) @@ -246,9 +246,9 @@ func (k Keeper) ProcessTokenLogicModules( } } - // State mutation: update the application's on-chain record. + // State mutation: update the application's onchain record. k.applicationKeeper.SetApplication(ctx, application) - logger.Info(fmt.Sprintf("updated on-chain application record with address %q", application.Address)) + logger.Info(fmt.Sprintf("updated onchain application record with address %q", application.Address)) // TODO_MAINNET(@bryanchriswhite): If the application stake has dropped to (near?) zero: // - Unstake it @@ -256,9 +256,9 @@ func (k Keeper) ProcessTokenLogicModules( // - Ensure this doesn't happen // - Document the decision - // State mutation: Update the suppliers's on-chain record + // State mutation: Update the suppliers's onchain record k.supplierKeeper.SetSupplier(ctx, supplier) - logger.Info(fmt.Sprintf("updated on-chain supplier record with address %q", supplier.OperatorAddress)) + logger.Info(fmt.Sprintf("updated onchain supplier record with address %q", supplier.OperatorAddress)) // Update isSuccessful to true for telemetry isSuccessful = true diff --git a/x/tokenomics/keeper/token_logic_modules_test.go b/x/tokenomics/keeper/token_logic_modules_test.go index b70d32608..eae0d4628 100644 --- a/x/tokenomics/keeper/token_logic_modules_test.go +++ b/x/tokenomics/keeper/token_logic_modules_test.go @@ -45,7 +45,7 @@ func TestProcessTokenLogicModules_TLMBurnEqualsMint_Valid(t *testing.T) { // Test Parameters appInitialStake := apptypes.DefaultMinStake.Amount.Mul(cosmosmath.NewInt(2)) supplierInitialStake := cosmosmath.NewInt(1000000) - supplierRevShareRatios := []float32{12.5, 37.5, 50} + supplierRevShareRatios := []uint64{12, 38, 50} globalComputeUnitsToTokensMultiplier := uint64(1) serviceComputeUnitsPerRelay := uint64(1) service := prepareTestService(serviceComputeUnitsPerRelay) @@ -185,7 +185,7 @@ func TestProcessTokenLogicModules_TLMBurnEqualsMint_Valid_SupplierExceedsMaxClai service := prepareTestService(serviceComputeUnitsPerRelay) numRelays := uint64(1000) // By a single supplier for application in this session supplierInitialStake := cosmosmath.NewInt(1000000) - supplierRevShareRatios := []float32{12.5, 37.5, 50} + supplierRevShareRatios := []uint64{12, 38, 50} // Prepare the keepers keepers, ctx := testkeeper.NewTokenomicsModuleKeepers(t, @@ -338,7 +338,7 @@ func TestProcessTokenLogicModules_TLMGlobalMint_Valid_MintDistributionCorrect(t // Test Parameters appInitialStake := apptypes.DefaultMinStake.Amount.Mul(cosmosmath.NewInt(2)) supplierInitialStake := cosmosmath.NewInt(1000000) - supplierRevShareRatios := []float32{12.5, 37.5, 50} + supplierRevShareRatios := []uint64{12, 38, 50} globalComputeUnitsToTokensMultiplier := uint64(1) serviceComputeUnitsPerRelay := uint64(1) service := prepareTestService(serviceComputeUnitsPerRelay) @@ -447,7 +447,7 @@ func TestProcessTokenLogicModules_TLMGlobalMint_Valid_MintDistributionCorrect(t propMint := cosmosmath.NewInt(int64(numTokensMinted * tokenomicsParams.MintAllocationPercentages.Proposer)) serviceOwnerMint := cosmosmath.NewInt(int64(numTokensMinted * tokenomicsParams.MintAllocationPercentages.SourceOwner)) appMint := cosmosmath.NewInt(int64(numTokensMinted * tokenomicsParams.MintAllocationPercentages.Application)) - supplierMint := float32(numTokensMinted * tokenomicsParams.MintAllocationPercentages.Supplier) + supplierMint := float64(numTokensMinted * tokenomicsParams.MintAllocationPercentages.Supplier) // Ensure the balance was increased to the appropriate amount. require.Equal(t, daoBalanceBefore.Amount.Add(daoMint).Add(numTokensMintedInt), daoBalanceAfter.Amount) @@ -458,8 +458,8 @@ func TestProcessTokenLogicModules_TLMGlobalMint_Valid_MintDistributionCorrect(t addr := revShare.Address balanceBefore := supplierShareholderBalancesBefore[addr] balanceAfter := supplierShareholderBalancesAfter[addr].Amount.Int64() - mintShare := int64(supplierMint * revShare.RevSharePercentage / 100) - rewardShare := int64(float32(numTokensClaimed) * revShare.RevSharePercentage / 100) + mintShare := int64(supplierMint * float64(revShare.RevSharePercentage) / 100.0) + rewardShare := int64(float64(numTokensClaimed) * float64(revShare.RevSharePercentage) / 100.0) balanceIncrease := cosmosmath.NewInt(mintShare + rewardShare) expectedBalanceAfter := balanceBefore.Amount.Add(balanceIncrease).Int64() // TODO_MAINNET(@red-0ne): Remove the InDelta check and use the exact amount once the floating point arithmetic is fixed diff --git a/x/tokenomics/keeper/update_relay_mining_difficulty.go b/x/tokenomics/keeper/update_relay_mining_difficulty.go index 298578e4c..ca8a5641b 100644 --- a/x/tokenomics/keeper/update_relay_mining_difficulty.go +++ b/x/tokenomics/keeper/update_relay_mining_difficulty.go @@ -6,8 +6,8 @@ import ( "github.com/pokt-network/poktroll/x/service/types" ) -// UpdateRelayMiningDifficulty updates the on-chain relay mining difficulty -// based on the amount of on-chain relays for each service, given a map of serviceId->numRelays. +// UpdateRelayMiningDifficulty updates the onchain relay mining difficulty +// based on the amount of onchain relays for each service, given a map of serviceId->numRelays. // This is a wrapper around the service keeper's UpdateRelayMiningDifficulty method // to allow the tokenomics EndBlocker to update the relay mining difficulty after // all claims have settled. diff --git a/x/tokenomics/token_logic_module/distribution.go b/x/tokenomics/token_logic_module/distribution.go index bdd2b5c38..f7071562d 100644 --- a/x/tokenomics/token_logic_module/distribution.go +++ b/x/tokenomics/token_logic_module/distribution.go @@ -94,7 +94,7 @@ func GetShareAmountMap( shareAmountMap = make(map[string]uint64, len(serviceRevShare)) for _, revShare := range serviceRevShare { // TODO_MAINNET(@red-0ne): Use big.Rat for deterministic results. - sharePercentageFloat := big.NewFloat(float64(revShare.RevSharePercentage) / 100) + sharePercentageFloat := big.NewFloat(float64(revShare.RevSharePercentage) / float64(100.0)) amountToDistributeFloat := big.NewFloat(float64(amountToDistribute)) shareAmount, _ := big.NewFloat(0).Mul(amountToDistributeFloat, sharePercentageFloat).Uint64() shareAmountMap[revShare.Address] = shareAmount diff --git a/x/tokenomics/token_logic_module/relay_burn_equals_mint.go b/x/tokenomics/token_logic_module/relay_burn_equals_mint.go index b89f79f4c..90d02eb80 100644 --- a/x/tokenomics/token_logic_module/relay_burn_equals_mint.go +++ b/x/tokenomics/token_logic_module/relay_burn_equals_mint.go @@ -88,7 +88,7 @@ func (tlm tlmRelayBurnEqualsMint) Process( defer telemetry.BurnedTokensFromModule(suppliertypes.ModuleName, float32(tlmCtx.SettlementCoin.Amount.Int64())) } - // Update the application's on-chain stake + // Update the application's onchain stake newAppStake, err := tlmCtx.Application.Stake.SafeSub(tlmCtx.SettlementCoin) // DEV_NOTE: This should never occur because: // 1. Application overservicing SHOULD be mitigated by the protocol. diff --git a/x/tokenomics/token_logic_module/settlement_results.go b/x/tokenomics/token_logic_module/settlement_results.go index ffc71ff5e..81f7484fd 100644 --- a/x/tokenomics/token_logic_module/settlement_results.go +++ b/x/tokenomics/token_logic_module/settlement_results.go @@ -97,7 +97,7 @@ func (rs ClaimSettlementResults) GetServiceIds() (serviceIds []string) { // GetRelaysPerServiceMap returns a map of service IDs to the total number of relays // claimed for that service in the combined results. -// IMPORTANT: **DO NOT** directly iterate over returned map in on-chain code to avoid +// IMPORTANT: **DO NOT** directly iterate over returned map in onchain code to avoid // the possibility of introducing non-determinism. Instead, iterate over the service ID // slice returned by OR a sorted slice of the service ID keys. func (rs ClaimSettlementResults) GetRelaysPerServiceMap() (_ map[string]uint64, errs error) { diff --git a/x/tokenomics/types/errors.go b/x/tokenomics/types/errors.go index 642a2801c..fe433d7f6 100644 --- a/x/tokenomics/types/errors.go +++ b/x/tokenomics/types/errors.go @@ -6,7 +6,7 @@ import sdkerrors "cosmossdk.io/errors" // x/tokenomics module sentinel errors var ( - ErrTokenomicsInvalidSigner = sdkerrors.Register(ModuleName, 1100, "the provided authority address does not match the on-chain governance address") + ErrTokenomicsInvalidSigner = sdkerrors.Register(ModuleName, 1100, "the provided authority address does not match the onchain governance address") ErrTokenomicsAddressInvalid = sdkerrors.Register(ModuleName, 1101, "the provided authority address is not a valid bech32 address") ErrTokenomicsSessionHeaderNil = sdkerrors.Register(ModuleName, 1102, "provided claim's session header is nil") ErrTokenomicsSessionHeaderInvalid = sdkerrors.Register(ModuleName, 1103, "provided claim's session header is invalid") diff --git a/x/tokenomics/types/event.pb.go b/x/tokenomics/types/event.pb.go index 5912e7206..3b486d01f 100644 --- a/x/tokenomics/types/event.pb.go +++ b/x/tokenomics/types/event.pb.go @@ -54,7 +54,7 @@ func (ClaimExpirationReason) EnumDescriptor() ([]byte, []int) { } // EventClaimExpired is an event emitted during settlement whenever a claim requiring -// an on-chain proof doesn't have one. The claim cannot be settled, leading to that work +// an onchain proof doesn't have one. The claim cannot be settled, leading to that work // never being rewarded. type EventClaimExpired struct { Claim *types.Claim `protobuf:"bytes,1,opt,name=claim,proto3" json:"claim"` diff --git a/x/tokenomics/types/expected_keepers.go b/x/tokenomics/types/expected_keepers.go index c7c0de0c5..dac960fa4 100644 --- a/x/tokenomics/types/expected_keepers.go +++ b/x/tokenomics/types/expected_keepers.go @@ -46,6 +46,7 @@ type ApplicationKeeper interface { GetAllApplications(ctx context.Context) []apptypes.Application UnbondApplication(ctx context.Context, app *apptypes.Application) error EndBlockerUnbondApplications(ctx context.Context) error + GetParams(ctx context.Context) (params apptypes.Params) } type ProofKeeper interface { @@ -55,10 +56,10 @@ type ProofKeeper interface { RemoveProof(ctx context.Context, sessionId, supplierOperatorAddr string) AllClaims(ctx context.Context, req *prooftypes.QueryAllClaimsRequest) (*prooftypes.QueryAllClaimsResponse, error) - EnsureValidProof(ctx context.Context, proof *prooftypes.Proof) error ProofRequirementForClaim(ctx context.Context, claim *prooftypes.Claim) (prooftypes.ProofRequirementReason, error) // Only used for testing & simulation + ValidateSubmittedProofs(ctx cosmostypes.Context) (numValidProofs, numInvalidProofs uint64, err error) GetAllProofs(ctx context.Context) []prooftypes.Proof UpsertClaim(ctx context.Context, claim prooftypes.Claim) UpsertProof(ctx context.Context, claim prooftypes.Proof)