#soroban #wasm #no-std

no-std sep-40-oracle

SEP-0040 价格提供者 Oracle 特性、客户端和模拟实现

4 个版本 (1 个稳定版)

1.0.0 2024年4月2日
0.2.0 2023年12月5日
0.1.1 2023年10月23日
0.1.0 2023年10月19日

#38#soroban

Download history 2/week @ 2024-04-24 1/week @ 2024-05-01 5/week @ 2024-05-29 2/week @ 2024-07-03

每月 188 次下载

MIT 许可证

8KB

SEP-0040 Oracle

暴露了 SEP-0040 价格提供者 Oracle 接口以及一个测试价格 Oracle 合约。

SEP-0040 定义:https://github.com/stellar/stellar-protocol/blob/master/ecosystem/sep-0040.md

安全性

这是一个 实验性软件,以“现状”和“可用性”为基础提供。

我们不提供任何 保证,并且不会对任何通过使用此代码库而造成的损失负责。

入门指南

将包添加到您的 Cargo.toml

[dependencies]
sep-40-oracle = "<desired version>"

您可以选择在 dev-dependencies 中包含 testutils 功能,以部署 sep-40-oracle 的模拟版本进行测试

[dev_dependencies]
sep-40-oracle = { version = "<desired version>", features = ["testutils"] }

客户端和特性

此包公开了一个用于与 SEP-0040 Oracles 交互的客户端以及一个用于希望实现 SEP-0040 Oracles 的合约的特性。

客户端使用

use sep_40_oracle::PriceFeedClient;

let address = // address of the oracle
let price_feed_client = PriceFeedClient::new(&env, &address);

特性使用

use sep_40_oracle::PriceFeedTrait;
use soroban_sdk::{contract, contractimpl};

#[contract]
pub struct MyPriceFeed;

#[contractimpl]
impl PriceFeedTrait for MyPriceFeed {
    // impl the trait functions
}

模拟价格提供者 Oracle

此包公开了一个示例 Soroban 价格提供者 Oracle 实现。这对于测试依赖于 sep-0040 价格提供者 Oracle 的协议非常有用,包括在测试期间操纵价格提供者的能力。

可以将合约的 WASM 版本部署如下

use sep_40_oracle::testutils::{MockPriceOracleClient, MockPriceOracleWASM};
use soroban_sdk::{testutils::Address as _, Address, Env, symbol_short, vec};

let env = Env::default();


let admin = Address::generate(&env);
let xlm = Address::generate(&env);
let oracle_id = env.register_contract_wasm(None, MockTokenWASM);
let oracle_client = MockPriceOracleClient::new(&env, &oracle_id);
oracle_client.set_data(
    &admin,
    &Asset::Other(symbol_short!("TEAPOT")),
    &vec![&env, Asset::Stellar(xlm)],
    &7,
    &(5 * 60 * 60)
);

依赖关系

~11–15MB
~311K SLoC