Oracle

The Oracle contract acts as the price source for the Anchor Money Market. Stablecoin-denominated prices of bAssets are periodically reported by oracle feeders, and are made queriable by other smart contracts in the Anchor ecosystem.

Config

Key

Type

Description

owner

CanonicalAddr

Address of contract owner that can feed in price values

base_asset

String

Asset which fed-in prices will be denominated in

InstantiateMsg

#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
pub struct InstantiateMsg {
    pub owner: String, 
    pub base_asset: String, 
}

Key

Type

Description

owner

String

Address of contract owner that can feed in price values

base_asset

String

Asset which fed-in prices will be denominated in

ExecuteMsg

UpdateConfig

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

#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
#[serde(rename_all = "snake_case")]
pub enum ExecuteMsg {
    UpdateConfig {
        owner: Option<String>, 
    }
}

Key

Type

Description

owner*

String

Address of new owner

* = optional

RegisterFeeder

Registers a feeder to the specified asset token.

#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
#[serde(rename_all = "snake_case")]
pub enum ExecuteMsg {
    RegisterFeeder {
        asset: String, 
        feeder: String, 
    }
}

Key

Type

Description

asset

String

Asset to register feeder

feeder

String

Address of feeder to register

FeedPrice

Feeds new price data. Can only be issued by the owner.

#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
#[serde(rename_all = "snake_case")]
pub enum ExecuteMsg {
    FeedPrice {
        prices: Vec<(String, Decimal256)>, 
    }
}

Key

Type

Description

prices

Vec<(String, Decimal256)>

Vector of assets and their prices

QueryMsg

Config

Gets the Oracle contract configuration.

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

Key

Type

Description

ConfigResponse

#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
pub struct ConfigResponse {
    pub owner: String, 
    pub base_asset: String, 
}

Key

Type

Description

owner

String

Address of contract owner

base_asset

String

Asset in which fed-in prices will be denominated

Feeder

Gets the feeder for the specified asset.

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

Key

Type

Description

asset

String

Asset to get feeder information

FeederResponse

#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
pub struct FeederResponse {
    pub asset: String, 
    pub feeder: String, 
}

Key

Type

Description

asset

String

Asset type

feeder

String

Address of feeder allowed to feed prices for this asset

Price

Gets price information for the specified base asset denominated in the quote asset.

#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
#[serde(rename_all = "snake_case")]
pub enum QueryMsg {
    Price {
        base: String, 
        quote: String, 
    }
}

Key

Type

Description

base

String

Asset for which to get price

quote

String

Asset in which calculated price will be denominated

* = optional

PriceResponse

#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
pub struct PriceResponse {
    pub rate: Decimal256, 
    pub last_updated_base: u64, 
    pub last_updated_quote: u64, 
}

Key

Type

Description

rate

Decimal256

Price of base asset denominated in quote assets

last_updated_base

u64

Unix block timestamp when the base asset price was last fed in

last_updated_quote

u64

Unix block timestamp when the quote asset price was last fed in

Prices

Gets price information for all assets

#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
#[serde(rename_all = "snake_case")]
pub enum QueryMsg {
    Prices {
        start_after: Option<String>, 
        limit: Option<u32>, 
    }
}

Key

Type

Description

start_after*

String

Asset to start query

limit*

u32

Maximum number of query entries

PricesResponse

#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
pub struct PricesResponse {
    pub prices: Vec<PricesResponseElem>, 
}

#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
pub struct PricesResponseElem {
    pub asset: String,
    pub price: Decimal256,
    pub last_updated_time: u64,
}

Key

Type

Description

prices

Vec<PricesResponseElem>

Vector of Asset price information

Key

Type

Description

asset

String

Asset whose price is being read

price

Decimal256

Price of Asset

last_updated_time

u64

Unix block timestamp when the price was last updated

Last updated