美文网首页区块链研习社区块链大学
DApp Developer Guide - 4 - Oracl

DApp Developer Guide - 4 - Oracl

作者: 空乱木 | 来源:发表于2019-08-29 08:01 被阅读0次

    原文链接: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 - Oracl

        本文链接:https://www.haomeiwen.com/subject/qfwvectx.html