#contract #blockchain #dharithri #smart-contracts #wasm

不使用 std dharithri-price-aggregator-sc

dhariithri 价格聚合智能合约

1 个不稳定版本

0.43.3 2023年9月14日

#2#dharithri

GPL-3.0-only

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的倍数。

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

回合

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

查询价格数据

端点

  • latestRoundData不接收任何参数,并返回所有最新的价格数据。
  • latestPriceFeed接收一个过滤器(作为fromto代币标识符),并返回一个单一的价格数据。如果给定的过滤器没有价格数据,则事务失败。
  • latestPriceFeedOptional的行为类似于latestPriceFeed,但它返回一个选项,以便调用者可以处理没有价格数据的情况。

价格数据包含

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

依赖关系

~4MB
~71K SLoC