原文链接: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
网友评论