0%

死磕chainLink data Streams原理

原文集锦:https://github.com/blockchainGuide

概述

Chainlink Data Streams 是一种新型的预言机解决方案,它通过提供低延迟、高频的链下市场数据,并允许去中心化应用(dApp)按需访问这些数据。与传统的推送式预言机相比,Data Streams 采用了一种拉取式的设计,使得dApp能够在需要时随时获取最新的数据。

与传统推送式预言机的区别

  • 数据获取方式:
    • 推送式: 预言机在预设的时间或条件下主动将数据推送到链上。
    • 拉取式: dApp在需要时主动向预言机请求数据。
  • 数据更新频率:
    • 推送式: 更新频率相对固定,可能存在延迟。
    • 拉取式: 更新频率更高,可以满足对实时性要求较高的应用。
  • 数据验证:
    • 两种方式都采用链上验证: 确保数据的真实性和可靠性。

image-20240820131355969


架构设计

Chainlink Data Streams 主要由三个核心部分组成:

  1. Chainlink去中心化的预言机网络 (DON):

    • 角色: 这个网络就像是一个数据采集和处理中心。
    • 功能:
      • 从各种各样的数据源收集实时市场数据。
      • 多个节点对收集到的数据进行验证和共识,确保数据的准确性。
      • 将经过验证的数据生成一个加密签名报告。
      • 将这个签名报告发送给Data Streams聚合网络。
  2. Chainlink Data Streams聚合网络:

    • 角色: 数据存储和分发中心。

    • 功能:

      • 存储来自DON的签名报告。

      • 提供一个可靠的接口,供链上合约查询这些报告。可以通过Stream Trade 或者API(stream Direct)形式。

      • 确保数据的可用性和高并发访问。

  3. Chainlink验证程序合约:

    • 角色: 数据验证者。
    • 功能:
      • 验证来自DON的签名是否合法。
      • 确保数据在传输过程中没有被篡改。
      • 为链上合约提供一个可信的数据源。

流交易架构

image-20240820133523275

这张图清晰地展示了Chainlink如何将链下数据引入到链上智能合约,并实现自动化交易的整个流程。

  • Off-Chain部分:
    • 数据提供商: 这些是提供真实世界数据的来源,比如各种交易所、天气数据提供商等。
    • Data DON (去中心化预言机网络):
      • 从多个数据提供商收集数据。
      • 对数据进行验证和共识,确保数据的准确性。
      • 将经过验证的数据生成一个数字签名报告。
    • Data Streams聚合网络:
      • 存储来自DON的签名报告。
      • 提供一个接口,供链上合约查询这些报告。
  • On-Chain部分:
    • Automation DON:
      • 负责触发链上交易。
      • 根据预设条件或事件,向Data Streams聚合网络请求数据。
    • dApp:
      • 去中心化应用,是最终使用数据的实体。
    • Chainlink Verify Contract:
      • 验证来自DON的签名是否合法。
      • 确保数据在传输过程中没有被篡改。

Stream Trade 交易流程示例

image-20240820134639065

整体流程可以分为交易发起、数据获取、交易执行和验证四个阶段。

详细步骤解析

  1. 用户发起交易:
    • 用户在自己的钱包中发起一个交易请求,这个请求会触发智能合约中的initiateTrade函数。
  2. 链上合约触发事件:
    • 智能合约执行initiateTrade函数后,会发出一个tradeInitiated事件,通知链上的其他合约或服务。
  3. Chainlink Automation监控事件:
    • Chainlink Automation这个服务会持续监控链上合约发出的事件。一旦检测到tradeInitiated事件,就会触发一个名为checkLog的函数。
  4. 请求外部数据:
    • checkLog函数会向Chainlink Data Streams发送一个数据请求,要求获取最新的价格等相关数据。这个请求会包含一些特定的参数,比如交易对、交易金额等。
  5. Data Streams返回数据:
    • Data Streams会根据请求,从多个数据源收集数据,并生成一个包含签名的报告。这个报告会返回给Chainlink Automation。
  6. 验证数据:
    • Chainlink Automation会将收到的报告交给Chainlink Verify Contract进行验证。验证合约会检查报告的签名是否有效,以确保数据的真实性。
  7. 执行交易:
    • 如果验证通过,Chainlink Automation就会执行实际的交易,比如将代币从一个账户转到另一个账户。
    • 如果验证不通过,交易就会被拒绝

参考