概述
Chainlink Data Streams 是一种新型的预言机解决方案,它通过提供低延迟、高频的链下市场数据,并允许去中心化应用(dApp)按需访问这些数据。与传统的推送式预言机相比,Data Streams 采用了一种拉取式的设计,使得dApp能够在需要时随时获取最新的数据。
与传统推送式预言机的区别
- 数据获取方式:
- 推送式: 预言机在预设的时间或条件下主动将数据推送到链上。
- 拉取式: dApp在需要时主动向预言机请求数据。
- 数据更新频率:
- 推送式: 更新频率相对固定,可能存在延迟。
- 拉取式: 更新频率更高,可以满足对实时性要求较高的应用。
- 数据验证:
- 两种方式都采用链上验证: 确保数据的真实性和可靠性。
架构设计
Chainlink Data Streams 主要由三个核心部分组成:
Chainlink去中心化的预言机网络 (DON):
- 角色: 这个网络就像是一个数据采集和处理中心。
- 功能:
- 从各种各样的数据源收集实时市场数据。
- 多个节点对收集到的数据进行验证和共识,确保数据的准确性。
- 将经过验证的数据生成一个加密签名报告。
- 将这个签名报告发送给Data Streams聚合网络。
Chainlink Data Streams聚合网络:
角色: 数据存储和分发中心。
功能:
存储来自DON的签名报告。
提供一个可靠的接口,供链上合约查询这些报告。可以通过Stream Trade 或者API(stream Direct)形式。
确保数据的可用性和高并发访问。
Chainlink验证程序合约:
- 角色: 数据验证者。
- 功能:
- 验证来自DON的签名是否合法。
- 确保数据在传输过程中没有被篡改。
- 为链上合约提供一个可信的数据源。
流交易架构
这张图清晰地展示了Chainlink如何将链下数据引入到链上智能合约,并实现自动化交易的整个流程。
- Off-Chain部分:
- 数据提供商: 这些是提供真实世界数据的来源,比如各种交易所、天气数据提供商等。
- Data DON (去中心化预言机网络):
- 从多个数据提供商收集数据。
- 对数据进行验证和共识,确保数据的准确性。
- 将经过验证的数据生成一个数字签名报告。
- Data Streams聚合网络:
- 存储来自DON的签名报告。
- 提供一个接口,供链上合约查询这些报告。
- On-Chain部分:
- Automation DON:
- 负责触发链上交易。
- 根据预设条件或事件,向Data Streams聚合网络请求数据。
- dApp:
- 去中心化应用,是最终使用数据的实体。
- Chainlink Verify Contract:
- 验证来自DON的签名是否合法。
- 确保数据在传输过程中没有被篡改。
- Automation DON:
Stream Trade 交易流程示例
整体流程可以分为交易发起、数据获取、交易执行和验证四个阶段。
详细步骤解析
- 用户发起交易:
- 用户在自己的钱包中发起一个交易请求,这个请求会触发智能合约中的
initiateTrade
函数。
- 用户在自己的钱包中发起一个交易请求,这个请求会触发智能合约中的
- 链上合约触发事件:
- 智能合约执行
initiateTrade
函数后,会发出一个tradeInitiated
事件,通知链上的其他合约或服务。
- 智能合约执行
- Chainlink Automation监控事件:
- Chainlink Automation这个服务会持续监控链上合约发出的事件。一旦检测到
tradeInitiated
事件,就会触发一个名为checkLog
的函数。
- Chainlink Automation这个服务会持续监控链上合约发出的事件。一旦检测到
- 请求外部数据:
checkLog
函数会向Chainlink Data Streams发送一个数据请求,要求获取最新的价格等相关数据。这个请求会包含一些特定的参数,比如交易对、交易金额等。
- Data Streams返回数据:
- Data Streams会根据请求,从多个数据源收集数据,并生成一个包含签名的报告。这个报告会返回给Chainlink Automation。
- 验证数据:
- Chainlink Automation会将收到的报告交给Chainlink Verify Contract进行验证。验证合约会检查报告的签名是否有效,以确保数据的真实性。
- 执行交易:
- 如果验证通过,Chainlink Automation就会执行实际的交易,比如将代币从一个账户转到另一个账户。
- 如果验证不通过,交易就会被拒绝