openapi: 3.0.3 info: title: PATH - Path & Toolkit Harness API Query API description: PATH (Path API & Toolkit Harness) is an open source framework for enabling access to a decentralized supply network. It provides various tools and libraries to streamline the integration and interaction with decentralized protocols. version: 1.0.0 contact: name: Grove Engineering email: engineering@grove.city servers: - url: https://{serviceId}.rpc.grove.city description: Production PATH URL with service-specific subdomain variables: serviceId: default: eth description: The service ID that determines the subdomain enum: - arb-one - arb-sepolia-testnet - avax - avax-dfk - base - base-sepolia-testnet - bera - bitcoin - blast - boba - bsc - celo - eth - eth-holesky-testnet - eth-sepolia-testnet - fantom - fraxtal - fuse - gnosis - harmony - ink - iotex - kaia - kava - linea - mantle - metis - moonbeam - moonriver - near - oasys - op - op-sepolia-testnet - opbnb - pocket - poly - poly-amoy-testnet - poly-zkevm - radix - scroll - sei - sonic - sui - taiko - taiko-hekla-testnet - tron - xrplevm - xrplevm-testnet - zklink-nova - zksync-era - url: http://localhost:3069 description: Local PATH instance security: - ApiKeyAuth: [] tags: - name: Query paths: /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. 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/pocket.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/pocket.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/pocket.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. name: pagination.reverse in: query responses: '200': description: A successful response. schema: $ref: '#/definitions/pocket.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/pocket.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/pocket.gateway.QueryParamsResponse' default: description: An unexpected error response. schema: $ref: '#/definitions/google.rpc.Status' /pokt-network/poktroll/migration/morse_claimable_account: get: tags: - Query operationId: GithubCompoktNetworkpoktrollQuery_MorseClaimableAccountAll 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. name: pagination.reverse in: query responses: '200': description: A successful response. schema: $ref: '#/definitions/pocket.migration.QueryAllMorseClaimableAccountResponse' default: description: An unexpected error response. schema: $ref: '#/definitions/google.rpc.Status' /pokt-network/poktroll/migration/morse_claimable_account/{address}: get: tags: - Query summary: Queries a list of MorseClaimableAccount items. operationId: GithubCompoktNetworkpoktrollQuery_MorseClaimableAccount parameters: - type: string name: address in: path required: true responses: '200': description: A successful response. schema: $ref: '#/definitions/pocket.migration.QueryMorseClaimableAccountResponse' default: description: An unexpected error response. schema: $ref: '#/definitions/google.rpc.Status' /pokt-network/poktroll/migration/params: get: tags: - Query summary: Parameters queries the parameters of the module. operationId: GithubCompoktNetworkpoktrollQuery_ParamsMixin17 responses: '200': description: A successful response. schema: $ref: '#/definitions/pocket.migration.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. 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/pocket.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/pocket.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_ParamsMixin22 responses: '200': description: A successful response. schema: $ref: '#/definitions/pocket.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. 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/pocket.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/pocket.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_ParamsMixin28 responses: '200': description: A successful response. schema: $ref: '#/definitions/pocket.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. name: pagination.reverse in: query responses: '200': description: A successful response. schema: $ref: '#/definitions/pocket.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/pocket.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. name: pagination.reverse in: query responses: '200': description: A successful response. schema: $ref: '#/definitions/pocket.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/pocket.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/pocket.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_ParamsMixin34 responses: '200': description: A successful response. schema: $ref: '#/definitions/pocket.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_ParamsMixin39 responses: '200': description: A successful response. schema: $ref: '#/definitions/pocket.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_ParamsMixin46 responses: '200': description: A successful response. schema: $ref: '#/definitions/pocket.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. name: pagination.reverse in: query - type: string description: 'Optional filters that can be combined (AND logic) unique service identifier to filter by' name: service_id in: query - type: string description: supplier operator address to filter by name: operator_address in: query - type: string description: supplier owner address to filter by name: owner_address in: query - type: boolean description: 'if true, return a dehydrated version of the supplier. Why? This enables smaller response payloads to reduce pagination of the supplier list. Example: Removes service_config_history and rev_share details from the response. See the implementation for more details.' name: dehydrated in: query responses: '200': description: A successful response. schema: $ref: '#/definitions/pocket.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 - type: boolean description: 'if true, return a dehydrated version of the supplier. Why? This enables smaller response payloads to reduce payload size. Example: Removes service_config_history and rev_share details from the response. See the implementation for more details.' name: dehydrated in: query responses: '200': description: A successful response. schema: $ref: '#/definitions/pocket.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_ParamsMixin51 responses: '200': description: A successful response. schema: $ref: '#/definitions/pocket.tokenomics.QueryParamsResponse' default: description: An unexpected error response. schema: $ref: '#/definitions/google.rpc.Status' definitions: pocket.service.QueryAllRelayMiningDifficultyResponse: type: object properties: pagination: $ref: '#/definitions/cosmos.base.query.v1beta1.PageResponse' relayMiningDifficulty: type: array items: type: object $ref: '#/definitions/pocket.service.RelayMiningDifficulty' pocket.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/pocket.application.Params' pocket.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 pocket.migration.Params: description: 'Params defines the parameters for the module. Next free index: 4' type: object properties: allow_morse_account_import_overwrite: description: 'allow_morse_account_import_overwrite is a feature flag which is used to enable/disable the re-importing of Morse claimable accounts by the authority. Such a re-import will: - Ignore (i.e. leave) ALL claimed destination Shannon accounts/actors - Delete ALL existing onchain MorseClaimableAccounts - Import the new set of MorseClaimableAccounts from the provided MsgImportMorseClaimableAccounts This is useful for testing purposes, but should be disabled in production.' type: boolean morse_account_claiming_enabled: description: 'morse_account_claiming_enabled is a feature flag which is used to enable/disable the processing of Morse account/actor claim messages (i.e. `MsgClaimMorseAccount`, `MorseClaimApplication`, and `MorseClaimSupplier`).' type: boolean waive_morse_claim_gas_fees: type: boolean title: 'waive_morse_claim_gas_fees is a feature flag used to enable/disable the waiving of gas fees for txs that: - Contain exactly one secp256k1 signer - Contain at least one Morse account/actor claim messages - Do not contain any other messages other than Morse account/actor claim messages' pocket.application.QueryAllApplicationsResponse: type: object properties: applications: type: array items: type: object $ref: '#/definitions/pocket.application.Application' pagination: $ref: '#/definitions/cosmos.base.query.v1beta1.PageResponse' pocket.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' pocket.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_multiplier'' 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_multiplier_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? metadata: description: 'Optional metadata containing an experimental API specification for the service. When exposed via JSON, this field is base64 encoded and MUST be <= 100 KiB when decoded.' $ref: '#/definitions/pocket.shared.Metadata' name: description: (Optional) Human readable description of the service type: string title: 'TODO_POST_MAINNET: Rename service.name to service.description' 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 pocket.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' pocket.gateway.QueryAllGatewaysResponse: type: object properties: gateways: type: array items: type: object $ref: '#/definitions/pocket.gateway.Gateway' pagination: $ref: '#/definitions/cosmos.base.query.v1beta1.PageResponse' pocket.shared.ServiceConfigUpdate: description: 'ServiceConfigUpdate tracks a change in a supplier''s service configurations at a specific block height, enabling tracking of configuration changes over time. This record helps maintain a complete history of service configs and their availability periods.' type: object properties: activation_height: type: string format: int64 title: Block height at which this service configuration became active in the network deactivation_height: type: string format: int64 title: "Block height at which this service configuration was deactivated (0 if still active)\nFor service configs scheduled for deactivation:\n- This field stores the block height when deactivation will occur\n- After deactivation, the config remains in history only as needed for claim settlement\n- Once no longer required for settlement, the config is automatically removed by\n the EndBlockerPruneSupplierServiceConfigHistory process" operator_address: type: string title: Operator address of the supplier corresponding to the service configuration change service: title: The specific service configuration that was added, modified or scheduled for removal $ref: '#/definitions/pocket.shared.SupplierServiceConfig' pocket.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' service_config_history: description: 'List of historical service configuration updates, tracking the suppliers services update and corresponding activation heights.' type: array items: type: object $ref: '#/definitions/pocket.shared.ServiceConfigUpdate' services: type: array title: List of service configurations supported by this supplier items: type: object $ref: '#/definitions/pocket.shared.SupplierServiceConfig' 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) pocket.tokenomics.Params: description: Params defines the parameters for the tokenomics module. type: object properties: dao_reward_address: description: 'dao_reward_address is where the DAO''s portion of claims submitted are distributed. Bech32 cosmos address' type: string global_inflation_per_claim: description: 'global_inflation_per_claim is the percentage of a claim''s claimable uPOKT amount to be minted on settlement. GlobalMintTLM: Only used by the GlobalMintTLM at the end of claim settlement.' type: number format: double mint_allocation_percentages: description: 'mint_allocation_percentages represents the distribution of newly minted tokens. GlobalMintTLM: Only used by the GlobalMintTLM at the end of claim settlement.' $ref: '#/definitions/pocket.tokenomics.MintAllocationPercentages' mint_equals_burn_claim_distribution: description: 'mint_equals_burn_claim_distribution controls how the settlement amount is distributed when global inflation is disabled (global_inflation_per_claim = 0). MintEqualsBurnTLM: Only used by the MintEqualsBurnTLM at the end of claim settlement.' $ref: '#/definitions/pocket.tokenomics.MintEqualsBurnClaimDistribution' pocket.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' pocket.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/pocket.gateway.Params' pocket.migration.QueryAllMorseClaimableAccountResponse: type: object properties: morseClaimableAccount: type: array items: type: object $ref: '#/definitions/pocket.migration.MorseClaimableAccount' pagination: $ref: '#/definitions/cosmos.base.query.v1beta1.PageResponse' pocket.migration.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/pocket.migration.Params' pocket.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/pocket.proof.Params' pocket.proof.QueryGetProofResponse: type: object properties: proof: $ref: '#/definitions/pocket.proof.Proof' pocket.service.QueryGetRelayMiningDifficultyResponse: type: object properties: relayMiningDifficulty: $ref: '#/definitions/pocket.service.RelayMiningDifficulty' pocket.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/pocket.shared.Params' pocket.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/pocket.tokenomics.Params' pocket.proof.QueryGetClaimResponse: type: object properties: claim: $ref: '#/definitions/pocket.proof.Claim' pocket.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/pocket.session.Params' pocket.application.QueryGetApplicationResponse: type: object properties: application: $ref: '#/definitions/pocket.application.Application' 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 pocket.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/pocket.shared.ConfigOptions' value: type: string title: Config option value pocket.proof.QueryAllClaimsResponse: type: object properties: claims: type: array items: type: object $ref: '#/definitions/pocket.proof.Claim' pagination: $ref: '#/definitions/cosmos.base.query.v1beta1.PageResponse' pocket.shared.RPCType: description: "- UNKNOWN_RPC: Undefined RPC type\n - GRPC: gRPC\n - WEBSOCKET: WebSocket\n - JSON_RPC: JSON-RPC\n - REST: REST\n - COMET_BFT: CometBFT (REST + JSON-RPC)" type: string title: Enum to define RPC types default: UNKNOWN_RPC enum: - UNKNOWN_RPC - GRPC - WEBSOCKET - JSON_RPC - REST - COMET_BFT pocket.session.Session: description: 'Session is a fully hydrated session object that contains all the information for the Session and its participants.' type: object properties: application: title: A fully hydrated application object this session is for $ref: '#/definitions/pocket.application.Application' header: title: The header of the session containing lightweight data $ref: '#/definitions/pocket.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 pseudorandom 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/pocket.shared.Supplier' pocket.service.QueryAllServicesResponse: type: object properties: pagination: $ref: '#/definitions/cosmos.base.query.v1beta1.PageResponse' service: type: array items: type: object $ref: '#/definitions/pocket.shared.Service' pocket.proof.QueryAllProofsResponse: type: object properties: pagination: $ref: '#/definitions/cosmos.base.query.v1beta1.PageResponse' proofs: type: array items: type: object $ref: '#/definitions/pocket.proof.Proof' pocket.gateway.QueryGetGatewayResponse: type: object properties: gateway: $ref: '#/definitions/pocket.gateway.Gateway' pocket.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 pocket.supplier.QueryAllSuppliersResponse: type: object properties: pagination: $ref: '#/definitions/cosmos.base.query.v1beta1.PageResponse' supplier: type: array items: type: object $ref: '#/definitions/pocket.shared.Supplier' pocket.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 pocket.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/pocket.session.SessionHeader' supplier_operator_address: description: Address of the supplier's operator that submitted this proof. type: string pocket.tokenomics.MintAllocationPercentages: description: 'MintAllocationPercentages captures the distribution of newly minted tokens. The sum of all new tokens minted must equal 1. GlobalMintTLM: Only used by the GlobalMintTLM at the end of claim settlement. TODO_DISTANT_FUTURE: Remove this once global inflation is disabled in perpetuity.' type: object properties: application: description: application - % of newley minted tokens sent to the application account address. type: number format: double dao: description: dao - % of newley minted tokens sent to the DAO reward address. type: number format: double proposer: description: proposer - % of newley minted tokens sent to the block proposer (i.e. validator0 account address. type: number format: double source_owner: description: source_owner - % of newley minted tokens sent to the service source owner account address. type: number format: double supplier: description: supplier - % of newley minted tokens sent to the block supplier account address. type: number format: double pocket.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 pocket.shared.Metadata: description: 'Metadata message to hold additional metadata for a service. The raw bytes are stored on-chain and will be base64 encoded in JSON representations.' type: object properties: experimental_api_specs: description: 'EXPERIMENTAL: Serialized API spec limited to 100 KiB when decoded. TODO(@future): support dedicated openapi_ / openrpc_ fields once formats stabilize.' type: string format: byte pocket.supplier.QueryGetSupplierResponse: type: object properties: supplier: $ref: '#/definitions/pocket.shared.Supplier' pocket.session.Params: description: Params defines the parameters for the module. type: object properties: num_suppliers_per_session: description: 'num_suppliers_per_session is the maximum number of suppliers per session (application:supplier pair for a given session number).' type: string format: uint64 pocket.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' unstake_session_end_height: type: string format: uint64 title: Session end height at which the gateway initiated unstaking (0 if not unstaking) pocket.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 pocket.service.QueryGetServiceResponse: type: object properties: service: $ref: '#/definitions/pocket.shared.Service' google.protobuf.Any: type: object properties: '@type': type: string additionalProperties: {} pocket.application.Application: type: object title: Application represents the onchain definition and state of an application properties: address: type: string title: Bech32 address of the application delegatee_gateway_addresses: description: 'TODO_MAINNET_MIGRATION(@bryanchriswhite): Rename `delegatee_gateway_addresses` to `gateway_addresses_delegated_to` for better clarity and consistency. - Update all related configs, comments, variables, and function names throughout the codebase to reflect this change. - This field is a non-nullable list of Bech32-encoded delegatee Gateway addresses.' type: array items: type: string pending_transfer: title: Information about pending application transfers $ref: '#/definitions/pocket.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 the undelegation transaction was committed - Value: List of gateways being undelegated from at that session end height TODO_DOCUMENT(@red-0ne): Document the complete flow and rationale behind this mapping. - Ensure the documentation explains why tracking pending undelegations by session end height is necessary. - See: https://github.com/pokt-network/poktroll/issues/476#issuecomment-2052639906 for context and examples.' type: object additionalProperties: $ref: '#/definitions/pocket.application.UndelegatingGatewayList' service_configs: type: array title: "CRITICAL: Must contain EXACTLY ONE service config\n- Enforces a single service configuration per application to prevent over-servicing.\n- Field is repeated for legacy reasons and potential future compatibility.\n- References for rationale:\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/pocket.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) pocket.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/pocket.supplier.Params' pocket.migration.QueryMorseClaimableAccountResponse: type: object properties: morseClaimableAccount: $ref: '#/definitions/pocket.migration.MorseClaimableAccount' pocket.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/pocket.shared.SupplierEndpoint' rev_share: type: array title: List of revenue share configurations for the service items: type: object $ref: '#/definitions/pocket.shared.ServiceRevenueShare' service_id: type: string title: The Service ID for which the supplier is configured 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 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' pocket.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/pocket.proof.ClaimProofStatus' root_hash: description: 'Root hash from smt.SMST#Root(). TODO_UP_NEXT(@bryanchriswhite, #1497): Dehydrate the claim''s root hash from onchain events.' type: string format: byte session_header: description: Session header this claim is for. $ref: '#/definitions/pocket.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 pocket.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 pocket.session.QueryGetSessionResponse: type: object properties: session: $ref: '#/definitions/pocket.session.Session' pocket.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 pocket.migration.MorseClaimableAccount: description: 'Next free index: 11' type: object title: "MorseClaimableAccount\n- Onchain (persisted) representation of a Morse account claimable as part of Morse -> Shannon migration\n- Created during MorseAccountState import (see: MsgImportMorseClaimableAccount)\n- Created ONLY ONCE and NEVER deleted (per morse_src_address per network / re-genesis),\n unless the allow_morse_account_import_overwrite migration param is enabled\n- Updated ONLY ONCE, when claimed (per morse_src_address per network / re-genesis)" properties: application_stake: title: Staked tokens for application actor corresponding to this account address $ref: '#/definitions/cosmos.base.v1beta1.Coin' claimed_at_height: type: string format: int64 title: 'Shannon height at which the account was claimed Intended to remain empty until the account is claimed' morse_output_address: description: "ONLY applicable to Morse node/supplier accounts.\nHex-encoded address of the Morse output account/wallet associated with the Morse node/supplier.\n- E.g.: 00f9900606fa3d5c9179fc0c8513078a53a2073e\n- Morse custodial (i.e. owner) address, which owns the staked tokens of the operator.\n See 'pocket nodes --help' for more information. Note that this refers to the Morse CLI." type: string morse_src_address: description: "Hex-encoded address of the Morse account whose balance will be claimed.\nIf this MorseClaimableAccount represents a Morse node/supplier:\n - Morse non-custodial (i.e. operator) address.\n - If morse_output_address is not set, this is the custodial address.\n - See 'pocket nodes --help' for more information. Note that this refers to the Morse CLI." type: string shannon_dest_address: type: string title: 'bech32-encoded address of the Shannon account to mint claimed balance Intended to remain empty until the account is claimed' supplier_stake: title: 'Staked tokens for supplier actor corresponding to this account address DEV_NOTE: Context for Morse: - Supplier = Servicer or Node (not a full node) in Morse - All Validators are Servicers; not all Servicers are Validators - Top 100 staked Servicers are validators (automatic) - Only accounts for servicer stake balance transition TODO_MAINNET(@Olshansk): Develop strategy for bootstrapping validators in Shannon with cosmos ecosystem' $ref: '#/definitions/cosmos.base.v1beta1.Coin' unstaked_balance: title: Unstaked upokt tokens (account balance) available for claiming $ref: '#/definitions/cosmos.base.v1beta1.Coin' unstaking_time: description: 'The ISO 8601 UTC timestamp after which the Morse node/supplier unbonding period will have elapsed. It reflects the "unbonding completion time" of the Morse node/supplier, but is called "unstaking time" to comply with necessary Morse data structures.' type: string format: date-time pocket.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_unit_cost_granularity: description: "compute_unit_cost_granularity is the fraction of the base unit (uPOKT) used\nto represent the smallest price of a single compute unit.\ncompute_unit_cost_granularity defines the smallest fraction of uPOKT that can represent\nthe cost of a single compute unit.\n\nIt acts as a denominator in the formula:\n\n compute_unit_cost_in_uPOKT = compute_units_to_tokens_multiplier / compute_unit_cost_granularity\n\nThis enables high-precision pricing of compute units using integer math.\nFor example:\n\n+-------------------------------+---------------------------------------------+\n| compute_unit_cost_granularity | compute_units_to_tokens_multiplier unit |\n+-------------------------------+---------------------------------------------+\n| 1 | uPOKT |\n| 1_000 | nPOKT (nanoPOKT, 1e-3 uPOKT) |\n| 1_000_000 | pPOKT (picoPOKT, 1e-6 uPOKT) |\n+-------------------------------+---------------------------------------------+\n\n⚠️ Note: This value is a configurable global network parameter (not a constant).\nIt must be a power of 10, allowing precise denomination shifts without affecting\nongoing sessions. This prevents sessions from settling using parameters that\nwere not in effect during their creation." type: string format: uint64 compute_units_to_tokens_multiplier: description: 'The amount of tokens that a compute unit should translate to when settling a session. It is denominated in fractional uPOKT (1/compute_unit_cost_granularity) DEV_NOTE: This used to be under x/tokenomics but has been moved here to avoid cyclic dependencies.' type: string format: uint64 gateway_unbonding_period_sessions: description: 'gateway_unbonding_period_sessions is the number of sessions that a gateway must wait after unstaking before their staked assets are moved to its account balance.' 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 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 pocket.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/pocket.service.Params' pocket.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/pocket.shared.ConfigOption' rpc_type: title: Type of RPC exposed on the url above $ref: '#/definitions/pocket.shared.RPCType' url: type: string title: URL of the endpoint pocket.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 pocket.tokenomics.MintEqualsBurnClaimDistribution: description: 'MintEqualsBurnClaimDistribution captures the distribution of claimable tokens. The sum of all tokens being burnt from the application''s stake must equal 1. GlobalMintEqualsBurnTLM: Only used by the GlobalMintEqualsBurnTLM at the end of claim settlement.' type: object properties: application: description: application - % of claimable tokens sent to the application account address. type: number format: double dao: description: dao - % of claimable tokens sent to the DAO reward address. type: number format: double proposer: description: 'TODO_TECHDEBT: Rename "proposer" to "validators" to reflect the work done in #1753. This will span all references to the term "proposer" across documentation, functions, protobufs, variables, tooling, etc.. proposer - % of claimable tokens sent to the block proposer (i.e. validator0) account address.' type: number format: double source_owner: description: source_owner - % of claimable tokens sent to the service source owner account address. type: number format: double supplier: description: supplier - % of claimable tokens sent to the block supplier account address. type: number format: double pocket.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 governed by onchain params at the time of the session start. It is stored as an additional field to simplify 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 pseudorandom 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 pocket.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_MIGRATION: 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_MIGRATION: 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_MIGRATION: Consider renaming this to `proof_submission_fee_upokt`.' $ref: '#/definitions/cosmos.base.v1beta1.Coin'