d3b6a270de
* chore: expose admin method for migrating vesting delegations/mixnodes * don't error out on vested delegation no longer existing - perform a noop instead * cargo fmt * add message for batch migration
1766 lines
43 KiB
JSON
1766 lines
43 KiB
JSON
{
|
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
"title": "ExecuteMsg",
|
|
"oneOf": [
|
|
{
|
|
"description": "Change the admin",
|
|
"type": "object",
|
|
"required": [
|
|
"update_admin"
|
|
],
|
|
"properties": {
|
|
"update_admin": {
|
|
"type": "object",
|
|
"required": [
|
|
"admin"
|
|
],
|
|
"properties": {
|
|
"admin": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
{
|
|
"type": "object",
|
|
"required": [
|
|
"update_rewarding_validator_address"
|
|
],
|
|
"properties": {
|
|
"update_rewarding_validator_address": {
|
|
"type": "object",
|
|
"required": [
|
|
"address"
|
|
],
|
|
"properties": {
|
|
"address": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
{
|
|
"type": "object",
|
|
"required": [
|
|
"update_contract_state_params"
|
|
],
|
|
"properties": {
|
|
"update_contract_state_params": {
|
|
"type": "object",
|
|
"required": [
|
|
"update"
|
|
],
|
|
"properties": {
|
|
"update": {
|
|
"$ref": "#/definitions/ContractStateParamsUpdate"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
{
|
|
"type": "object",
|
|
"required": [
|
|
"update_current_nym_node_semver"
|
|
],
|
|
"properties": {
|
|
"update_current_nym_node_semver": {
|
|
"type": "object",
|
|
"required": [
|
|
"current_version"
|
|
],
|
|
"properties": {
|
|
"current_version": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
{
|
|
"type": "object",
|
|
"required": [
|
|
"update_active_set_distribution"
|
|
],
|
|
"properties": {
|
|
"update_active_set_distribution": {
|
|
"type": "object",
|
|
"required": [
|
|
"force_immediately",
|
|
"update"
|
|
],
|
|
"properties": {
|
|
"force_immediately": {
|
|
"type": "boolean"
|
|
},
|
|
"update": {
|
|
"$ref": "#/definitions/ActiveSetUpdate"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
{
|
|
"type": "object",
|
|
"required": [
|
|
"update_rewarding_params"
|
|
],
|
|
"properties": {
|
|
"update_rewarding_params": {
|
|
"type": "object",
|
|
"required": [
|
|
"force_immediately",
|
|
"updated_params"
|
|
],
|
|
"properties": {
|
|
"force_immediately": {
|
|
"type": "boolean"
|
|
},
|
|
"updated_params": {
|
|
"$ref": "#/definitions/IntervalRewardingParamsUpdate"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
{
|
|
"type": "object",
|
|
"required": [
|
|
"update_interval_config"
|
|
],
|
|
"properties": {
|
|
"update_interval_config": {
|
|
"type": "object",
|
|
"required": [
|
|
"epoch_duration_secs",
|
|
"epochs_in_interval",
|
|
"force_immediately"
|
|
],
|
|
"properties": {
|
|
"epoch_duration_secs": {
|
|
"type": "integer",
|
|
"format": "uint64",
|
|
"minimum": 0.0
|
|
},
|
|
"epochs_in_interval": {
|
|
"type": "integer",
|
|
"format": "uint32",
|
|
"minimum": 0.0
|
|
},
|
|
"force_immediately": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
{
|
|
"type": "object",
|
|
"required": [
|
|
"begin_epoch_transition"
|
|
],
|
|
"properties": {
|
|
"begin_epoch_transition": {
|
|
"type": "object",
|
|
"additionalProperties": false
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
{
|
|
"type": "object",
|
|
"required": [
|
|
"reconcile_epoch_events"
|
|
],
|
|
"properties": {
|
|
"reconcile_epoch_events": {
|
|
"type": "object",
|
|
"properties": {
|
|
"limit": {
|
|
"type": [
|
|
"integer",
|
|
"null"
|
|
],
|
|
"format": "uint32",
|
|
"minimum": 0.0
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
{
|
|
"type": "object",
|
|
"required": [
|
|
"assign_roles"
|
|
],
|
|
"properties": {
|
|
"assign_roles": {
|
|
"type": "object",
|
|
"required": [
|
|
"assignment"
|
|
],
|
|
"properties": {
|
|
"assignment": {
|
|
"$ref": "#/definitions/RoleAssignment"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
{
|
|
"type": "object",
|
|
"required": [
|
|
"bond_mixnode"
|
|
],
|
|
"properties": {
|
|
"bond_mixnode": {
|
|
"type": "object",
|
|
"required": [
|
|
"cost_params",
|
|
"mix_node",
|
|
"owner_signature"
|
|
],
|
|
"properties": {
|
|
"cost_params": {
|
|
"$ref": "#/definitions/NodeCostParams"
|
|
},
|
|
"mix_node": {
|
|
"$ref": "#/definitions/MixNode"
|
|
},
|
|
"owner_signature": {
|
|
"$ref": "#/definitions/MessageSignature"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
{
|
|
"type": "object",
|
|
"required": [
|
|
"bond_mixnode_on_behalf"
|
|
],
|
|
"properties": {
|
|
"bond_mixnode_on_behalf": {
|
|
"type": "object",
|
|
"required": [
|
|
"cost_params",
|
|
"mix_node",
|
|
"owner",
|
|
"owner_signature"
|
|
],
|
|
"properties": {
|
|
"cost_params": {
|
|
"$ref": "#/definitions/NodeCostParams"
|
|
},
|
|
"mix_node": {
|
|
"$ref": "#/definitions/MixNode"
|
|
},
|
|
"owner": {
|
|
"type": "string"
|
|
},
|
|
"owner_signature": {
|
|
"$ref": "#/definitions/MessageSignature"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
{
|
|
"type": "object",
|
|
"required": [
|
|
"pledge_more"
|
|
],
|
|
"properties": {
|
|
"pledge_more": {
|
|
"type": "object",
|
|
"additionalProperties": false
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
{
|
|
"type": "object",
|
|
"required": [
|
|
"pledge_more_on_behalf"
|
|
],
|
|
"properties": {
|
|
"pledge_more_on_behalf": {
|
|
"type": "object",
|
|
"required": [
|
|
"owner"
|
|
],
|
|
"properties": {
|
|
"owner": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
{
|
|
"type": "object",
|
|
"required": [
|
|
"decrease_pledge"
|
|
],
|
|
"properties": {
|
|
"decrease_pledge": {
|
|
"type": "object",
|
|
"required": [
|
|
"decrease_by"
|
|
],
|
|
"properties": {
|
|
"decrease_by": {
|
|
"$ref": "#/definitions/Coin"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
{
|
|
"type": "object",
|
|
"required": [
|
|
"decrease_pledge_on_behalf"
|
|
],
|
|
"properties": {
|
|
"decrease_pledge_on_behalf": {
|
|
"type": "object",
|
|
"required": [
|
|
"decrease_by",
|
|
"owner"
|
|
],
|
|
"properties": {
|
|
"decrease_by": {
|
|
"$ref": "#/definitions/Coin"
|
|
},
|
|
"owner": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
{
|
|
"type": "object",
|
|
"required": [
|
|
"unbond_mixnode"
|
|
],
|
|
"properties": {
|
|
"unbond_mixnode": {
|
|
"type": "object",
|
|
"additionalProperties": false
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
{
|
|
"type": "object",
|
|
"required": [
|
|
"unbond_mixnode_on_behalf"
|
|
],
|
|
"properties": {
|
|
"unbond_mixnode_on_behalf": {
|
|
"type": "object",
|
|
"required": [
|
|
"owner"
|
|
],
|
|
"properties": {
|
|
"owner": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
{
|
|
"type": "object",
|
|
"required": [
|
|
"update_cost_params"
|
|
],
|
|
"properties": {
|
|
"update_cost_params": {
|
|
"type": "object",
|
|
"required": [
|
|
"new_costs"
|
|
],
|
|
"properties": {
|
|
"new_costs": {
|
|
"$ref": "#/definitions/NodeCostParams"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
{
|
|
"type": "object",
|
|
"required": [
|
|
"update_mixnode_cost_params_on_behalf"
|
|
],
|
|
"properties": {
|
|
"update_mixnode_cost_params_on_behalf": {
|
|
"type": "object",
|
|
"required": [
|
|
"new_costs",
|
|
"owner"
|
|
],
|
|
"properties": {
|
|
"new_costs": {
|
|
"$ref": "#/definitions/NodeCostParams"
|
|
},
|
|
"owner": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
{
|
|
"type": "object",
|
|
"required": [
|
|
"update_mixnode_config"
|
|
],
|
|
"properties": {
|
|
"update_mixnode_config": {
|
|
"type": "object",
|
|
"required": [
|
|
"new_config"
|
|
],
|
|
"properties": {
|
|
"new_config": {
|
|
"$ref": "#/definitions/MixNodeConfigUpdate"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
{
|
|
"type": "object",
|
|
"required": [
|
|
"update_mixnode_config_on_behalf"
|
|
],
|
|
"properties": {
|
|
"update_mixnode_config_on_behalf": {
|
|
"type": "object",
|
|
"required": [
|
|
"new_config",
|
|
"owner"
|
|
],
|
|
"properties": {
|
|
"new_config": {
|
|
"$ref": "#/definitions/MixNodeConfigUpdate"
|
|
},
|
|
"owner": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
{
|
|
"type": "object",
|
|
"required": [
|
|
"migrate_mixnode"
|
|
],
|
|
"properties": {
|
|
"migrate_mixnode": {
|
|
"type": "object",
|
|
"additionalProperties": false
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
{
|
|
"type": "object",
|
|
"required": [
|
|
"bond_gateway"
|
|
],
|
|
"properties": {
|
|
"bond_gateway": {
|
|
"type": "object",
|
|
"required": [
|
|
"gateway",
|
|
"owner_signature"
|
|
],
|
|
"properties": {
|
|
"gateway": {
|
|
"$ref": "#/definitions/Gateway"
|
|
},
|
|
"owner_signature": {
|
|
"$ref": "#/definitions/MessageSignature"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
{
|
|
"type": "object",
|
|
"required": [
|
|
"bond_gateway_on_behalf"
|
|
],
|
|
"properties": {
|
|
"bond_gateway_on_behalf": {
|
|
"type": "object",
|
|
"required": [
|
|
"gateway",
|
|
"owner",
|
|
"owner_signature"
|
|
],
|
|
"properties": {
|
|
"gateway": {
|
|
"$ref": "#/definitions/Gateway"
|
|
},
|
|
"owner": {
|
|
"type": "string"
|
|
},
|
|
"owner_signature": {
|
|
"$ref": "#/definitions/MessageSignature"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
{
|
|
"type": "object",
|
|
"required": [
|
|
"unbond_gateway"
|
|
],
|
|
"properties": {
|
|
"unbond_gateway": {
|
|
"type": "object",
|
|
"additionalProperties": false
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
{
|
|
"type": "object",
|
|
"required": [
|
|
"unbond_gateway_on_behalf"
|
|
],
|
|
"properties": {
|
|
"unbond_gateway_on_behalf": {
|
|
"type": "object",
|
|
"required": [
|
|
"owner"
|
|
],
|
|
"properties": {
|
|
"owner": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
{
|
|
"type": "object",
|
|
"required": [
|
|
"update_gateway_config"
|
|
],
|
|
"properties": {
|
|
"update_gateway_config": {
|
|
"type": "object",
|
|
"required": [
|
|
"new_config"
|
|
],
|
|
"properties": {
|
|
"new_config": {
|
|
"$ref": "#/definitions/GatewayConfigUpdate"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
{
|
|
"type": "object",
|
|
"required": [
|
|
"update_gateway_config_on_behalf"
|
|
],
|
|
"properties": {
|
|
"update_gateway_config_on_behalf": {
|
|
"type": "object",
|
|
"required": [
|
|
"new_config",
|
|
"owner"
|
|
],
|
|
"properties": {
|
|
"new_config": {
|
|
"$ref": "#/definitions/GatewayConfigUpdate"
|
|
},
|
|
"owner": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
{
|
|
"type": "object",
|
|
"required": [
|
|
"migrate_gateway"
|
|
],
|
|
"properties": {
|
|
"migrate_gateway": {
|
|
"type": "object",
|
|
"properties": {
|
|
"cost_params": {
|
|
"anyOf": [
|
|
{
|
|
"$ref": "#/definitions/NodeCostParams"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
{
|
|
"type": "object",
|
|
"required": [
|
|
"bond_nym_node"
|
|
],
|
|
"properties": {
|
|
"bond_nym_node": {
|
|
"type": "object",
|
|
"required": [
|
|
"cost_params",
|
|
"node",
|
|
"owner_signature"
|
|
],
|
|
"properties": {
|
|
"cost_params": {
|
|
"$ref": "#/definitions/NodeCostParams"
|
|
},
|
|
"node": {
|
|
"$ref": "#/definitions/NymNode"
|
|
},
|
|
"owner_signature": {
|
|
"$ref": "#/definitions/MessageSignature"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
{
|
|
"type": "object",
|
|
"required": [
|
|
"unbond_nym_node"
|
|
],
|
|
"properties": {
|
|
"unbond_nym_node": {
|
|
"type": "object",
|
|
"additionalProperties": false
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
{
|
|
"type": "object",
|
|
"required": [
|
|
"update_node_config"
|
|
],
|
|
"properties": {
|
|
"update_node_config": {
|
|
"type": "object",
|
|
"required": [
|
|
"update"
|
|
],
|
|
"properties": {
|
|
"update": {
|
|
"$ref": "#/definitions/NodeConfigUpdate"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
{
|
|
"type": "object",
|
|
"required": [
|
|
"delegate"
|
|
],
|
|
"properties": {
|
|
"delegate": {
|
|
"type": "object",
|
|
"required": [
|
|
"node_id"
|
|
],
|
|
"properties": {
|
|
"node_id": {
|
|
"type": "integer",
|
|
"format": "uint32",
|
|
"minimum": 0.0
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
{
|
|
"type": "object",
|
|
"required": [
|
|
"delegate_to_mixnode_on_behalf"
|
|
],
|
|
"properties": {
|
|
"delegate_to_mixnode_on_behalf": {
|
|
"type": "object",
|
|
"required": [
|
|
"delegate",
|
|
"mix_id"
|
|
],
|
|
"properties": {
|
|
"delegate": {
|
|
"type": "string"
|
|
},
|
|
"mix_id": {
|
|
"type": "integer",
|
|
"format": "uint32",
|
|
"minimum": 0.0
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
{
|
|
"type": "object",
|
|
"required": [
|
|
"undelegate"
|
|
],
|
|
"properties": {
|
|
"undelegate": {
|
|
"type": "object",
|
|
"required": [
|
|
"node_id"
|
|
],
|
|
"properties": {
|
|
"node_id": {
|
|
"type": "integer",
|
|
"format": "uint32",
|
|
"minimum": 0.0
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
{
|
|
"type": "object",
|
|
"required": [
|
|
"undelegate_from_mixnode_on_behalf"
|
|
],
|
|
"properties": {
|
|
"undelegate_from_mixnode_on_behalf": {
|
|
"type": "object",
|
|
"required": [
|
|
"delegate",
|
|
"mix_id"
|
|
],
|
|
"properties": {
|
|
"delegate": {
|
|
"type": "string"
|
|
},
|
|
"mix_id": {
|
|
"type": "integer",
|
|
"format": "uint32",
|
|
"minimum": 0.0
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
{
|
|
"type": "object",
|
|
"required": [
|
|
"reward_node"
|
|
],
|
|
"properties": {
|
|
"reward_node": {
|
|
"type": "object",
|
|
"required": [
|
|
"node_id",
|
|
"params"
|
|
],
|
|
"properties": {
|
|
"node_id": {
|
|
"type": "integer",
|
|
"format": "uint32",
|
|
"minimum": 0.0
|
|
},
|
|
"params": {
|
|
"$ref": "#/definitions/NodeRewardingParameters"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
{
|
|
"type": "object",
|
|
"required": [
|
|
"withdraw_operator_reward"
|
|
],
|
|
"properties": {
|
|
"withdraw_operator_reward": {
|
|
"type": "object",
|
|
"additionalProperties": false
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
{
|
|
"type": "object",
|
|
"required": [
|
|
"withdraw_operator_reward_on_behalf"
|
|
],
|
|
"properties": {
|
|
"withdraw_operator_reward_on_behalf": {
|
|
"type": "object",
|
|
"required": [
|
|
"owner"
|
|
],
|
|
"properties": {
|
|
"owner": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
{
|
|
"type": "object",
|
|
"required": [
|
|
"withdraw_delegator_reward"
|
|
],
|
|
"properties": {
|
|
"withdraw_delegator_reward": {
|
|
"type": "object",
|
|
"required": [
|
|
"node_id"
|
|
],
|
|
"properties": {
|
|
"node_id": {
|
|
"type": "integer",
|
|
"format": "uint32",
|
|
"minimum": 0.0
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
{
|
|
"type": "object",
|
|
"required": [
|
|
"withdraw_delegator_reward_on_behalf"
|
|
],
|
|
"properties": {
|
|
"withdraw_delegator_reward_on_behalf": {
|
|
"type": "object",
|
|
"required": [
|
|
"mix_id",
|
|
"owner"
|
|
],
|
|
"properties": {
|
|
"mix_id": {
|
|
"type": "integer",
|
|
"format": "uint32",
|
|
"minimum": 0.0
|
|
},
|
|
"owner": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
{
|
|
"type": "object",
|
|
"required": [
|
|
"migrate_vested_mix_node"
|
|
],
|
|
"properties": {
|
|
"migrate_vested_mix_node": {
|
|
"type": "object",
|
|
"additionalProperties": false
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
{
|
|
"type": "object",
|
|
"required": [
|
|
"migrate_vested_delegation"
|
|
],
|
|
"properties": {
|
|
"migrate_vested_delegation": {
|
|
"type": "object",
|
|
"required": [
|
|
"mix_id"
|
|
],
|
|
"properties": {
|
|
"mix_id": {
|
|
"type": "integer",
|
|
"format": "uint32",
|
|
"minimum": 0.0
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
{
|
|
"description": "Admin-only: forcibly migrate the vested mixnode owned by `owner`. Used to drain the last vested entries so the mixnet contract can drop its dependency on the vesting contract.",
|
|
"type": "object",
|
|
"required": [
|
|
"admin_migrate_vested_mix_node"
|
|
],
|
|
"properties": {
|
|
"admin_migrate_vested_mix_node": {
|
|
"type": "object",
|
|
"required": [
|
|
"owner"
|
|
],
|
|
"properties": {
|
|
"owner": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
{
|
|
"description": "Admin-only: forcibly migrate the vested delegation `(mix_id, owner)`. Used to drain the last vested entries so the mixnet contract can drop its dependency on the vesting contract.",
|
|
"type": "object",
|
|
"required": [
|
|
"admin_migrate_vested_delegation"
|
|
],
|
|
"properties": {
|
|
"admin_migrate_vested_delegation": {
|
|
"type": "object",
|
|
"required": [
|
|
"mix_id",
|
|
"owner"
|
|
],
|
|
"properties": {
|
|
"mix_id": {
|
|
"type": "integer",
|
|
"format": "uint32",
|
|
"minimum": 0.0
|
|
},
|
|
"owner": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
{
|
|
"description": "Admin-only: batch variant of [`ExecuteMsg::AdminMigrateVestedDelegation`]. Reverts the entire batch on the first error, so callers should treat it as all-or-nothing.",
|
|
"type": "object",
|
|
"required": [
|
|
"admin_batch_migrate_vested_delegations"
|
|
],
|
|
"properties": {
|
|
"admin_batch_migrate_vested_delegations": {
|
|
"type": "object",
|
|
"required": [
|
|
"entries"
|
|
],
|
|
"properties": {
|
|
"entries": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/VestedDelegationMigrationEntry"
|
|
}
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
}
|
|
],
|
|
"definitions": {
|
|
"ActiveSetUpdate": {
|
|
"description": "Specification on how the active set should be updated.",
|
|
"type": "object",
|
|
"required": [
|
|
"entry_gateways",
|
|
"exit_gateways",
|
|
"mixnodes"
|
|
],
|
|
"properties": {
|
|
"entry_gateways": {
|
|
"description": "The expected number of nodes assigned entry gateway role (i.e. [`Role::EntryGateway`])",
|
|
"type": "integer",
|
|
"format": "uint32",
|
|
"minimum": 0.0
|
|
},
|
|
"exit_gateways": {
|
|
"description": "The expected number of nodes assigned exit gateway role (i.e. [`Role::ExitGateway`])",
|
|
"type": "integer",
|
|
"format": "uint32",
|
|
"minimum": 0.0
|
|
},
|
|
"mixnodes": {
|
|
"description": "The expected number of nodes assigned the 'mixnode' role, i.e. total of [`Role::Layer1`], [`Role::Layer2`] and [`Role::Layer3`].",
|
|
"type": "integer",
|
|
"format": "uint32",
|
|
"minimum": 0.0
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"Coin": {
|
|
"type": "object",
|
|
"required": [
|
|
"amount",
|
|
"denom"
|
|
],
|
|
"properties": {
|
|
"amount": {
|
|
"$ref": "#/definitions/Uint128"
|
|
},
|
|
"denom": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"ConfigScoreParamsUpdate": {
|
|
"type": "object",
|
|
"properties": {
|
|
"version_score_formula_params": {
|
|
"anyOf": [
|
|
{
|
|
"$ref": "#/definitions/VersionScoreFormulaParams"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
]
|
|
},
|
|
"version_weights": {
|
|
"anyOf": [
|
|
{
|
|
"$ref": "#/definitions/OutdatedVersionWeights"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"ContractStateParamsUpdate": {
|
|
"type": "object",
|
|
"properties": {
|
|
"config_score_params": {
|
|
"anyOf": [
|
|
{
|
|
"$ref": "#/definitions/ConfigScoreParamsUpdate"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
]
|
|
},
|
|
"delegations_params": {
|
|
"anyOf": [
|
|
{
|
|
"$ref": "#/definitions/DelegationsParams"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
]
|
|
},
|
|
"operators_params": {
|
|
"anyOf": [
|
|
{
|
|
"$ref": "#/definitions/OperatorsParamsUpdate"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"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"
|
|
},
|
|
"DelegationsParams": {
|
|
"type": "object",
|
|
"properties": {
|
|
"minimum_delegation": {
|
|
"description": "Minimum amount a delegator must stake in orders for his delegation to get accepted.",
|
|
"anyOf": [
|
|
{
|
|
"$ref": "#/definitions/Coin"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"Gateway": {
|
|
"description": "Information provided by the node operator during bonding that are used to allow other entities to use the services of this node.",
|
|
"type": "object",
|
|
"required": [
|
|
"clients_port",
|
|
"host",
|
|
"identity_key",
|
|
"location",
|
|
"mix_port",
|
|
"sphinx_key",
|
|
"version"
|
|
],
|
|
"properties": {
|
|
"clients_port": {
|
|
"description": "Port used by this gateway for listening for client requests.",
|
|
"type": "integer",
|
|
"format": "uint16",
|
|
"minimum": 0.0
|
|
},
|
|
"host": {
|
|
"description": "Network address of this gateway, for example 1.1.1.1 or foo.gateway.com",
|
|
"type": "string"
|
|
},
|
|
"identity_key": {
|
|
"description": "Base58 encoded ed25519 EdDSA public key of the gateway used to derive shared keys with clients",
|
|
"type": "string"
|
|
},
|
|
"location": {
|
|
"description": "The physical, self-reported, location of this gateway.",
|
|
"type": "string"
|
|
},
|
|
"mix_port": {
|
|
"description": "Port used by this gateway for listening for mix packets.",
|
|
"type": "integer",
|
|
"format": "uint16",
|
|
"minimum": 0.0
|
|
},
|
|
"sphinx_key": {
|
|
"description": "Base58-encoded x25519 public key used for sphinx key derivation.",
|
|
"type": "string"
|
|
},
|
|
"version": {
|
|
"description": "The self-reported semver version of this gateway.",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"GatewayConfigUpdate": {
|
|
"type": "object",
|
|
"required": [
|
|
"clients_port",
|
|
"host",
|
|
"location",
|
|
"mix_port",
|
|
"version"
|
|
],
|
|
"properties": {
|
|
"clients_port": {
|
|
"type": "integer",
|
|
"format": "uint16",
|
|
"minimum": 0.0
|
|
},
|
|
"host": {
|
|
"type": "string"
|
|
},
|
|
"location": {
|
|
"type": "string"
|
|
},
|
|
"mix_port": {
|
|
"type": "integer",
|
|
"format": "uint16",
|
|
"minimum": 0.0
|
|
},
|
|
"version": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"IntervalRewardingParamsUpdate": {
|
|
"description": "Specification on how the rewarding params should be updated.",
|
|
"type": "object",
|
|
"properties": {
|
|
"active_set_work_factor": {
|
|
"description": "Defines the new value of the active set work factor.",
|
|
"anyOf": [
|
|
{
|
|
"$ref": "#/definitions/Decimal"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
]
|
|
},
|
|
"interval_pool_emission": {
|
|
"description": "Defines the new value of the interval pool emission rate.",
|
|
"anyOf": [
|
|
{
|
|
"$ref": "#/definitions/Percent"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
]
|
|
},
|
|
"reward_pool": {
|
|
"description": "Defines the new value of the reward pool.",
|
|
"anyOf": [
|
|
{
|
|
"$ref": "#/definitions/Decimal"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
]
|
|
},
|
|
"rewarded_set_params": {
|
|
"description": "Defines the parameters of the rewarded set.",
|
|
"anyOf": [
|
|
{
|
|
"$ref": "#/definitions/RewardedSetParams"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
]
|
|
},
|
|
"staking_supply": {
|
|
"description": "Defines the new value of the staking supply.",
|
|
"anyOf": [
|
|
{
|
|
"$ref": "#/definitions/Decimal"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
]
|
|
},
|
|
"staking_supply_scale_factor": {
|
|
"description": "Defines the new value of the staking supply scale factor.",
|
|
"anyOf": [
|
|
{
|
|
"$ref": "#/definitions/Percent"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
]
|
|
},
|
|
"sybil_resistance_percent": {
|
|
"description": "Defines the new value of the sybil resistance percent.",
|
|
"anyOf": [
|
|
{
|
|
"$ref": "#/definitions/Percent"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"MessageSignature": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "integer",
|
|
"format": "uint8",
|
|
"minimum": 0.0
|
|
}
|
|
},
|
|
"MixNode": {
|
|
"description": "Information provided by the node operator during bonding that are used to allow other entities to use the services of this node.",
|
|
"type": "object",
|
|
"required": [
|
|
"host",
|
|
"http_api_port",
|
|
"identity_key",
|
|
"mix_port",
|
|
"sphinx_key",
|
|
"verloc_port",
|
|
"version"
|
|
],
|
|
"properties": {
|
|
"host": {
|
|
"description": "Network address of this mixnode, for example 1.1.1.1 or foo.mixnode.com",
|
|
"type": "string"
|
|
},
|
|
"http_api_port": {
|
|
"description": "Port used by this mixnode for its http(s) API",
|
|
"type": "integer",
|
|
"format": "uint16",
|
|
"minimum": 0.0
|
|
},
|
|
"identity_key": {
|
|
"description": "Base58-encoded ed25519 EdDSA public key.",
|
|
"type": "string"
|
|
},
|
|
"mix_port": {
|
|
"description": "Port used by this mixnode for listening for mix packets.",
|
|
"type": "integer",
|
|
"format": "uint16",
|
|
"minimum": 0.0
|
|
},
|
|
"sphinx_key": {
|
|
"description": "Base58-encoded x25519 public key used for sphinx key derivation.",
|
|
"type": "string"
|
|
},
|
|
"verloc_port": {
|
|
"description": "Port used by this mixnode for listening for verloc requests.",
|
|
"type": "integer",
|
|
"format": "uint16",
|
|
"minimum": 0.0
|
|
},
|
|
"version": {
|
|
"description": "The self-reported semver version of this mixnode.",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"MixNodeConfigUpdate": {
|
|
"type": "object",
|
|
"required": [
|
|
"host",
|
|
"http_api_port",
|
|
"mix_port",
|
|
"verloc_port",
|
|
"version"
|
|
],
|
|
"properties": {
|
|
"host": {
|
|
"type": "string"
|
|
},
|
|
"http_api_port": {
|
|
"type": "integer",
|
|
"format": "uint16",
|
|
"minimum": 0.0
|
|
},
|
|
"mix_port": {
|
|
"type": "integer",
|
|
"format": "uint16",
|
|
"minimum": 0.0
|
|
},
|
|
"verloc_port": {
|
|
"type": "integer",
|
|
"format": "uint16",
|
|
"minimum": 0.0
|
|
},
|
|
"version": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"NodeConfigUpdate": {
|
|
"type": "object",
|
|
"properties": {
|
|
"custom_http_port": {
|
|
"type": [
|
|
"integer",
|
|
"null"
|
|
],
|
|
"format": "uint16",
|
|
"minimum": 0.0
|
|
},
|
|
"host": {
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
},
|
|
"restore_default_http_port": {
|
|
"default": false,
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"NodeCostParams": {
|
|
"description": "The cost parameters, or the cost function, defined for the particular mixnode that influences how the rewards should be split between the node operator and its delegators.",
|
|
"type": "object",
|
|
"required": [
|
|
"interval_operating_cost",
|
|
"profit_margin_percent"
|
|
],
|
|
"properties": {
|
|
"interval_operating_cost": {
|
|
"description": "Operating cost of the associated node per the entire interval.",
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/definitions/Coin"
|
|
}
|
|
]
|
|
},
|
|
"profit_margin_percent": {
|
|
"description": "The profit margin of the associated node, i.e. the desired percent of the reward to be distributed to the operator.",
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/definitions/Percent"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"NodeRewardingParameters": {
|
|
"description": "Parameters used for rewarding particular node.",
|
|
"type": "object",
|
|
"required": [
|
|
"performance",
|
|
"work_factor"
|
|
],
|
|
"properties": {
|
|
"performance": {
|
|
"description": "Performance of the particular node in the current epoch.",
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/definitions/Percent"
|
|
}
|
|
]
|
|
},
|
|
"work_factor": {
|
|
"description": "Amount of work performed by this node in the current epoch also known as 'omega' in the paper",
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/definitions/Decimal"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"NymNode": {
|
|
"description": "Information provided by the node operator during bonding that are used to allow other entities to use the services of this node.",
|
|
"type": "object",
|
|
"required": [
|
|
"host",
|
|
"identity_key"
|
|
],
|
|
"properties": {
|
|
"custom_http_port": {
|
|
"description": "Allow specifying custom port for accessing the http, and thus self-described, api of this node for the capabilities discovery.",
|
|
"type": [
|
|
"integer",
|
|
"null"
|
|
],
|
|
"format": "uint16",
|
|
"minimum": 0.0
|
|
},
|
|
"host": {
|
|
"description": "Network address of this nym-node, for example 1.1.1.1 or foo.mixnode.com that is used to discover other capabilities of this node.",
|
|
"type": "string"
|
|
},
|
|
"identity_key": {
|
|
"description": "Base58-encoded ed25519 EdDSA public key.",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"OperatorsParamsUpdate": {
|
|
"type": "object",
|
|
"properties": {
|
|
"interval_operating_cost": {
|
|
"anyOf": [
|
|
{
|
|
"$ref": "#/definitions/RangedValue_for_Uint128"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
]
|
|
},
|
|
"minimum_pledge": {
|
|
"anyOf": [
|
|
{
|
|
"$ref": "#/definitions/Coin"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
]
|
|
},
|
|
"profit_margin": {
|
|
"anyOf": [
|
|
{
|
|
"$ref": "#/definitions/RangedValue_for_Percent"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"OutdatedVersionWeights": {
|
|
"description": "Defines weights for calculating numbers of versions behind the current release.",
|
|
"type": "object",
|
|
"required": [
|
|
"major",
|
|
"minor",
|
|
"patch",
|
|
"prerelease"
|
|
],
|
|
"properties": {
|
|
"major": {
|
|
"type": "integer",
|
|
"format": "uint32",
|
|
"minimum": 0.0
|
|
},
|
|
"minor": {
|
|
"type": "integer",
|
|
"format": "uint32",
|
|
"minimum": 0.0
|
|
},
|
|
"patch": {
|
|
"type": "integer",
|
|
"format": "uint32",
|
|
"minimum": 0.0
|
|
},
|
|
"prerelease": {
|
|
"type": "integer",
|
|
"format": "uint32",
|
|
"minimum": 0.0
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"Percent": {
|
|
"description": "Percent represents a value between 0 and 100% (i.e. between 0.0 and 1.0)",
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/definitions/Decimal"
|
|
}
|
|
]
|
|
},
|
|
"RangedValue_for_Percent": {
|
|
"type": "object",
|
|
"required": [
|
|
"maximum",
|
|
"minimum"
|
|
],
|
|
"properties": {
|
|
"maximum": {
|
|
"$ref": "#/definitions/Percent"
|
|
},
|
|
"minimum": {
|
|
"$ref": "#/definitions/Percent"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"RangedValue_for_Uint128": {
|
|
"type": "object",
|
|
"required": [
|
|
"maximum",
|
|
"minimum"
|
|
],
|
|
"properties": {
|
|
"maximum": {
|
|
"$ref": "#/definitions/Uint128"
|
|
},
|
|
"minimum": {
|
|
"$ref": "#/definitions/Uint128"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"RewardedSetParams": {
|
|
"type": "object",
|
|
"required": [
|
|
"entry_gateways",
|
|
"exit_gateways",
|
|
"mixnodes",
|
|
"standby"
|
|
],
|
|
"properties": {
|
|
"entry_gateways": {
|
|
"description": "The expected number of nodes assigned entry gateway role (i.e. [`Role::EntryGateway`])",
|
|
"type": "integer",
|
|
"format": "uint32",
|
|
"minimum": 0.0
|
|
},
|
|
"exit_gateways": {
|
|
"description": "The expected number of nodes assigned exit gateway role (i.e. [`Role::ExitGateway`])",
|
|
"type": "integer",
|
|
"format": "uint32",
|
|
"minimum": 0.0
|
|
},
|
|
"mixnodes": {
|
|
"description": "The expected number of nodes assigned the 'mixnode' role, i.e. total of [`Role::Layer1`], [`Role::Layer2`] and [`Role::Layer3`].",
|
|
"type": "integer",
|
|
"format": "uint32",
|
|
"minimum": 0.0
|
|
},
|
|
"standby": {
|
|
"description": "Number of nodes in the 'standby' set. (i.e. [`Role::Standby`])",
|
|
"type": "integer",
|
|
"format": "uint32",
|
|
"minimum": 0.0
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"Role": {
|
|
"type": "string",
|
|
"enum": [
|
|
"eg",
|
|
"l1",
|
|
"l2",
|
|
"l3",
|
|
"xg",
|
|
"stb"
|
|
]
|
|
},
|
|
"RoleAssignment": {
|
|
"type": "object",
|
|
"required": [
|
|
"nodes",
|
|
"role"
|
|
],
|
|
"properties": {
|
|
"nodes": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "integer",
|
|
"format": "uint32",
|
|
"minimum": 0.0
|
|
}
|
|
},
|
|
"role": {
|
|
"$ref": "#/definitions/Role"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"Uint128": {
|
|
"description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```",
|
|
"type": "string"
|
|
},
|
|
"VersionScoreFormulaParams": {
|
|
"description": "Given the formula of version_score = penalty ^ (versions_behind_factor ^ penalty_scaling) define the relevant parameters",
|
|
"type": "object",
|
|
"required": [
|
|
"penalty",
|
|
"penalty_scaling"
|
|
],
|
|
"properties": {
|
|
"penalty": {
|
|
"$ref": "#/definitions/Decimal"
|
|
},
|
|
"penalty_scaling": {
|
|
"$ref": "#/definitions/Decimal"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"VestedDelegationMigrationEntry": {
|
|
"type": "object",
|
|
"required": [
|
|
"mix_id",
|
|
"owner"
|
|
],
|
|
"properties": {
|
|
"mix_id": {
|
|
"type": "integer",
|
|
"format": "uint32",
|
|
"minimum": 0.0
|
|
},
|
|
"owner": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
}
|
|
}
|
|
}
|