Rewards Dispatcher
The Rewards Dispatcher contract accumulates the rewards from Hub's delegations and manages the rewards.
All rewards from stSei tokens (the share of all rewards proportional to the amount of stSei tokens minted) are converted to Luna and are re-delegated back to the validators pool.
All rewards from bSei (the share of all rewards proportional to the amount of bSei tokens minted) are sent to the Reward Contract and handled the old way.
Config
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
pub struct Config {
pub owner: CanonicalAddr,
pub hub_contract: CanonicalAddr,
pub bsei_reward_contract: CanonicalAddr,
pub stsei_reward_denom: String,
pub bsei_reward_denom: String,
pub krp_keeper_address: CanonicalAddr,
pub krp_keeper_rate: Decimal,
pub swap_contract: CanonicalAddr,
pub swap_denoms: Vec<String>,
pub oracle_contract: CanonicalAddr,
}
owner
CanonicalAddr
Owner of the contract
hub_contract
CanonicalAddr
Contract address of Hub
bsei_reward_contract
CanonicalAddr
Contract address of bSei Reward
stsei_reward_denom
String
Native token denomination for distributed stSei rewards
bsei_reward_denom
String
Native token denomination for distributed bSei rewards
krp_keeper_address
CanonicalAddr
Address for fee distribution
krp_keeper_rate
Decimal
Amount of fees which goes to Fee Address
swap_contract
CanonicalAddr
Contract address of Swap Extension
swap_denoms
Vec<String>
The supported swap denoms type is configured as "usei"
oracle_contract
CanonicalAddr
Contract address of Oracle
InitMsg
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
pub struct InstantiateMsg {
pub hub_contract: String,
pub bsei_reward_contract: String,
pub stsei_reward_denom: String,
pub bsei_reward_denom: String,
pub krp_keeper_address: String,
pub krp_keeper_rate: Decimal,
pub swap_contract: String,
pub swap_denoms: Vec<String>,
pub oracle_contract: String,
}
hub_contract
CanonicalAddr
Contract address of Hub
bsei_reward_contract
CanonicalAddr
Contract address of bSei Reward
stsei_reward_denom
String
Native token denomination for distributed stSei rewards
bsei_reward_denom
String
Native token denomination for distributed bSei rewards
krp_keeper_address
CanonicalAddr
Address for fee distribution
krp_keeper_rate
Decimal
Amount of fees which goes to Fee Address
swap_contract
CanonicalAddr
Contract address of Swap Extension
swap_denoms
Vec<String>
The supported swap denoms type is configured as "usei"
oracle_contract
CanonicalAddr
Contract address of Oracle
ExecuteMsg
[Internal] SwapToRewardDenom
Swaps all native tokens on his balance to Sei and kUSD proportional to the minted stSei and bSei amount.
Can only be executed by the Hub.
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
#[serde(rename_all = "snake_case")]
pub enum ExecuteMsg {
SwapToRewardDenom {
bsei_total_bonded: Uint128,
stsei_total_bonded: Uint128,
},
}
bsei_total_bonded
Uint128
Total amount of minted bSei
stsei_total_bonded
Uint128
Total amount of minted stSei
[Internal] DispatchRewards
Re-stakes the stSei rewards (with subtracted Fee) and sends the bSei rewards to the old bSei Rewards contract (with subtracted Fee).
Can only be executed by the Hub.
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
#[serde(rename_all = "snake_case")]
pub enum ExecuteMsg {
DispatchRewards {},
}
UpdateConfig
Updates the dispatcher's configuration. Can only be executed by the owner.
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
#[serde(rename_all = "snake_case")]
pub enum ExecuteMsg {
UpdateConfig {
hub_contract: Option<String>,
bsei_reward_contract: Option<String>,
stsei_reward_denom: Option<String>,
bsei_reward_denom: Option<String>,
krp_keeper_address: Option<String>,
krp_keeper_rate: Option<Decimal>,
},
}
hub_contract
String
Contract address of Hub
bsei_reward_contract
String
Contract address of bSei Reward
stsei_reward_denom
String
Native token denomination for distributed stSei rewards
bsei_reward_denom
String
Native token denomination for distributed bSei rewards
krp_keeper_addres
String
Address for fee distribution
krp_keeper_rate
Decimal
Amount of fees which goes to Fee Address
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,
},
}
new_owner_addr
String
The address of new owner
AcceptOwnership
The new owner accepts ownership permissions.
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
#[serde(rename_all = "snake_case")]
pub enum ExecuteMsg {
AcceptOwnership {},
}
UpdateSwapContract
Update the contract address of the Swap Extension, which can only be modified by the owner.
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
#[serde(rename_all = "snake_case")]
pub enum ExecuteMsg {
UpdateSwapContract {
swap_contract: String,
},
}
swap_contract
String
The new address of Swap Extension
UpdateSwapDenom
Add or remove Native token denomination types supported by the Swap Extension.
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
#[serde(rename_all = "snake_case")]
pub enum ExecuteMsg {
UpdateSwapDenom {
swap_denom: String,
is_add: bool,
},
}
swap_denom
String
Add or remove Native token denomination types
is_add
bool
"true" represents "add", and "false" represents "remove"
UpdateOracleContract
Update the contract address of the Oracle, which can only be modified by the owner.
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
#[serde(rename_all = "snake_case")]
pub enum ExecuteMsg {
UpdateOracleContract{
oracle_contract: String,
}
}
oracle_contract
String
The new address of Oracle
QueryMsg
Config
Returns the current configuration of the contract.
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
#[serde(rename_all = "snake_case")]
pub enum QueryMsg {
Config {},
}
ConfigResponse
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
pub struct ConfigResponse {
pub owner: String,
pub hub_contract: String,
pub bsei_reward_contract: String,
pub stsei_reward_denom: String,
pub bsei_reward_denom: String,
pub krp_keeper_address: String,
pub krp_keeper_rate: Decimal,
pub swap_contract: String,
pub swap_denoms: Vec<String>,
pub oracle_contract: String,
}
owner
CanonicalAddr
Owner of the contract
hub_contract
CanonicalAddr
Contract address of Hub
bsei_reward_contract
CanonicalAddr
Contract address of bSei Reward
stsei_reward_denom
String
Native token denomination for distributed stSei rewards
bsei_reward_denom
String
Native token denomination for distributed bSei rewards
krp_keeper_address
CanonicalAddr
Address for fee distribution
krp_keeper_rate
Decimal
Amount of fees which goes to Fee Address
swap_contract
CanonicalAddr
Contract address of Swap Extension
swap_denoms
Vec<String>
The supported swap denoms type is configured as "usei"
oracle_contract
CanonicalAddr
Contract address of Oracle
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,
}
new_owner
String
The address of new owner
Last updated