查看原文
其他

Exchange Rate Canister - 具有预言机功能的智能合约

Dfifans Internet Computer 2023-07-20



近年来 Web 3.0 空间的爆炸式增长证明了智能合约的力量,在区块链上运行的智能合约提供了一种可靠且值得信赖的机制,以去中心化的方式执行复杂的交易。
它们的强大之处在于程序代码和它们所操作的数据都驻留在链上,这意味着只要区块链本身是可信的,用户就可以相信交易会按预期执行。
例如,如果用户希望在去中心化交易所(DEX)上将一些代币换成另一种代币,一个实现交易所功能的智能合约,该用户可以确信他或她将以适当的汇率获得另一个代币,而不会因为人为错误或恶意行为而丢失转移的代币。
虽然让智能合约中的所有决策都基于链上信息有明显的好处,但这也是一个限制因素,智能合约本身无法轻松使用“传统” Web 2.0 世界中可用的丰富数据。
想一想如果可以在智能合约中使用天气预报、实时股市数据、体育赛事实时比分等外部数据,可以构建所有强大的去中心化应用程序!
可信数据
事实上,大多数区块链都可以将此类数据注入智能合约,但是,问题是数据提供者是否值得信赖。
在真正去中心化的平台中,无法限制或确定谁向系统提供数据,另一方面,使用已知的可信方提供外部数据会严重削弱智能合约的去中心化性质。
此外,虽然去中心化应用程序通常是容错的,但对集中式数据提供者的依赖进一步引入了不受欢迎的单点故障。
我们需要解决这个难题的是数据预言机,这是一种不可破坏的容错机制,可确保其提供的所有数据的准确性。
预言机问题
如何构建这样的预言机?如前所述,由单一方提供数据打破了智能合约的去中心化性质,因为单一方不仅成为单一事实来源,而且成为单一故障点。
从这个观察中,我们得出结论,一个预言机必须以某种方式由多个数据提供者组成。
事实上,当前最先进的预言机平台是围绕这一观察而构建的 —— 预言机平台本身就是一个分布式的、去中心化的系统,有许多单独的节点从多个 Web 2.0 来源收集信息。
预言机平台对收集到的信息进行清理和整理,以获得尽可能完整和准确的数据,区块链与预言机平台集成,使其数据可用于智能合约。
拥有专用预言机平台的方法显然优于依赖中心化实体,但它有几个缺陷。
首先,去中心化系统中的数据收集和管理本身就是一个难题,添加其他数据类型或来源通常很麻烦,而且既费时又费钱。
除了这些操作上的挑战,还有一个根本性的缺点是不容易克服的,那就是对预言机平台的固有依赖。
根据设计,用户不仅必须信任运行相关智能合约的区块链,还必须信任为智能合约提供必要数据才能正常运行的预言机平台。
必须信任其他实体始终是一个安全问题,即使这些实体也是去中心化的,只是因为不同的实体在它们提供的安全性方面永远不平等。
HTTPS Outcalls:一个基本的构建块
问题是智能合约是否可以以不同的、更智能的方式获得预言机能力,幸运的是,答案是肯定的,至少在互联网计算机上是这样。
互联网计算机具有独特的“超能力”,称为 HTTPS 外呼,此功能使智能合约能够以确定且去中心化的方式从常规 (Web 2.0) Web 服务器获取数据,强烈建议读者阅读此开创性功能,例如在本文中 - 超越预言机:互联网计算机上容器智能合约的直接 HTTPS 呼出
了解 HTTPS outcalls 提供对 Web 2.0 资源的访问但仅此而已,这一点很重要,如果容器智能合约从特定端点查询数据,则如果该端点不可用,智能合约可能无法提供其服务,智能合约还信任端点提供准确的信息。
换句话说,HTTPS outcalls 不提供预言机功能,但它们是开发完全在链上运行的预言机的基本构建块。
引入链上预言机
将理论付诸实践,我们 DFINITY 已经构建并发布了汇率容器,一个链上定价预言机,这个容器智能合约为各种类型的应用程序提供了一个重要的功能。
本质上,对于任何一对基础资产和报价资产,其中任一资产可以是加密货币或法定货币,它会返回汇率。
Exchange Rate Canister 可以返回当前汇率和过去的汇率(受数据源提供必要的历史汇率以满足请求的限制),它通过公共 API 与主要加密货币交易所交互,以获取当前或历史定价信息。
此外,它还定期查询全球外汇数据提供商的公共 API 以获取外汇汇率。


