1 个不稳定版本
新 0.0.1 | 2024年8月28日 |
---|
#31 在 #dharitri
2MB
45K SLoC
价格聚合器
概述
价格聚合智能合约跟踪多个代币对之间的价格。与其它链上合约相比,这是一个简化且易于使用的版本。
部署
参数
staking_token
- 用于抵押和削减的代币staking_amount
- 会员资格所需的最低抵押金额slash_amount
- 在成功的削减投票中从董事会成员处削减的金额slash_quorum
- 投票成功所需的最低董事会成员人数oracles
- 允许提交价格更新数据的地址列表submission_count
- 触发价格数据更新所需的最低不同预言机提交次数
设置小数位数
可以通过调用 setPairDecimals(from, to, decimals)
为给定代币对设置小数位数。注意
- 只有所有者可以配置小数位数
- 必须先暂停合约
- 此方法还将清除迄今为止积累的提交
- 除非首先配置小数位数,否则将不接受任何给定对的提交
- 每个预言机必须更改其配置以提供具有新小数位数的数据提交,因为任何不匹配都将被视为配置错误,提交将被拒绝
提交价格数据更新
预言机可以使用端点之一提交价格数据更新
submit
- 提交单个价格数据,需要5个参数(from
,to
,submission_timestamp
,price
和decimals
)。submitBatch
- 同时提交多个价格数据。参数数量必须是5的倍数。
注意:小数位数参数必须与特定对返回的值匹配 getPairDecimals
,否则提交将不予接受。
轮次
从多个预言机收集价格信息。当达到一定数量的提交阈值(由 submission_count
给出)时,将创建一个新的轮次。轮次中记录的价格信息是所有提交中的中位数。
查询价格信息
端点
latestRoundData
不接受任何参数,并返回所有最新的价格信息。latestPriceFeed
接受一个过滤器(作为from
和to
代币标识符),并返回单个价格信息。如果没有指定过滤器的价格信息,交易将失败。latestPriceFeedOptional
的行为类似于latestPriceFeed
,但它返回一个选项,以便调用者可以处理缺少价格信息的情况。
价格信息包含
round_id
- 当前轮次的ID(与区块链轮次ID无关)from
- 第一代币to
- 第二代币price
- 两个代币之间的价格decimals
- 价格的小数位数
依赖项
~3.5MB
~68K SLoC