Skip to content

Lock#

The Lock contract is responsible for locking up UST returned from shorting a mAsset through Mirror Mint operation.

InitMsg#

#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
pub struct InitMsg {
    pub owner: HumanAddr,
    pub mint_contract: HumanAddr,
    pub base_denom: String,
    pub lockup_period: u64,
}
Key Type Description
owner HumanAddr Owner address of Mirror Lock
mint_contract HumanAddr Address of Mirror Mint
base_denom String Native token denomination for stablecoin (TerraUSD)
lockup_period u64 Length of time in seconds which the UST from shorting will be locked for

HandleMsg#

UpdateConfig#

Updates the configuration of Lock contract. Can only be issued by the owner of the Mirror Lock.

#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
#[serde(rename_all = "snake_case")]
pub enum HandleMsg {
    UpdateConfig {
        owner: Option<HumanAddr>,
        mint_contract: Option<HumanAddr>,
        base_denom: Option<String>,
        lockup_period: Option<u64>,
    }
{
    "update_config": {
        "owner": "terra1...",
        "mint_contract": "terra1...",
        "base_denom": "uusd",
        "lockup_period": 8
    }
}
Key Type Description
owner* HumanAddr Owner address of Mirror Lock
mint_contract* HumanAddr Address of Mirror Mint
base_denom* String Native token denomination for stablecoin (TerraUSD)
lockup_period* u64 Length of time in seconds which the UST from shorting witll be locked for

*= optional

LockPositionFundsHook#

Locks the UST from shorting mAsset when short CDP is successfully created on Mirror Mint.

#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
#[serde(rename_all = "snake_case")]
pub enum HandleMsg {
    LockPositionFundsHook {
        position_idx: Uint128,
        receiver: HumanAddr,
    }
{
    "lock_position_funds_hook": {
        "position_idx": "10",
        "receiver": "terra1..."
    }
}
Key Type Description
position_idx Uint128 ID number of CDP from Mirror Mint
receiver HumanAddr Creator of CDP, who will receive unlocked funds

UnlockPositionFunds#

Locked UST fromLockPositionFundsHookis unlocked by sending this message afterlockup_periodhas passed. Can only be issued by the owner of the position (receiver).

#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
#[serde(rename_all = "snake_case")]
pub enum HandleMsg {
    UnlockPositionFunds {
        position_idx: Uint128,
    }
{
    "unlock_position_funds": {
        "position_idx": "10"
    }
}    
Key Type Description
position_idx Uint128 ID number of CDP from Mirror Mint to unlock funds from

ReleasePositionFunds#

Locked funds will be released and sent to the CDP creator upon closing of the position. This message unlocks funds even whenlock_periodhas not ended yet. Can only be issued by the mint contract when the position is being closed.

#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
#[serde(rename_all = "snake_case")]
pub enum HandleMsg {
    ReleasePositionFunds {
        position_idx: Uint128,
    }
{
    "release_position_funds": {
        "position_idx": "10"
    }
}
Key Type Description
position_idx Uint128 ID number of CDP from Mirror Mint to unlock funds from

QueryMsg#

Config#

Returns the configuration of Mirror Lock.

#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
#[serde(rename_all = "snake_case")]
pub enum QueryMsg {
    Config {}

Response#

#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
pub struct ConfigResponse {
    pub owner: HumanAddr,
    pub mint_contract: HumanAddr,
    pub base_denom: String,
    pub lockup_period: u64,
}
Key Type Description
owner HumanAddr Owner address of Mirror Lock
mint_contract HumanAddr Address of Mirror Mint
base_denom String Native token denomination for stablecoin (TerraUSD)
lockup_period u64 Length of time in seconds which the UST from shorting will be locked for
{
    "config": {}
}

Response#

{
    "config_response": {
        "owner": "terra1...",
        "mint_contract": "terra1...",
        "base_denom": "uusd",
        "lockup_period": 10
    }
}
Key Type Description
owner HumanAddr Owner address of Mirror Lock
mint_contract HumanAddr Address of Mirror Mint
base_denom String Native token denomination for stablecoin (TerraUSD)
lockup_period u64 Number of blocks which the UST from shorting will be locked for

PositionLockInfo#

Returns information about locked funds of a specific CDP.

#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
#[serde(rename_all = "snake_case")]
pub enum QueryMsg {
    PositionLockInfo {
        position_idx: Uint128,
    }
Key Type Description
position_idx Uint128 ID number of CDP from Mirror Mint to unlock funds from

Response#

#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
pub struct PositionLockInfoResponse {
    pub idx: Uint128,
    pub receiver: HumanAddr,
    pub locked_amount: Uint128,
    pub unlock_time: u64,
}
Key Type Description
idx Uint128 ID number of CDP from Mirror Mint to unlock funds from
receiver HumanAddr Creator of CDP, who will receive unlocked funds
locked_amount Uint128 Amount of base_denom locked from creating a Short CDP
unlock_time u64 Time when user is allowed to claim the locked_amount
{
    "position_lock_info": {
        "position_idx": "10"
    }
}
Key Type Description
position_idx Uint128 ID number of CDP from Mirror Mint to unlock funds from

Response#

{
    "position_lock_info_response": {
        "idx": "10",
        "receiver": "terra1...",
        "locked_funds": [
            [100, "1400"]
        ]
    }
}
Key Type Description
idx Uint128 ID number of CDP from Mirror Mint to unlock funds from
receiver HumanAddr Creator of CDP, who will receive unlocked funds
locked_funds Vec<(u64, Uint128)>

Description about
1. Block height which the fund was locked at
2. Amount of base_denom locked
from creating a Short CDP