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
Address of contract owner that can feed in price values
Asset which fed-in prices will be denominated in
InstantiateMsg
Rust JSON
Copy #[derive( Serialize , Deserialize , Clone , Debug , PartialEq , JsonSchema )]
pub struct InstantiateMsg {
pub owner : String ,
pub base_asset : String ,
}
Copy {
"owner" : "terra1..." ,
"base_asset" : "uusd"
}
Address of contract owner that can feed in price values
Asset which fed-in prices will be denominated in
ExecuteMsg
UpdateConfig
Updates the configuration of the contract. Can only be issued by the owner.
Rust JSON
Copy #[derive( Serialize , Deserialize , Clone , Debug , PartialEq , JsonSchema )]
#[serde(rename_all = "snake_case" )]
pub enum ExecuteMsg {
UpdateConfig {
owner : Option < String >,
}
}
Copy {
"update_config" : {
"owner" : "terra1..."
}
}
* = optional
RegisterFeeder
Registers a feeder to the specified asset token.
Rust JSON
Copy #[derive( Serialize , Deserialize , Clone , Debug , PartialEq , JsonSchema )]
#[serde(rename_all = "snake_case" )]
pub enum ExecuteMsg {
RegisterFeeder {
asset : String ,
feeder : String ,
}
}
Copy {
"register_feeder" : {
"asset" : "terra1..." , // Stringified Cw20 contract address
"feeder" : "terra1..."
}
}
Address of feeder to register
FeedPrice
Feeds new price data. Can only be issued by the owner.
Rust JSON
Copy #[derive( Serialize , Deserialize , Clone , Debug , PartialEq , JsonSchema )]
#[serde(rename_all = "snake_case" )]
pub enum ExecuteMsg {
FeedPrice {
prices : Vec <( String , Decimal256 )>,
}
}
Copy {
"feed_price" : {
"prices" : [
[ "terra1..." , "123.456789" ] , // (Stringified Cw20 contract address, price)
[ "terra1..." , "123.456789" ]
]
}
}
Vec<(String, Decimal256)>
Vector of assets and their prices
QueryMsg
Config
Gets the Oracle contract configuration.
Rust JSON
Copy #[derive( Serialize , Deserialize , Clone , Debug , PartialEq , JsonSchema )]
#[serde(rename_all = "snake_case" )]
pub enum QueryMsg {
Config {}
}
ConfigResponse
Rust JSON
Copy #[derive( Serialize , Deserialize , Clone , Debug , PartialEq , JsonSchema )]
pub struct ConfigResponse {
pub owner : String ,
pub base_asset : String ,
}
Copy {
"owner" : "terra1..." ,
"base_asset" : "uusd"
}
Address of contract owner
Asset in which fed-in prices will be denominated
Feeder
Gets the feeder for the specified asset.
Rust JSON
Copy #[derive( Serialize , Deserialize , Clone , Debug , PartialEq , JsonSchema )]
#[serde(rename_all = "snake_case" )]
pub enum QueryMsg {
Feeder {
asset : String ,
}
}
Copy {
"feeder" : {
"asset" : "terra1..." // Stringified Cw20 Token contract address
}
}
Asset to get feeder information
FeederResponse
Rust JSON
Copy #[derive( Serialize , Deserialize , Clone , Debug , PartialEq , JsonSchema )]
pub struct FeederResponse {
pub asset : String ,
pub feeder : String ,
}
Copy {
"asset" : "terra1..." , // Stringified Cw20 Token contract address
"feeder" : "terra1..."
}
Address of feeder allowed to feed prices for this asset
Price
Gets price information for the specified base asset denominated in the quote asset.
Rust JSON
Copy #[derive( Serialize , Deserialize , Clone , Debug , PartialEq , JsonSchema )]
#[serde(rename_all = "snake_case" )]
pub enum QueryMsg {
Price {
base : String ,
quote : String ,
}
}
Copy {
"price" : {
"base" : "terra1..." , // Asset token contract HumanAddr in String form
"quote" : "uusd"
}
}
Asset for which to get price
Asset in which calculated price will be denominated
* = optional
PriceResponse
Rust JSON
Copy #[derive( Serialize , Deserialize , Clone , Debug , PartialEq , JsonSchema )]
pub struct PriceResponse {
pub rate : Decimal256 ,
pub last_updated_base : u64 ,
pub last_updated_quote : u64 ,
}
Copy {
"rate" : "123.456789" ,
"last_updated_base" : 123456 ,
"last_updated_quote" : 123456
}
Price of base
asset denominated in quote
assets
Unix block timestamp when the base
asset price was last fed in
Unix block timestamp when the quote
asset price was last fed in
Prices
Gets price information for all assets
Rust JSON
Copy #[derive( Serialize , Deserialize , Clone , Debug , PartialEq , JsonSchema )]
#[serde(rename_all = "snake_case" )]
pub enum QueryMsg {
Prices {
start_after : Option < String >,
limit : Option < u32 >,
}
}
Copy {
"prices" : {
"start_after" : "terra1..." , // Asset token contract HumanAddr in String form
"limit" : 10
}
}
Maximum number of query entries
PricesResponse
Rust JSON
Copy #[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 ,
}
Copy {
"prices" : [
{
"asset" : "terra1..." , // Stringified Cw20 token contract HumanAddr
"price" : "123.45678" ,
"last_updated_time" : 10000
}
{
"asset" : "terra1..." , // Stringified Cw20 token contract HumanAddr
"price" : "123.45678" ,
"last_updated_time" : 10000
}
]
}
Vector of Asset price information
Asset whose price is being read
Unix block timestamp when the price was last updated