技术细节
更深入地了解技术细节,只要汇率容器收到使用 get_exchange_rate 端点的请求(汇率容器的 Candid 文件可在官网获得),它就会进行必要的 HTTPS 调用以收集汇率。
随后,通过移除异常值来清理费率,并将剩余费率的中值连同有关请求的元数据返回给调用者,例如查询的源数、收到的费率等。
值得注意的是,实施这样的预言机并非易事,需要进行大量优化和增强才能达到所需的性能和安全级别。
例如,最近的查询结果被放置在最近最少使用的缓存中,以便可以快速返回费率,而无需为频繁请求的资产对重复相同的 HTTPS 调用。
由于子网一次可以处理的 HTTPS 外呼数量是有限的,因此还存在速率限制以保护子网免受大量请求的影响。
由于 HTTPS 外呼在消耗的 Cycles 数方面是一项昂贵的操作,因此 Exchange Rate Canister 对其服务收取合理的价格,因为它收取的 Cycles 数取决于它为服务而进行的 HTTPS 外呼的实际数量要求。
如果可以从缓存中提供响应,则成本很低,只有 2 亿个 Cycles(大约相当于 0.03 美分!),但对于加密货币-加密货币对,那没有被缓存,成本可能高达 50 亿个 Cycles(约合 0.7 美分)。
请求不是免费的这一事实也提供了一定程度的针对拒绝服务攻击的保护,对于那些希望深入研究的人,可以公开获取 Exchange Rate Ranister 的源代码:
  • github.com/dfinity/exchange-rate-canister

实践中的预言机功能
如前所述,定价预言机有很多用例,例如 Exchange Rate Canister。这是 DEX 的理想功能(如果不是必需的),以便将 DEX 内的汇率与市场汇率进行比较。
它对于持有特定资金的容器也很有用,因为汇率容器提供了一种简单的方法来确定所管理资产的价值,例如,相对于法定货币的价值。
最后,汇率容器对互联网计算机的网络神经系统(NNS)起着重要作用,由于 Cycles 的价格与 IMF SDR 一篮子货币(货币符号:XDR)挂钩,每 1 万亿个 Cycles 等于 1 个 XDR,并且 Cycles 铸币容器(CMC)燃烧 ICP 以生成 Cycles,因此 Cycles 铸币容器必须具有访问权限到准确的 ICP/XDR 转换率。
这个转换率之前是通过 NNS 提案更新的,每天需要 144 个提案,每 10 分钟一个提案,自 2023 年 5 月 8 日起,CMC 从汇率容器中获取 ICP/XDR 汇率,使汇率提案过时。
汇率容器是智能合约的一个很好的例子,它通过提供完全在链上运行的预言机服务来释放 HTTPS 外呼的力量。
当然,对于与各种类型的 Web 2.0 数据相对应的链上预言机的许多其他用例,还有足够的空间。
例如,互联网计算机生态系统还可以受益于更多类似于汇率容器的链上价格预言机,但可以利用不同的数据源或为股票或 ETF 等不同资产类别提供汇率。
Exchange Rate Canister 只是具有预言机功能的下一代容器智能合约的起点,以达到新的可靠性、准确性和可信度水平,想到未来还会有更多的出现,这当然令人兴奋!
在 internetcomputer.org 上了解有关 IC 的更多信息并加入开发者社区:forum.dfinity.org。


作者:Thomas Locher翻译:Catherine

-              -


Aedile 品牌未来

全球研发会议:2023 年 4 月版

互联网计算机采用实时能源报告和绿色倡议证明





你关心的 IC 内容
技术进展 | 项目信息 | 全球活动


长按关注 IC 微信公众号

掌握最新资讯


*添加小助手微信 comiocn 进交流社群


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存