{ "$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 }, { "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", "owner_signature" ], "properties": { "label": { "type": "string" }, "owner_signature": { "type": "string" } } } }, "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", "signature" ], "properties": { "family_head": { "type": "string" }, "signature": { "type": "string" } } } }, "additionalProperties": false }, { "type": "object", "required": [ "leave_family" ], "properties": { "leave_family": { "type": "object", "required": [ "family_head", "signature" ], "properties": { "family_head": { "type": "string" }, "signature": { "type": "string" } } } }, "additionalProperties": false }, { "type": "object", "required": [ "kick_family_member" ], "properties": { "kick_family_member": { "type": "object", "required": [ "member", "signature" ], "properties": { "member": { "type": "string" }, "signature": { "type": "string" } } } }, "additionalProperties": false }, { "type": "object", "required": [ "create_family_on_behalf" ], "properties": { "create_family_on_behalf": { "type": "object", "required": [ "label", "owner_address", "owner_signature" ], "properties": { "label": { "type": "string" }, "owner_address": { "type": "string" }, "owner_signature": { "type": "string" } } } }, "additionalProperties": false }, { "description": "Family head needs to sign the joining node IdentityKey", "type": "object", "required": [ "join_family_on_behalf" ], "properties": { "join_family_on_behalf": { "type": "object", "required": [ "family_head", "member_address", "signature" ], "properties": { "family_head": { "type": "string" }, "member_address": { "type": "string" }, "signature": { "type": "string" } } } }, "additionalProperties": false }, { "type": "object", "required": [ "leave_family_on_behalf" ], "properties": { "leave_family_on_behalf": { "type": "object", "required": [ "family_head", "member_address", "signature" ], "properties": { "family_head": { "type": "string" }, "member_address": { "type": "string" }, "signature": { "type": "string" } } } }, "additionalProperties": false }, { "type": "object", "required": [ "kick_family_member_on_behalf" ], "properties": { "kick_family_member_on_behalf": { "type": "object", "required": [ "head_address", "member", "signature" ], "properties": { "head_address": { "type": "string" }, "member": { "type": "string" }, "signature": { "type": "string" } } } }, "additionalProperties": false }, { "type": "object", "required": [ "update_rewarding_validator_address" ], "properties": { "update_rewarding_validator_address": { "type": "object", "required": [ "address" ], "properties": { "address": { "type": "string" } } } }, "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 }, { "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 }, { "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 }, { "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 }, { "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 }, { "type": "object", "required": [ "reconcile_epoch_events" ], "properties": { "reconcile_epoch_events": { "type": "object", "properties": { "limit": { "type": [ "integer", "null" ], "format": "uint32", "minimum": 0.0 } } } }, "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": { "type": "string" } } } }, "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": { "type": "string" } } } }, "additionalProperties": false }, { "type": "object", "required": [ "pledge_more" ], "properties": { "pledge_more": { "type": "object" } }, "additionalProperties": false }, { "type": "object", "required": [ "pledge_more_on_behalf" ], "properties": { "pledge_more_on_behalf": { "type": "object", "required": [ "owner" ], "properties": { "owner": { "type": "string" } } } }, "additionalProperties": false }, { "type": "object", "required": [ "unbond_mixnode" ], "properties": { "unbond_mixnode": { "type": "object" } }, "additionalProperties": false }, { "type": "object", "required": [ "unbond_mixnode_on_behalf" ], "properties": { "unbond_mixnode_on_behalf": { "type": "object", "required": [ "owner" ], "properties": { "owner": { "type": "string" } } } }, "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 }, { "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 }, { "type": "object", "required": [ "update_mixnode_config" ], "properties": { "update_mixnode_config": { "type": "object", "required": [ "new_config" ], "properties": { "new_config": { "$ref": "#/definitions/MixNodeConfigUpdate" } } } }, "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 }, { "type": "object", "required": [ "bond_gateway" ], "properties": { "bond_gateway": { "type": "object", "required": [ "gateway", "owner_signature" ], "properties": { "gateway": { "$ref": "#/definitions/Gateway" }, "owner_signature": { "type": "string" } } } }, "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": { "type": "string" } } } }, "additionalProperties": false }, { "type": "object", "required": [ "unbond_gateway" ], "properties": { "unbond_gateway": { "type": "object" } }, "additionalProperties": false }, { "type": "object", "required": [ "unbond_gateway_on_behalf" ], "properties": { "unbond_gateway_on_behalf": { "type": "object", "required": [ "owner" ], "properties": { "owner": { "type": "string" } } } }, "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 }, { "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 }, { "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 }, { "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 }, { "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 }, { "type": "object", "required": [ "withdraw_operator_reward" ], "properties": { "withdraw_operator_reward": { "type": "object" } }, "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 }, { "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 }, { "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 } ], "definitions": { "Coin": { "type": "object", "required": [ "amount", "denom" ], "properties": { "amount": { "$ref": "#/definitions/Uint128" }, "denom": { "type": "string" } } }, "ContractStateParams": { "type": "object", "required": [ "minimum_gateway_pledge", "minimum_mixnode_pledge" ], "properties": { "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" } ] } } }, "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" }, "Gateway": { "type": "object", "required": [ "clients_port", "host", "identity_key", "location", "mix_port", "sphinx_key", "version" ], "properties": { "clients_port": { "type": "integer", "format": "uint16", "minimum": 0.0 }, "host": { "type": "string" }, "identity_key": { "description": "Base58 encoded ed25519 EdDSA public key of the gateway used to derive shared keys with clients", "type": "string" }, "location": { "type": "string" }, "mix_port": { "type": "integer", "format": "uint16", "minimum": 0.0 }, "sphinx_key": { "type": "string" }, "version": { "type": "string" } } }, "IntervalRewardingParamsUpdate": { "type": "object", "properties": { "active_set_work_factor": { "anyOf": [ { "$ref": "#/definitions/Decimal" }, { "type": "null" } ] }, "interval_pool_emission": { "anyOf": [ { "$ref": "#/definitions/Percent" }, { "type": "null" } ] }, "reward_pool": { "anyOf": [ { "$ref": "#/definitions/Decimal" }, { "type": "null" } ] }, "rewarded_set_size": { "type": [ "integer", "null" ], "format": "uint32", "minimum": 0.0 }, "staking_supply": { "anyOf": [ { "$ref": "#/definitions/Decimal" }, { "type": "null" } ] }, "staking_supply_scale_factor": { "anyOf": [ { "$ref": "#/definitions/Percent" }, { "type": "null" } ] }, "sybil_resistance_percent": { "anyOf": [ { "$ref": "#/definitions/Percent" }, { "type": "null" } ] } } }, "Layer": { "type": "string", "enum": [ "One", "Two", "Three" ] }, "LayerAssignment": { "type": "object", "required": [ "layer", "mix_id" ], "properties": { "layer": { "$ref": "#/definitions/Layer" }, "mix_id": { "type": "integer", "format": "uint32", "minimum": 0.0 } } }, "MixNode": { "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:1234 or foo.mixnode.com", "type": "string" }, "http_api_port": { "type": "integer", "format": "uint16", "minimum": 0.0 }, "identity_key": { "description": "Base58-encoded ed25519 EdDSA public key.", "type": "string" }, "mix_port": { "type": "integer", "format": "uint16", "minimum": 0.0 }, "sphinx_key": { "description": "Base58-encoded x25519 public key used for sphinx key derivation.", "type": "string" }, "verloc_port": { "type": "integer", "format": "uint16", "minimum": 0.0 }, "version": { "type": "string" } } }, "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" } } }, "MixNodeCostParams": { "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": { "$ref": "#/definitions/Percent" } } }, "Percent": { "description": "Percent represents a value between 0 and 100% (i.e. between 0.0 and 1.0)", "allOf": [ { "$ref": "#/definitions/Decimal" } ] }, "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" } } }