57个版本 (13个破坏性更新)

新版本 0.52.3 2024年8月6日
0.52.1 2024年7月31日
0.48.0-alpha.12024年3月27日
0.45.2 2023年12月18日
0.39.8 2023年3月29日

#745 in 神奇豆

Download history 17/week @ 2024-04-15 78/week @ 2024-04-22 121/week @ 2024-04-29 283/week @ 2024-05-06 163/week @ 2024-05-13 290/week @ 2024-05-20 18/week @ 2024-05-27 136/week @ 2024-06-03 8/week @ 2024-06-10 115/week @ 2024-06-17 7/week @ 2024-06-24 605/week @ 2024-07-01 71/week @ 2024-07-08 387/week @ 2024-07-29

每月496次下载

GPL-3.0-only

2MB
45K SLoC

价格聚合器

概述

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

部署

参数

  • 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 - 价格的小数位数

依赖

~1.3–2.2MB
~43K SLoC