6 个版本 (重大变更)
0.38.0 | 2022年12月15日 |
---|---|
0.37.0 | 2022年12月9日 |
0.36.1 | 2022年11月1日 |
0.36.0 | 2022年10月13日 |
0.34.1 | 2022年7月19日 |
#9 in #elrond
1MB
25K 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
~66K SLoC