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