{ "$schema": "http://json-schema.org/draft-07/schema#", "title": "ExecuteMsg", "oneOf": [ { "type": "object", "required": [ "assign_node_layer" ], "properties": { "assign_node_layer": { "type": "object", "required": [ "layer", "mix_id" ], "properties": { "layer": { "$ref": "#/definitions/Layer" }, "mix_id": { "type": "integer", "format": "uint32", "minimum": 0.0 } }, "additionalProperties": false } }, "additionalProperties": false }, { "description": "Only owner of the node can crate the family with node as head", "type": "object", "required": [ "create_family" ], "properties": { "create_family": { "type": "object", "required": [ "label" ], "properties": { "label": { "type": "string" } }, "additionalProperties": false } }, "additionalProperties": false }, { "description": "Family head needs to sign the joining node IdentityKey", "type": "object", "required": [ "join_family" ], "properties": { "join_family": { "type": "object", "required": [ "family_head", "join_permit" ], "properties": { "family_head": { "$ref": "#/definitions/FamilyHead" }, "join_permit": { "$ref": "#/definitions/MessageSignature" } }, "additionalProperties": false } }, "additionalProperties": false }, { "type": "object", "required": [ "leave_family" ], "properties": { "leave_family": { "type": "object", "required": [ "family_head" ], "properties": { "family_head": { "$ref": "#/definitions/FamilyHead" } }, "additionalProperties": false } }, "additionalProperties": false }, { "type": "object", "required": [ "kick_family_member" ], "properties": { "kick_family_member": { "type": "object", "required": [ "member" ], "properties": { "member": { "type": "string" } }, "additionalProperties": false } }, "additionalProperties": false }, { "type": "object", "required": [ "create_family_on_behalf" ], "properties": { "create_family_on_behalf": { "type": "object", "required": [ "label", "owner_address" ], "properties": { "label": { "type": "string" }, "owner_address": { "type": "string" } }, "additionalProperties": false } }, "additionalProperties": false }, { "description": "Family head needs to sign the joining node IdentityKey, MixNode needs to provide its signature proving that it wants to join the family", "type": "object", "required": [ "join_family_on_behalf" ], "properties": { "join_family_on_behalf": { "type": "object", "required": [ "family_head", "join_permit", "member_address" ], "properties": { "family_head": { "$ref": "#/definitions/FamilyHead" }, "join_permit": { "$ref": "#/definitions/MessageSignature" }, "member_address": { "type": "string" } }, "additionalProperties": false } }, "additionalProperties": false }, { "type": "object", "required": [ "leave_family_on_behalf" ], "properties": { "leave_family_on_behalf": { "type": "object", "required": [ "family_head", "member_address" ], "properties": { "family_head": { "$ref": "#/definitions/FamilyHead" }, "member_address": { "type": "string" } }, "additionalProperties": false } }, "additionalProperties": false }, { "type": "object", "required": [ "kick_family_member_on_behalf" ], "properties": { "kick_family_member_on_behalf": { "type": "object", "required": [ "head_address", "member" ], "properties": { "head_address": { "type": "string" }, "member": { "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": [ "updated_parameters" ], "properties": { "updated_parameters": { "$ref": "#/definitions/ContractStateParams" } }, "additionalProperties": false } }, "additionalProperties": false }, { "type": "object", "required": [ "update_active_set_size" ], "properties": { "update_active_set_size": { "type": "object", "required": [ "active_set_size", "force_immediately" ], "properties": { "active_set_size": { "type": "integer", "format": "uint32", "minimum": 0.0 }, "force_immediately": { "type": "boolean" } }, "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": [ "advance_current_epoch" ], "properties": { "advance_current_epoch": { "type": "object", "required": [ "expected_active_set_size", "new_rewarded_set" ], "properties": { "expected_active_set_size": { "type": "integer", "format": "uint32", "minimum": 0.0 }, "new_rewarded_set": { "type": "array", "items": { "$ref": "#/definitions/LayerAssignment" } } }, "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": [ "bond_mixnode" ], "properties": { "bond_mixnode": { "type": "object", "required": [ "cost_params", "mix_node", "owner_signature" ], "properties": { "cost_params": { "$ref": "#/definitions/MixNodeCostParams" }, "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/MixNodeCostParams" }, "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_mixnode_cost_params" ], "properties": { "update_mixnode_cost_params": { "type": "object", "required": [ "new_costs" ], "properties": { "new_costs": { "$ref": "#/definitions/MixNodeCostParams" } }, "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/MixNodeCostParams" }, "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": [ "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": [ "delegate_to_mixnode" ], "properties": { "delegate_to_mixnode": { "type": "object", "required": [ "mix_id" ], "properties": { "mix_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_from_mixnode" ], "properties": { "undelegate_from_mixnode": { "type": "object", "required": [ "mix_id" ], "properties": { "mix_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_mixnode" ], "properties": { "reward_mixnode": { "type": "object", "required": [ "mix_id", "performance" ], "properties": { "mix_id": { "type": "integer", "format": "uint32", "minimum": 0.0 }, "performance": { "$ref": "#/definitions/Percent" } }, "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": [ "mix_id" ], "properties": { "mix_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 } ], "definitions": { "Coin": { "type": "object", "required": [ "amount", "denom" ], "properties": { "amount": { "$ref": "#/definitions/Uint128" }, "denom": { "type": "string" } } }, "ContractStateParams": { "description": "Contract parameters that could be adjusted in a transaction by the contract admin.", "type": "object", "required": [ "minimum_gateway_pledge", "minimum_mixnode_pledge" ], "properties": { "interval_operating_cost": { "description": "Defines the allowed interval operating cost range of operators. default: 0 - 1'000'000'000'000'000 (1 Billion native tokens - the total supply)", "default": { "maximum": "1000000000000000", "minimum": "0" }, "allOf": [ { "$ref": "#/definitions/RangedValue_for_Uint128" } ] }, "minimum_gateway_pledge": { "description": "Minimum amount a gateway must pledge to get into the system.", "allOf": [ { "$ref": "#/definitions/Coin" } ] }, "minimum_mixnode_delegation": { "description": "Minimum amount a delegator must stake in orders for his delegation to get accepted.", "anyOf": [ { "$ref": "#/definitions/Coin" }, { "type": "null" } ] }, "minimum_mixnode_pledge": { "description": "Minimum amount a mixnode must pledge to get into the system.", "allOf": [ { "$ref": "#/definitions/Coin" } ] }, "profit_margin": { "description": "Defines the allowed profit margin range of operators. default: 0% - 100%", "default": { "maximum": "1", "minimum": "0" }, "allOf": [ { "$ref": "#/definitions/RangedValue_for_Percent" } ] } }, "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" }, "FamilyHead": { "description": "Head of particular family as identified by its identity key (i.e. public component of its ed25519 keypair stringified into base58).", "type": "string" }, "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_size": { "description": "Defines the new size of the rewarded set.", "type": [ "integer", "null" ], "format": "uint32", "minimum": 0.0 }, "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 }, "Layer": { "type": "string", "enum": [ "One", "Two", "Three" ] }, "LayerAssignment": { "description": "Specifies layer assignment for the given mixnode.", "type": "object", "required": [ "layer", "mix_id" ], "properties": { "layer": { "description": "The layer to which it's going to be assigned", "allOf": [ { "$ref": "#/definitions/Layer" } ] }, "mix_id": { "description": "The id of the mixnode.", "type": "integer", "format": "uint32", "minimum": 0.0 } }, "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 }, "MixNodeCostParams": { "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 mixnode per the entire interval.", "allOf": [ { "$ref": "#/definitions/Coin" } ] }, "profit_margin_percent": { "description": "The profit margin of the associated mixnode, i.e. the desired percent of the reward to be distributed to the operator.", "allOf": [ { "$ref": "#/definitions/Percent" } ] } }, "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 }, "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" } } }