The Validator Registry contract stores an approved validators whitelist.
The main query of the contract - returns a list of approved validators sorted by total_delegated amount.
The Hub uses this query to equally distribute delegations between validators.
Config
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
pub struct Config {
pub owner: CanonicalAddr,
pub hub_contract: CanonicalAddr,
}
InitMsg
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
pub struct InstantiateMsg {
pub registry: Vec<Validator>,
pub hub_contract: String,
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
pub struct Validator {
pub address: String,
}
List of whitelisted validators
ExecuteMsg
AddValidator
Adds a validator to the registry. Can only be executed by the owner.
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
#[serde(rename_all = "snake_case")]
pub enum ExecuteMsg {
AddValidator { validator: Validator },
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
pub struct Validator {
pub address: String,
}
RemoveValidator
Removes a validator from the registry. Can only be executed by the owner.
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
#[serde(rename_all = "snake_case")]
pub enum ExecuteMsg {
RemoveValidator { address: String},
}
UpdateConfig
Updates a registry's configuration. Can only be issued by the owner.
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
#[serde(rename_all = "snake_case")]
pub enum ExecuteMsg {
UpdateConfig {
hub_contract: Option<String>,
},
}
* = optional
Redelegations
Re-delegate the delegation from the validator which removed to other whitelisted validator nodes.
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
#[serde(rename_all = "snake_case")]
pub enum ExecuteMsg {
Redelegations { address: String },
}
SetOwner
Transfer ownership permissions to a new owner address.
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
#[serde(rename_all = "snake_case")]
pub enum ExecuteMsg {
SetOwner {
new_owner_addr: String,
},
}
AcceptOwnership
The new owner accepts ownership permissions.
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
#[serde(rename_all = "snake_case")]
pub enum ExecuteMsg {
AcceptOwnership {},
}
QueryMsg
GetValidatorsForDelegation
Returns validators sorted by total_delegated amount.
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
#[serde(rename_all = "snake_case")]
pub enum QueryMsg {
GetValidatorsForDelegation {},
}
ValidatorResponse
returns list validatorResponse
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
pub struct ValidatorResponse {
#[serde(default)]
pub total_delegated: Uint128,
pub address: String,
}
total Sei delegated to validator
Config
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
#[serde(rename_all = "snake_case")]
pub enum QueryMsg {
Config {},
}
NewOwner
Query the address of the new owner.
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
#[serde(rename_all = "snake_case")]
pub enum QueryMsg {
NewOwner {},
}
NewOwnerResponse
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
pub struct NewOwnerResponse {
pub new_owner: String,
}