DApp Developer Guide - 4 - Oracle接口参考

原文链接:https://developer.bandprotocol.com/devs/reference.html

标准Oracle接口

下面两个函数由数据集智能合约实现。去中心化应用程序可以使用EVM上的调用操作码调用这些函数。

queryPrice:获取查询价格
  • 返回值:一个uint256的值;表示一个数据查询需要支付的以太量(在Wei中)。
function queryPrice() external view returns (uint256);
query:执行数据查询
  • 参数 - 输入: 查询数据的键,如数据集规范中指定的。
  • 返回值 - output : 该查询的输出结果为bytes32。可以按照数据集规范中的指定解析结果。
  • 返回值- updatedAt: 此数据已更新的最新时间(Unix时间)。
  • 返回值 - status: 此查询的状态
    • INVALID:查询无效
    • OK :数据已准备好使用。
    • NOT_AVAILABLE :数据无法从数据提供者获得。
    • DISAGREEMENT:数据提供者在最终结果上存在分歧。
enum QueryStatus { INVALID, OK, NOT_AVAILABLE, DISAGREEMENT }

function query(bytes calldata input)
  external payable
  returns (bytes32 output, uint256 updatedAt, QueryStatus status);
band-solidity扩展

通过继承usingBandProtocol合约,智能合约可以调用Oracle对象上的其他方法来执行特定类型的查询。这些辅助方法负责输入键编码和结果解码。它们还负责断言有效的查询条件(例如,如果查询状态不确定,则自动失败)。

此外,由于这些函数是内部函数,调用者不需要显式地将ETH与调用一起传递(通过使用.value)。相反,这些函数负责代表您将ETH传递给数据集合约。

querySpotPrice:获取资产现货价格

为金融数据提供数据集以获取资产现货价格的辅助方法。

  • 参数 - symbol: 资产的符号(如ETH-USD或AAPL)。
  • 返回值:最新资产现货价格(乘以1018)
uint256 price = oracle.querySpotPrice("ETH-USD”);

querySpotPriceWithExpiry:获得到期的资产现货价格

与querySpotPrice类似,但是使用另一个参数来指定容忍旧数据的时间。如果数据可用,但是比指定的时间更早,事务将恢复(取消)。

  • 参数 - symbol:资产的符号(如ETH-USD或AAPL)。
  • 参数 - timeLimit:容忍旧数据的时间(以秒为单位)。
  • 返回值:最新资产现货价格(乘以1018)。
uint256 price = oracle.querySpotPriceWithExpiry("ETH-USD", 10 minutes);

NEXT - Complete Walkthrough

你可能感兴趣的:(DApp Developer Guide - 4 - Oracle接口参考)