ERC-7726: 通用报价预言机
用于提供资产相对价值的数据源的接口。
Authors | alcueca (@alcueca), ruvaag (@ruvaag), totomanov (@totomanov), r0ohafza (@r0ohafza) |
---|---|
Created | 2024-06-20 |
Discussion Link | https://ethereum-magicians.org/t/erc-7726-common-quote-oracle/20351 |
Requires | EIP-7528 |
摘要
以下内容允许为数据源实现一个标准 API,该数据源提供资产的相对价值,强制兼容的合约使用显式的 token 数量而不是价格因子。 这种方法已被证明可以带来更好的安全性和更快的上市时间。
动机
评估资产价值所需的信息分散在许多主要和次要来源中,每个来源都有自己的集成 API 和安全考虑因素。 多年来,许多协议都为自己的使用实现了预言机适配器层,以从其核心实现中抽象出这种复杂性,从而导致大量重复的工作。
本规范提供了一个旨在服务于大多数用例的标准 API。 优先考虑易于集成,并满足知识、需求和资源较少的产品团队的需求。
规范
本文档中的关键词 “MUST”、”MUST NOT”、”REQUIRED”、”SHALL”、”SHALL NOT”、”SHOULD”、”SHOULD NOT”、”RECOMMENDED”、”NOT RECOMMENDED”、”MAY” 和 “OPTIONAL” 按照 RFC 2119 和 RFC 8174 中的描述进行解释。
定义
- base asset(基础资产):用户需要知道其价值的资产(例如:USDC,如“我需要知道 1e6 USDC 以 ETH 计价的价值”)。
- quote asset(报价资产):用户需要用以评估
base
的资产(例如:ETH,如“我需要知道 1e6 USDC 以 ETH 计价的价值”)。 - value(价值):以
quote
计价的base
的数量(例如:1000e6 USDC 以 ETH 计价的value
为 283,969,794,427,307,000 ETH,1000e18 ETH 以 USDC 计价的value
为 3,521,501,299,000 USDC)。 请注意,这是一个资产数量,而不是一个小数因子。
方法
getQuote
返回 base
中 baseAmount
的值,以 quote
计价。
MUST 向下舍入到 0。
如果 base
中 baseAmount
的值以 quote
计价会在 uint256 中溢出,则 MUST 还原。
- name: getQuote
type: function
stateMutability: view
inputs:
- name: baseAmount
type: uint256
- name: base
type: address
- name: quote
type: address
outputs:
- name: quoteAmount
type: uint256
特殊地址
本规范范围内的某些资产没有地址,例如 ETH、BTC 和国家货币。
对于 ETH,地址将是 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE
,如 ERC-7528 中所述。
对于 BTC,地址将是 0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB
。
对于没有地址但有 ISO 4217 代码的资产,将使用该代码(例如,USD 的 address(840)
)。
理由
使用 getQuote
不需要消费者知道可能为 base
或 quote
定义的任何小数分区,并且在大多数数据处理情况下应该是首选。
该规范不包括 getPrice
函数,因为它在链上很少需要,并且它将是一个难以表示的小数。 ERC-20 的流行价格表示选项可以通过小数实现为 `oracle.getQuote(base, quote, 10**base.decimals()),并将给出以报价计价的完整基础单位的价值。
向后兼容性
大多数与资产对的相对价值相关的现有数据源都应该可以使用此标准来表示。
安全考虑
本规范有意不提供任何供数据消费者评估其接收数据的有效性的方法。 期望使用此规范的各个实现来决定和发布其提供的数据的质量,包括它们将停止提供数据的条件。
消费者应审查这些保证并使用它们来决定是否与数据提供商集成。
版权
版权及相关权利通过 CC0 放弃。
Citation
Please cite this document as:
alcueca (@alcueca), ruvaag (@ruvaag), totomanov (@totomanov), r0ohafza (@r0ohafza), "ERC-7726: 通用报价预言机 [DRAFT]," Ethereum Improvement Proposals, no. 7726, June 2024. [Online serial]. Available: https://eips.ethereum.org/EIPS/eip-7726.