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

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

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