6个版本

0.10.8 2024年2月15日
0.10.7 2024年2月15日
0.5.3 2024年2月2日

#6#dhari-si

Download history 36/week @ 2024-03-31

每月 107 次下载

GPL-3.0-only

1MB
24K SLoC

价格聚合器

概述

价格聚合智能合约跟踪多对代币之间的价格。与其他链链合约相比,这是一个简化且更易使用的版本。

部署

参数

  • staking_token - 用于抵押和削减的代币
  • staking_amount - 用户被认为是一个董事会成员所需的最低抵押金额
  • slash_amount - 在成功的削减投票中从董事会成员那里削减的金额
  • slash_quorum - 投票被认为成功所需的最低董事会成员人数
  • oracles - 允许提交价格更新地址的列表
  • submission_count - 触发价格更新所需的来自不同预言机的最小提交次数

配置小数位数

可以通过调用 setPairDecimals(from, to, decimals) 来设置给定代币对的小数位数。注意

  • 只有所有者可以配置小数位数
  • 必须先暂停合约
  • 此方法还会清除迄今为止积累的提交
  • 除非首先配置小数位数,否则将不接受任何给定对的提交
  • 每个预言机必须更改其配置以提供带有新小数位数的新提交,因为任何不匹配都将被视为配置错误,并将拒绝提交

提交价格更新

预言机可以使用端点之一提交价格更新

  • submit - 作为5个参数提交单个价格更新(fromtosubmission_timestamppricedecimals)。
  • submitBatch - 同时提交多个价格。参数数量必须是5的倍数。

注意:小数位数参数必须与返回的特定对值匹配 getPairDecimals,否则提交将被拒绝。

轮次

收集来自多个预言机的价格数据。当达到一定数量的提交阈值(由 submission_count 给定)时,创建一个新的轮次。该轮次中记录的价格数据是所有提交中的中值。

查询价格数据

端点

  • latestRoundData 不接受任何参数,并返回所有最新的价格数据。
  • latestPriceFeed 接受一个过滤器(作为 fromto 令牌标识符),并返回单个价格数据。如果没有给定过滤器对应的价格数据,交易将失败。
  • latestPriceFeedOptional 的行为类似于 latestPriceFeed,但它返回一个选项,以便调用者可以处理缺少价格数据的情况。

价格数据包含

  • round_id - 当前轮次的ID(与区块链轮次ID无关)
  • from - 第一个令牌
  • to - 第二个令牌
  • price - 两个令牌之间的价格
  • decimals - 价格的小数位数

依赖

~3.5MB
~66K SLoC