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

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

msg

Binary

Base64-encoded string of JSON of Receive Hook

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

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

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

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

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

#[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

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

#[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

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

#[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?