Files
nym/contracts/mixnet/schema/raw/query.json
T
Jędrzej Stuczyński d8c84cc4d6 feat: key rotation (#5777)
* wip

* wip: wrap node's sphinx key with a manager

* wip: choosing correct key for packet processing

* further propagation of key rotation information

* attaching key rotation information to reply surbs

* added basic key rotation information to mixnet contract

* wip: introducing cached queries for key rotation info from nym api

* unified nym-api contract cache refreshing

* finish packet decoding

* multi api client + retrieving rotation id

* rotating sphinx key files

* logic for migrating config file

* wip: putting new sphinx keys to self described endpoints

* processing loop of KeyRotationController

* fixed sphinx key loading

* rotating bloomfilters

* wired up KeyRotationController

* flushing bloomfilters to disk and loading

* most of nym-node changes

* post rebase fixes

* fixes due to backwards compatible hostkeys

* split http state.rs file

* dont use deprecated fields

* fixed backwards compatible deserialisation of host information

* split up node describe cache

* added a dedicated CacheRefresher listener to perform full refresh outside the set interval

* controlling announced sphinx keys within nym-api

* retrieving rotation id when pulling topology

* split nym-nodes http handlers

* v2 nym-api endpoints to retrieve nodes with additional metadata information

* bug fixes...

* additional bugfixes and guards against stuck epoch

* testnet manager: set first nym-api as the rewarder

* fixed host information deserialisation

* fixed panic during first key rotation

* post rebase fixes

* clippy

* more guards against stuck epochs

* added helper method to reset node's sphinx key

* instantiate mixnet contract with custom key rotation validity

* additional bugfixes and debugging nym-api deadlock

* passing shutdown to nym apis client

* remove dead test

* post rebasing fixes

* missing MixnetQueryClient variants

* remove usage of deprecated methods in sdk example

* fix: incorrect method signature

* post rebasing fixes

* attempt to retrieve key rotation id before doing any config migration work

* ignore tests relying on networking behaviour

* allow networking failures in certain tests
2025-06-03 11:22:51 +01:00

1545 lines
45 KiB
JSON

{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "QueryMsg",
"oneOf": [
{
"type": "object",
"required": [
"admin"
],
"properties": {
"admin": {
"type": "object",
"additionalProperties": false
}
},
"additionalProperties": false
},
{
"description": "Gets build information of this contract, such as the commit hash used for the build or rustc version.",
"type": "object",
"required": [
"get_contract_version"
],
"properties": {
"get_contract_version": {
"type": "object",
"additionalProperties": false
}
},
"additionalProperties": false
},
{
"description": "Gets the stored contract version information that's required by the CW2 spec interface for migrations.",
"type": "object",
"required": [
"get_cw2_contract_version"
],
"properties": {
"get_cw2_contract_version": {
"type": "object",
"additionalProperties": false
}
},
"additionalProperties": false
},
{
"description": "Gets the address of the validator that's allowed to send rewarding transactions and transition the epoch.",
"type": "object",
"required": [
"get_rewarding_validator_address"
],
"properties": {
"get_rewarding_validator_address": {
"type": "object",
"additionalProperties": false
}
},
"additionalProperties": false
},
{
"description": "Gets the contract parameters that could be adjusted in a transaction by the contract admin.",
"type": "object",
"required": [
"get_state_params"
],
"properties": {
"get_state_params": {
"type": "object",
"additionalProperties": false
}
},
"additionalProperties": false
},
{
"description": "Gets the current state of the contract.",
"type": "object",
"required": [
"get_state"
],
"properties": {
"get_state": {
"type": "object",
"additionalProperties": false
}
},
"additionalProperties": false
},
{
"description": "Get the current expected version of a Nym Node.",
"type": "object",
"required": [
"get_current_nym_node_version"
],
"properties": {
"get_current_nym_node_version": {
"type": "object",
"additionalProperties": false
}
},
"additionalProperties": false
},
{
"description": "Get the version history of Nym Node.",
"type": "object",
"required": [
"get_nym_node_version_history"
],
"properties": {
"get_nym_node_version_history": {
"type": "object",
"properties": {
"limit": {
"description": "Controls the maximum number of entries returned by the query. Note that too large values will be overwritten by a saner default.",
"type": [
"integer",
"null"
],
"format": "uint32",
"minimum": 0.0
},
"start_after": {
"description": "Pagination control for the values returned by the query. Note that the provided value itself will **not** be used for the response.",
"type": [
"integer",
"null"
],
"format": "uint32",
"minimum": 0.0
}
},
"additionalProperties": false
}
},
"additionalProperties": false
},
{
"description": "Gets the current parameters used for reward calculation.",
"type": "object",
"required": [
"get_rewarding_params"
],
"properties": {
"get_rewarding_params": {
"type": "object",
"additionalProperties": false
}
},
"additionalProperties": false
},
{
"description": "Gets the status of the current rewarding epoch.",
"type": "object",
"required": [
"get_epoch_status"
],
"properties": {
"get_epoch_status": {
"type": "object",
"additionalProperties": false
}
},
"additionalProperties": false
},
{
"description": "Get the details of the current rewarding interval.",
"type": "object",
"required": [
"get_current_interval_details"
],
"properties": {
"get_current_interval_details": {
"type": "object",
"additionalProperties": false
}
},
"additionalProperties": false
},
{
"description": "Gets the basic list of all currently bonded mixnodes.",
"type": "object",
"required": [
"get_mix_node_bonds"
],
"properties": {
"get_mix_node_bonds": {
"type": "object",
"properties": {
"limit": {
"description": "Controls the maximum number of entries returned by the query. Note that too large values will be overwritten by a saner default.",
"type": [
"integer",
"null"
],
"format": "uint32",
"minimum": 0.0
},
"start_after": {
"description": "Pagination control for the values returned by the query. Note that the provided value itself will **not** be used for the response.",
"type": [
"integer",
"null"
],
"format": "uint32",
"minimum": 0.0
}
},
"additionalProperties": false
}
},
"additionalProperties": false
},
{
"description": "Gets the detailed list of all currently bonded mixnodes.",
"type": "object",
"required": [
"get_mix_nodes_detailed"
],
"properties": {
"get_mix_nodes_detailed": {
"type": "object",
"properties": {
"limit": {
"description": "Controls the maximum number of entries returned by the query. Note that too large values will be overwritten by a saner default.",
"type": [
"integer",
"null"
],
"format": "uint32",
"minimum": 0.0
},
"start_after": {
"description": "Pagination control for the values returned by the query. Note that the provided value itself will **not** be used for the response.",
"type": [
"integer",
"null"
],
"format": "uint32",
"minimum": 0.0
}
},
"additionalProperties": false
}
},
"additionalProperties": false
},
{
"description": "Gets the basic list of all unbonded mixnodes.",
"type": "object",
"required": [
"get_unbonded_mix_nodes"
],
"properties": {
"get_unbonded_mix_nodes": {
"type": "object",
"properties": {
"limit": {
"description": "Controls the maximum number of entries returned by the query. Note that too large values will be overwritten by a saner default.",
"type": [
"integer",
"null"
],
"format": "uint32",
"minimum": 0.0
},
"start_after": {
"description": "Pagination control for the values returned by the query. Note that the provided value itself will **not** be used for the response.",
"type": [
"integer",
"null"
],
"format": "uint32",
"minimum": 0.0
}
},
"additionalProperties": false
}
},
"additionalProperties": false
},
{
"description": "Gets the basic list of all unbonded mixnodes that belonged to a particular owner.",
"type": "object",
"required": [
"get_unbonded_mix_nodes_by_owner"
],
"properties": {
"get_unbonded_mix_nodes_by_owner": {
"type": "object",
"required": [
"owner"
],
"properties": {
"limit": {
"description": "Controls the maximum number of entries returned by the query. Note that too large values will be overwritten by a saner default.",
"type": [
"integer",
"null"
],
"format": "uint32",
"minimum": 0.0
},
"owner": {
"description": "The address of the owner of the mixnodes used for the query.",
"type": "string"
},
"start_after": {
"description": "Pagination control for the values returned by the query. Note that the provided value itself will **not** be used for the response.",
"type": [
"integer",
"null"
],
"format": "uint32",
"minimum": 0.0
}
},
"additionalProperties": false
}
},
"additionalProperties": false
},
{
"description": "Gets the basic list of all unbonded mixnodes that used the particular identity key.",
"type": "object",
"required": [
"get_unbonded_mix_nodes_by_identity_key"
],
"properties": {
"get_unbonded_mix_nodes_by_identity_key": {
"type": "object",
"required": [
"identity_key"
],
"properties": {
"identity_key": {
"description": "The identity key (base58-encoded ed25519 public key) of the mixnode used for the query.",
"type": "string"
},
"limit": {
"description": "Controls the maximum number of entries returned by the query. Note that too large values will be overwritten by a saner default.",
"type": [
"integer",
"null"
],
"format": "uint32",
"minimum": 0.0
},
"start_after": {
"description": "Pagination control for the values returned by the query. Note that the provided value itself will **not** be used for the response.",
"type": [
"integer",
"null"
],
"format": "uint32",
"minimum": 0.0
}
},
"additionalProperties": false
}
},
"additionalProperties": false
},
{
"description": "Gets the detailed mixnode information belonging to the particular owner.",
"type": "object",
"required": [
"get_owned_mixnode"
],
"properties": {
"get_owned_mixnode": {
"type": "object",
"required": [
"address"
],
"properties": {
"address": {
"description": "Address of the mixnode owner to use for the query.",
"type": "string"
}
},
"additionalProperties": false
}
},
"additionalProperties": false
},
{
"description": "Gets the detailed mixnode information of a node with the provided id.",
"type": "object",
"required": [
"get_mixnode_details"
],
"properties": {
"get_mixnode_details": {
"type": "object",
"required": [
"mix_id"
],
"properties": {
"mix_id": {
"description": "Id of the node to query.",
"type": "integer",
"format": "uint32",
"minimum": 0.0
}
},
"additionalProperties": false
}
},
"additionalProperties": false
},
{
"description": "Gets the rewarding information of a mixnode with the provided id.",
"type": "object",
"required": [
"get_mixnode_rewarding_details"
],
"properties": {
"get_mixnode_rewarding_details": {
"type": "object",
"required": [
"mix_id"
],
"properties": {
"mix_id": {
"description": "Id of the node to query.",
"type": "integer",
"format": "uint32",
"minimum": 0.0
}
},
"additionalProperties": false
}
},
"additionalProperties": false
},
{
"description": "Gets the stake saturation of a mixnode with the provided id.",
"type": "object",
"required": [
"get_stake_saturation"
],
"properties": {
"get_stake_saturation": {
"type": "object",
"required": [
"mix_id"
],
"properties": {
"mix_id": {
"description": "Id of the node to query.",
"type": "integer",
"format": "uint32",
"minimum": 0.0
}
},
"additionalProperties": false
}
},
"additionalProperties": false
},
{
"description": "Gets the basic information of an unbonded mixnode with the provided id.",
"type": "object",
"required": [
"get_unbonded_mix_node_information"
],
"properties": {
"get_unbonded_mix_node_information": {
"type": "object",
"required": [
"mix_id"
],
"properties": {
"mix_id": {
"description": "Id of the node to query.",
"type": "integer",
"format": "uint32",
"minimum": 0.0
}
},
"additionalProperties": false
}
},
"additionalProperties": false
},
{
"description": "Gets the detailed mixnode information of a node given its current identity key.",
"type": "object",
"required": [
"get_bonded_mixnode_details_by_identity"
],
"properties": {
"get_bonded_mixnode_details_by_identity": {
"type": "object",
"required": [
"mix_identity"
],
"properties": {
"mix_identity": {
"description": "The identity key (base58-encoded ed25519 public key) of the mixnode used for the query.",
"type": "string"
}
},
"additionalProperties": false
}
},
"additionalProperties": false
},
{
"description": "Gets the basic list of all currently bonded gateways.",
"type": "object",
"required": [
"get_gateways"
],
"properties": {
"get_gateways": {
"type": "object",
"properties": {
"limit": {
"description": "Controls the maximum number of entries returned by the query. Note that too large values will be overwritten by a saner default.",
"type": [
"integer",
"null"
],
"format": "uint32",
"minimum": 0.0
},
"start_after": {
"description": "Pagination control for the values returned by the query. Note that the provided value itself will **not** be used for the response.",
"type": [
"string",
"null"
]
}
},
"additionalProperties": false
}
},
"additionalProperties": false
},
{
"description": "Gets the gateway details of a node given its identity key.",
"type": "object",
"required": [
"get_gateway_bond"
],
"properties": {
"get_gateway_bond": {
"type": "object",
"required": [
"identity"
],
"properties": {
"identity": {
"description": "The identity key (base58-encoded ed25519 public key) of the gateway used for the query.",
"type": "string"
}
},
"additionalProperties": false
}
},
"additionalProperties": false
},
{
"description": "Gets the detailed gateway information belonging to the particular owner.",
"type": "object",
"required": [
"get_owned_gateway"
],
"properties": {
"get_owned_gateway": {
"type": "object",
"required": [
"address"
],
"properties": {
"address": {
"description": "Address of the gateway owner to use for the query.",
"type": "string"
}
},
"additionalProperties": false
}
},
"additionalProperties": false
},
{
"description": "Get the `NodeId`s of all the legacy gateways that they will get assigned once migrated into NymNodes",
"type": "object",
"required": [
"get_preassigned_gateway_ids"
],
"properties": {
"get_preassigned_gateway_ids": {
"type": "object",
"properties": {
"limit": {
"description": "Controls the maximum number of entries returned by the query. Note that too large values will be overwritten by a saner default.",
"type": [
"integer",
"null"
],
"format": "uint32",
"minimum": 0.0
},
"start_after": {
"description": "Pagination control for the values returned by the query. Note that the provided value itself will **not** be used for the response.",
"type": [
"string",
"null"
]
}
},
"additionalProperties": false
}
},
"additionalProperties": false
},
{
"description": "Gets the basic list of all currently bonded nymnodes.",
"type": "object",
"required": [
"get_nym_node_bonds_paged"
],
"properties": {
"get_nym_node_bonds_paged": {
"type": "object",
"properties": {
"limit": {
"description": "Controls the maximum number of entries returned by the query. Note that too large values will be overwritten by a saner default.",
"type": [
"integer",
"null"
],
"format": "uint32",
"minimum": 0.0
},
"start_after": {
"description": "Pagination control for the values returned by the query. Note that the provided value itself will **not** be used for the response.",
"type": [
"integer",
"null"
],
"format": "uint32",
"minimum": 0.0
}
},
"additionalProperties": false
}
},
"additionalProperties": false
},
{
"description": "Gets the detailed list of all currently bonded nymnodes.",
"type": "object",
"required": [
"get_nym_nodes_detailed_paged"
],
"properties": {
"get_nym_nodes_detailed_paged": {
"type": "object",
"properties": {
"limit": {
"description": "Controls the maximum number of entries returned by the query. Note that too large values will be overwritten by a saner default.",
"type": [
"integer",
"null"
],
"format": "uint32",
"minimum": 0.0
},
"start_after": {
"description": "Pagination control for the values returned by the query. Note that the provided value itself will **not** be used for the response.",
"type": [
"integer",
"null"
],
"format": "uint32",
"minimum": 0.0
}
},
"additionalProperties": false
}
},
"additionalProperties": false
},
{
"description": "Gets the basic information of an unbonded nym-node with the provided id.",
"type": "object",
"required": [
"get_unbonded_nym_node"
],
"properties": {
"get_unbonded_nym_node": {
"type": "object",
"required": [
"node_id"
],
"properties": {
"node_id": {
"description": "Id of the node to query.",
"type": "integer",
"format": "uint32",
"minimum": 0.0
}
},
"additionalProperties": false
}
},
"additionalProperties": false
},
{
"description": "Gets the basic list of all unbonded nymnodes.",
"type": "object",
"required": [
"get_unbonded_nym_nodes_paged"
],
"properties": {
"get_unbonded_nym_nodes_paged": {
"type": "object",
"properties": {
"limit": {
"description": "Controls the maximum number of entries returned by the query. Note that too large values will be overwritten by a saner default.",
"type": [
"integer",
"null"
],
"format": "uint32",
"minimum": 0.0
},
"start_after": {
"description": "Pagination control for the values returned by the query. Note that the provided value itself will **not** be used for the response.",
"type": [
"integer",
"null"
],
"format": "uint32",
"minimum": 0.0
}
},
"additionalProperties": false
}
},
"additionalProperties": false
},
{
"description": "Gets the basic list of all unbonded nymnodes that belonged to a particular owner.",
"type": "object",
"required": [
"get_unbonded_nym_nodes_by_owner_paged"
],
"properties": {
"get_unbonded_nym_nodes_by_owner_paged": {
"type": "object",
"required": [
"owner"
],
"properties": {
"limit": {
"description": "Controls the maximum number of entries returned by the query. Note that too large values will be overwritten by a saner default.",
"type": [
"integer",
"null"
],
"format": "uint32",
"minimum": 0.0
},
"owner": {
"description": "The address of the owner of the nym-node used for the query",
"type": "string"
},
"start_after": {
"description": "Pagination control for the values returned by the query. Note that the provided value itself will **not** be used for the response.",
"type": [
"integer",
"null"
],
"format": "uint32",
"minimum": 0.0
}
},
"additionalProperties": false
}
},
"additionalProperties": false
},
{
"description": "Gets the basic list of all unbonded nymnodes that used the particular identity key.",
"type": "object",
"required": [
"get_unbonded_nym_nodes_by_identity_key_paged"
],
"properties": {
"get_unbonded_nym_nodes_by_identity_key_paged": {
"type": "object",
"required": [
"identity_key"
],
"properties": {
"identity_key": {
"description": "The identity key (base58-encoded ed25519 public key) of the node used for the query.",
"type": "string"
},
"limit": {
"description": "Controls the maximum number of entries returned by the query. Note that too large values will be overwritten by a saner default.",
"type": [
"integer",
"null"
],
"format": "uint32",
"minimum": 0.0
},
"start_after": {
"description": "Pagination control for the values returned by the query. Note that the provided value itself will **not** be used for the response.",
"type": [
"integer",
"null"
],
"format": "uint32",
"minimum": 0.0
}
},
"additionalProperties": false
}
},
"additionalProperties": false
},
{
"description": "Gets the detailed nymnode information belonging to the particular owner.",
"type": "object",
"required": [
"get_owned_nym_node"
],
"properties": {
"get_owned_nym_node": {
"type": "object",
"required": [
"address"
],
"properties": {
"address": {
"description": "Address of the node owner to use for the query.",
"type": "string"
}
},
"additionalProperties": false
}
},
"additionalProperties": false
},
{
"description": "Gets the detailed nymnode information of a node with the provided id.",
"type": "object",
"required": [
"get_nym_node_details"
],
"properties": {
"get_nym_node_details": {
"type": "object",
"required": [
"node_id"
],
"properties": {
"node_id": {
"description": "Id of the node to query.",
"type": "integer",
"format": "uint32",
"minimum": 0.0
}
},
"additionalProperties": false
}
},
"additionalProperties": false
},
{
"description": "Gets the detailed nym-node information given its current identity key.",
"type": "object",
"required": [
"get_nym_node_details_by_identity_key"
],
"properties": {
"get_nym_node_details_by_identity_key": {
"type": "object",
"required": [
"node_identity"
],
"properties": {
"node_identity": {
"description": "The identity key (base58-encoded ed25519 public key) of the nym-node used for the query.",
"type": "string"
}
},
"additionalProperties": false
}
},
"additionalProperties": false
},
{
"description": "Gets the rewarding information of a nym-node with the provided id.",
"type": "object",
"required": [
"get_node_rewarding_details"
],
"properties": {
"get_node_rewarding_details": {
"type": "object",
"required": [
"node_id"
],
"properties": {
"node_id": {
"description": "Id of the node to query.",
"type": "integer",
"format": "uint32",
"minimum": 0.0
}
},
"additionalProperties": false
}
},
"additionalProperties": false
},
{
"description": "Gets the stake saturation of a nym-node with the provided id.",
"type": "object",
"required": [
"get_node_stake_saturation"
],
"properties": {
"get_node_stake_saturation": {
"type": "object",
"required": [
"node_id"
],
"properties": {
"node_id": {
"description": "Id of the node to query.",
"type": "integer",
"format": "uint32",
"minimum": 0.0
}
},
"additionalProperties": false
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"get_role_assignment"
],
"properties": {
"get_role_assignment": {
"type": "object",
"required": [
"role"
],
"properties": {
"role": {
"$ref": "#/definitions/Role"
}
},
"additionalProperties": false
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"get_rewarded_set_metadata"
],
"properties": {
"get_rewarded_set_metadata": {
"type": "object",
"additionalProperties": false
}
},
"additionalProperties": false
},
{
"description": "Gets all delegations associated with particular node",
"type": "object",
"required": [
"get_node_delegations"
],
"properties": {
"get_node_delegations": {
"type": "object",
"required": [
"node_id"
],
"properties": {
"limit": {
"description": "Controls the maximum number of entries returned by the query. Note that too large values will be overwritten by a saner default.",
"type": [
"integer",
"null"
],
"format": "uint32",
"minimum": 0.0
},
"node_id": {
"description": "Id of the node to query.",
"type": "integer",
"format": "uint32",
"minimum": 0.0
},
"start_after": {
"description": "Pagination control for the values returned by the query. Note that the provided value itself will **not** be used for the response.",
"type": [
"string",
"null"
]
}
},
"additionalProperties": false
}
},
"additionalProperties": false
},
{
"description": "Gets all delegations associated with particular delegator",
"type": "object",
"required": [
"get_delegator_delegations"
],
"properties": {
"get_delegator_delegations": {
"type": "object",
"required": [
"delegator"
],
"properties": {
"delegator": {
"description": "The address of the owner of the delegations.",
"type": "string"
},
"limit": {
"description": "Controls the maximum number of entries returned by the query. Note that too large values will be overwritten by a saner default.",
"type": [
"integer",
"null"
],
"format": "uint32",
"minimum": 0.0
},
"start_after": {
"description": "Pagination control for the values returned by the query. Note that the provided value itself will **not** be used for the response.",
"type": [
"array",
"null"
],
"items": [
{
"type": "integer",
"format": "uint32",
"minimum": 0.0
},
{
"type": "string"
}
],
"maxItems": 2,
"minItems": 2
}
},
"additionalProperties": false
}
},
"additionalProperties": false
},
{
"description": "Gets delegation information associated with particular mixnode - delegator pair",
"type": "object",
"required": [
"get_delegation_details"
],
"properties": {
"get_delegation_details": {
"type": "object",
"required": [
"delegator",
"node_id"
],
"properties": {
"delegator": {
"description": "The address of the owner of the delegation.",
"type": "string"
},
"node_id": {
"description": "Id of the node to query.",
"type": "integer",
"format": "uint32",
"minimum": 0.0
},
"proxy": {
"description": "Entity who made the delegation on behalf of the owner. If present, it's most likely the address of the vesting contract.",
"type": [
"string",
"null"
]
}
},
"additionalProperties": false
}
},
"additionalProperties": false
},
{
"description": "Gets all delegations in the system",
"type": "object",
"required": [
"get_all_delegations"
],
"properties": {
"get_all_delegations": {
"type": "object",
"properties": {
"limit": {
"description": "Controls the maximum number of entries returned by the query. Note that too large values will be overwritten by a saner default.",
"type": [
"integer",
"null"
],
"format": "uint32",
"minimum": 0.0
},
"start_after": {
"description": "Pagination control for the values returned by the query. Note that the provided value itself will **not** be used for the response.",
"type": [
"array",
"null"
],
"items": [
{
"type": "integer",
"format": "uint32",
"minimum": 0.0
},
{
"type": "string"
}
],
"maxItems": 2,
"minItems": 2
}
},
"additionalProperties": false
}
},
"additionalProperties": false
},
{
"description": "Gets the reward amount accrued by the node operator that has not yet been claimed.",
"type": "object",
"required": [
"get_pending_operator_reward"
],
"properties": {
"get_pending_operator_reward": {
"type": "object",
"required": [
"address"
],
"properties": {
"address": {
"description": "Address of the operator to use for the query.",
"type": "string"
}
},
"additionalProperties": false
}
},
"additionalProperties": false
},
{
"description": "Gets the reward amount accrued by the particular mixnode that has not yet been claimed.",
"type": "object",
"required": [
"get_pending_node_operator_reward"
],
"properties": {
"get_pending_node_operator_reward": {
"type": "object",
"required": [
"node_id"
],
"properties": {
"node_id": {
"description": "Id of the node to query.",
"type": "integer",
"format": "uint32",
"minimum": 0.0
}
},
"additionalProperties": false
}
},
"additionalProperties": false
},
{
"description": "Gets the reward amount accrued by the particular delegator that has not yet been claimed.",
"type": "object",
"required": [
"get_pending_delegator_reward"
],
"properties": {
"get_pending_delegator_reward": {
"type": "object",
"required": [
"address",
"node_id"
],
"properties": {
"address": {
"description": "Address of the delegator to use for the query.",
"type": "string"
},
"node_id": {
"description": "Id of the node to query.",
"type": "integer",
"format": "uint32",
"minimum": 0.0
},
"proxy": {
"description": "Entity who made the delegation on behalf of the owner. If present, it's most likely the address of the vesting contract.",
"type": [
"string",
"null"
]
}
},
"additionalProperties": false
}
},
"additionalProperties": false
},
{
"description": "Given the provided node performance, attempt to estimate the operator reward for the current epoch.",
"type": "object",
"required": [
"get_estimated_current_epoch_operator_reward"
],
"properties": {
"get_estimated_current_epoch_operator_reward": {
"type": "object",
"required": [
"estimated_performance",
"node_id"
],
"properties": {
"estimated_performance": {
"description": "The estimated performance for the current epoch of the given node.",
"allOf": [
{
"$ref": "#/definitions/Percent"
}
]
},
"estimated_work": {
"description": "The estimated work for the current epoch of the given node.",
"anyOf": [
{
"$ref": "#/definitions/Decimal"
},
{
"type": "null"
}
]
},
"node_id": {
"description": "Id of the node to query.",
"type": "integer",
"format": "uint32",
"minimum": 0.0
}
},
"additionalProperties": false
}
},
"additionalProperties": false
},
{
"description": "Given the provided node performance, attempt to estimate the delegator reward for the current epoch.",
"type": "object",
"required": [
"get_estimated_current_epoch_delegator_reward"
],
"properties": {
"get_estimated_current_epoch_delegator_reward": {
"type": "object",
"required": [
"address",
"estimated_performance",
"node_id"
],
"properties": {
"address": {
"description": "Address of the delegator to use for the query.",
"type": "string"
},
"estimated_performance": {
"description": "The estimated performance for the current epoch of the given node.",
"allOf": [
{
"$ref": "#/definitions/Percent"
}
]
},
"estimated_work": {
"description": "The estimated work for the current epoch of the given node.",
"anyOf": [
{
"$ref": "#/definitions/Decimal"
},
{
"type": "null"
}
]
},
"node_id": {
"description": "Id of the node to query.",
"type": "integer",
"format": "uint32",
"minimum": 0.0
}
},
"additionalProperties": false
}
},
"additionalProperties": false
},
{
"description": "Gets the list of all currently pending epoch events that will be resolved once the current epoch finishes.",
"type": "object",
"required": [
"get_pending_epoch_events"
],
"properties": {
"get_pending_epoch_events": {
"type": "object",
"properties": {
"limit": {
"description": "Controls the maximum number of entries returned by the query. Note that too large values will be overwritten by a saner default.",
"type": [
"integer",
"null"
],
"format": "uint32",
"minimum": 0.0
},
"start_after": {
"description": "Pagination control for the values returned by the query. Note that the provided value itself will **not** be used for the response.",
"type": [
"integer",
"null"
],
"format": "uint32",
"minimum": 0.0
}
},
"additionalProperties": false
}
},
"additionalProperties": false
},
{
"description": "Gets the list of all currently pending interval events that will be resolved once the current interval finishes.",
"type": "object",
"required": [
"get_pending_interval_events"
],
"properties": {
"get_pending_interval_events": {
"type": "object",
"properties": {
"limit": {
"description": "Controls the maximum number of entries returned by the query. Note that too large values will be overwritten by a saner default.",
"type": [
"integer",
"null"
],
"format": "uint32",
"minimum": 0.0
},
"start_after": {
"description": "Pagination control for the values returned by the query. Note that the provided value itself will **not** be used for the response.",
"type": [
"integer",
"null"
],
"format": "uint32",
"minimum": 0.0
}
},
"additionalProperties": false
}
},
"additionalProperties": false
},
{
"description": "Gets detailed information about a pending epoch event given its id.",
"type": "object",
"required": [
"get_pending_epoch_event"
],
"properties": {
"get_pending_epoch_event": {
"type": "object",
"required": [
"event_id"
],
"properties": {
"event_id": {
"description": "The unique id associated with the event.",
"type": "integer",
"format": "uint32",
"minimum": 0.0
}
},
"additionalProperties": false
}
},
"additionalProperties": false
},
{
"description": "Gets detailed information about a pending interval event given its id.",
"type": "object",
"required": [
"get_pending_interval_event"
],
"properties": {
"get_pending_interval_event": {
"type": "object",
"required": [
"event_id"
],
"properties": {
"event_id": {
"description": "The unique id associated with the event.",
"type": "integer",
"format": "uint32",
"minimum": 0.0
}
},
"additionalProperties": false
}
},
"additionalProperties": false
},
{
"description": "Gets the information about the number of currently pending epoch and interval events.",
"type": "object",
"required": [
"get_number_of_pending_events"
],
"properties": {
"get_number_of_pending_events": {
"type": "object",
"additionalProperties": false
}
},
"additionalProperties": false
},
{
"description": "Gets the signing nonce associated with the particular cosmos address.",
"type": "object",
"required": [
"get_signing_nonce"
],
"properties": {
"get_signing_nonce": {
"type": "object",
"required": [
"address"
],
"properties": {
"address": {
"description": "Cosmos address used for the query of the signing nonce.",
"type": "string"
}
},
"additionalProperties": false
}
},
"additionalProperties": false
},
{
"description": "Gets the current state config of the key rotation (i.e. starting epoch id and validity duration)",
"type": "object",
"required": [
"get_key_rotation_state"
],
"properties": {
"get_key_rotation_state": {
"type": "object",
"additionalProperties": false
}
},
"additionalProperties": false
},
{
"description": "Gets the current key rotation id",
"type": "object",
"required": [
"get_key_rotation_id"
],
"properties": {
"get_key_rotation_id": {
"type": "object",
"additionalProperties": false
}
},
"additionalProperties": false
}
],
"definitions": {
"Decimal": {
"description": "A fixed-point decimal value with 18 fractional digits, i.e. Decimal(1_000_000_000_000_000_000) == 1.0\n\nThe greatest possible value that can be represented is 340282366920938463463.374607431768211455 (which is (2^128 - 1) / 10^18)",
"type": "string"
},
"Percent": {
"description": "Percent represents a value between 0 and 100% (i.e. between 0.0 and 1.0)",
"allOf": [
{
"$ref": "#/definitions/Decimal"
}
]
},
"Role": {
"type": "string",
"enum": [
"eg",
"l1",
"l2",
"l3",
"xg",
"stb"
]
}
}
}