5 个版本 (3 个重大更新)
0.4.0 | 2022年4月29日 |
---|---|
0.3.1 | 2022年4月14日 |
0.3.0 | 2022年4月11日 |
0.2.0 | 2022年4月7日 |
0.1.0 | 2022年3月18日 |
#10 in #terra
105KB
2K SLoC
Pyth Network Terra SDK
该软件包提供从 Terra 网络上的 Pyth Network 预言机读取价格馈送的工具。它还包括一个 示例合约,展示如何从链上 Terra 应用程序读取价格馈送。
安装
将此软件包添加到 Terra 合约的 Cargo.toml
文件依赖项部分
[dependencies]
pyth-sdk-terra = { version = "<current version>" }
访问 crates.io 上的 pyth-sdk-terra 获取最新版本。
使用方法
只需在 Terra 合约中使用价格馈送 ID 调用 query_price_feed
函数
// Pyth network testnet contract address
pyth_contract_addr = deps.api.addr_validate("terra1wzs3rgzgjdde3kg7k3aaz6qx7sc5dcwxqe9fuc")?;
// Price feed id for BTC/USD on testnet
price_feed_id = PriceIdentifier::from_hex("f9c0172ba10dfa4d19088d94f5bf61d3b54d5bd7483a322a982e1373ee8ea31b");
let price_feed: PriceFeed = query_price_feed(deps.querier, pyth_contract_addr, price_feed_id)?.price_feed;
let current_price: Price = price_feed.get_current_price().ok_or_else(|| StdError::not_found("price is not currently available"))?;
println!("current BTC/USD price: ({} +- {}) x 10^{}", current_price.price, current_price.conf, current_price.expo);
query_price_feed
会向 Pyth Network Terra 合约发出查询。此查询需要一个价格馈送 ID,该 ID 指示应返回哪个产品的价格。Pyth Network 上列出的每个产品(例如,BTC/USD)都有自己的价格馈送 ID;有关可能的产品及其价格馈送 ID,请参阅下面的 合约和价格馈送 部分。查询结果是一个包含产品当前价格以及附加元数据的 PriceFeed
结构。此结构还有一些用于操作和组合价格的有用函数;有关更多详细信息,请参阅 通用 SDK 文档。
链下查询
您可以使用 schema
目录中提供的模式直接从链下应用程序查询 terra 合约。典型的查询需要传递价格馈送 ID 作为十六进制字符串。它看起来像
{
"price_feed": {
"id": "f9c0172ba10dfa4d19088d94f5bf61d3b54d5bd7483a322a982e1373ee8ea31b"
}
}
通过访问 Terra Finder 中的合约地址,您可以尝试查询一个价格馈送并查看结果。
合约和价格馈送
Pyth 目前仅在 Terra 测试网上可用。
测试网
合约地址是 terra1wzs3rgzgjdde3kg7k3aaz6qx7sc5dcwxqe9fuc
。
可用的价格馈送及其ID列表
符号 | id (十六进制) |
---|---|
Crypto.BTC/USD | 0xf9c0172ba10dfa4d19088d94f5bf61d3b54d5bd7483a322a982e1373ee8ea31b |
Crypto.ETH/USD | 0xca80ba6dc32e08d06f1aa886011eed1d77c77be9eb761cc10d72b7d0a2fd57a6 |
Crypto.LUNA/USD | 0x6de025a4cf28124f8ea6cb8085f860096dbc36d9c40002e221fc449337e065b2 |
Crypto.UST/USD | 0x026d1f1cf9f1c0ee92eb55696d3bd2393075b611c4f468ae5b967175edc4c25c |
Crypto.ALGO/USD | 0x08f781a893bc9340140c5f89c8a96f438bcfae4d1474cc0f688e3a52892c7318 |
Crypto.USDC/USD | 0x41f3625971ca2ed2263e78573fe5ce23e13d2558ed3f2e47ab0f84fb9e7ae722 |
测试网价格馈送每分钟更新一次。
依赖项
~4–5.5MB
~113K SLoC