Staking
The Staking Contract contains the logic for LP Token staking and reward distribution. ANC tokens allocated for as liquidity incentives are distributed pro-rata to stakers of the ANC-UST Terraswap pair LP token.
Config
Name
Type
Description
anchor_token
CanonicalAddr
Contract address of Anchor Token (ANC)
staking_token
CanonicalAddr
Contract address of ANC-UST Terraswap pair LP token
distribution_schedule
Vec<(u64, u64, Uint128)>
ANC distribution schedule for LP token stakers (start block [block], end block [block], distribution amount)
InstantiateMsg
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
pub struct InstantiateMsg {
pub anchor_token: String,
pub staking_token: String,
pub distribution_schedule: Vec<(u64, u64, Uint128)>,
}
Name
Type
Description
anchor_token
String
Contract address of Anchor Token (ANC)
staking_token
String
Contract address of ANC-UST Terraswap pair LP token
distribution_schedule
Vec<(u64, u64, Uint128)>
ANC distribution schedule for LP token stakers (start block [block], end block [block], distribution amount)
ExecuteMsg
Receive
Receive
Can be called during a CW20 token transfer when the Staking contract is the recipient. Allows the token transfer to execute a Receive Hook as a subsequent action within the same transaction.
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
#[serde(rename_all = "snake_case")]
pub enum ExecuteMsg {
Receive {
sender: String,
amount: Uint128,
msg: Binary,
}
}
Name
Type
Description
sender
String
Sender of the token transfer
amount
Uint128
Amount of tokens received
Unbond
Unbond
Unbonds specified amount of ANC-UST Terraswap LP tokens and transfers them to the message sender.
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
#[serde(rename_all = "snake_case")]
pub enum ExecuteMsg {
Unbond {
amount: Uint128,
}
}
Name
Type
Description
amount
Uint128
Amount of LP tokens to unbond
Withdraw
Withdraw
Withdraws user's accrued LP token staking rewards.
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
#[serde(rename_all = "snake_case")]
pub enum ExecuteMsg {
Withdraw {}
}
Name
Type
Description
MigrateStaking
MigrateStaking
Migrates ANC LP incentives to a new LP token staking contract.
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
#[serde(rename_all = "snake_case")]
pub enum ExecuteMsg {
MigrateStaking {
new_staking_contract: String,
}
}
Key
Type
Description
new_staking_contract
String
Contract address of new LP staking contract
Receive Hooks
Bond
Bond
WARNING
Sending LP tokens to the Staking contract without issuing this hook will lead to PERMANENT LOSS OF FUNDS.
Bonds LP tokens of the ANC-UST Terraswap pair.
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
#[serde(rename_all = "snake_case")]
pub enum Cw20HookMsg {
Bond {}
}
Name
Type
Description
QueryMsg
Config
Config
Gets the Staking contract configuration.
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
#[serde(rename_all = "snake_case")]
pub enum QueryMsg {
Config {}
}
Name
Type
Description
ConfigResponse
ConfigResponse
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
pub struct ConfigResponse {
pub anchor_token: String,
pub staking_token: String,
pub distribution_schedule: Vec<(u64, u64, Uin128)>,
}
Name
Type
Description
anchor_token
String
Contract address of Anchor Token (ANC)
staking_token
String
Contract address of ANC-UST Terraswap pair LP token
distribution_schedule
Vec<(u64, u64, Uint128)>
ANC distribution schedule for LP token stakers (start block [block], end block [block], amount)
State
State
Gets state information for the specified block number.
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
#[serde(rename_all = "snake_case")]
pub enum QueryMsg {
State {
block_height: Option<u64>,
}
}
Name
Type
Description
block_height
*
u64
Current block number [block]
* = optional
StateResponse
StateResponse
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
pub struct StateResponse {
pub last_distributed: u64,
pub total_bond_amount: Uint128,
pub global_reward_index: Decimal,
}
Name
Type
Description
last_distributed
u64
Block number when rewards where last distributed [block]
total_bond_amount
Uint128
Total amount of bonded LP tokens by all stakers
global_reward_index
Decimal
Global reward index for LP staking rewards
StakerInfo
StakerInfo
Gets reward information for the specified LP token staker.
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
#[serde(rename_all = "snake_case")]
pub enum QueryMsg {
StakerInfo {
staker: String,
block_height: Option<u64>,
}
}
Name
Type
Description
staker
String
Address of LP token staker
block_height
*
u64
Current block number [block]
* = optional
StakerInfoResponse
StakerInfoResponse
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
pub struct StakerInfoResponse {
pub staker: String,
pub reward_index: Decimal,
pub bond_amount: Uint128,
pub pending_reward: Uint128,
}
Name
Type
Description
staker
String
Address of LP token staker
reward_index
Decimal
Reward index of staker
bond_amount
Uint128
Amount of LP tokens bonded by staker
pending_rewards
Uint128
Amount of pending rewards of staker
Last updated
Was this helpful?