草庐IT

第147篇 笔记-预言机(Oracle)

wonderBlock 2023-04-22 原文

定义:区块链预言机是将区块链连接到外部系统的实体,从而使智能合约能够基于现实世界的输入和输出执行。

预言机为分散的 Web3 生态系统提供了一种访问现有数据源、遗留系统和高级计算的方式。去中心化预言机网络(DON)支持创建混合智能合约,其中链上代码和链下基础设施相结合,以支持高级去中心化应用程序(dApp),这些应用程序对真实世界事件做出反应,并与传统系统互操作。

区块链预言将区块链连接到现实世界中的输入和输出

例如,让我们假设 Alice和 Bob想打赌体育比赛的结果。Alice在 A队押了20美元,Bob在 B队押了30美元,总共40美元由智能合约托管。当游戏结束时,智能合约如何知道是将资金发放给 Alice还是 Bob?答案是,它需要一个预言机机制来获取链下的精确匹配结果,并以安全可靠的方式将其交付给区块链。

1.解决预言机问题

区块链预言机问题概述了智能合约的一个基本限制,即智能合约无法与本地区块链环境之外的数据和系统进行内在交互。区块链外部的资源被视为“链外”,而已经存储在区块链上的数据被视为链上。通过故意与外部系统隔离,区块链获得了其最有价值的属性,如对用户交易的有效性、防止双重开销攻击和减少网络停机时间的强烈共识。从区块链安全地与链外系统进行互操作需要一个称为“预言机”的额外基础设施,以连接这两个环境。

区块链无法自行连接到真实世界的数据和事件

解决预言机问题至关重要,因为DeFi等绝大多数智能合约用例都需要了解真实世界的数据和链外事件。预言机扩展了区块链可以支持的数字协议类型,提供了一个到链外资源的通用网关,同时仍然维护了区块链的宝贵安全属性。主要行业受益于结合预言机和智能合约,包括金融资产价格、保险天气信息、游戏随机性、供应链物联网传感器、政府身份验证等。

由于预言机向区块链交付的数据直接决定了智能合约的结果,因此,如果协议要完全按照预期执行,那么预言机机制的正确性至关重要。

2.预言机的关键功能

区块链预言机是一种安全的中间件,可促进区块链与任何链外系统之间的通信,包括数据提供商、web API、企业后端、云提供商、物联网设备、电子签名、支付系统、其他区块链等。

预言机具有几个关键功能:

  • Listen – 监控区块链网络,以检查任何传入的用户或智能合约对链外数据的请求。
  • Extract – 从一个或多个外部系统获取数据,例如托管在第三方web服务器上的链外API。
  • Format – 将从外部API检索的数据格式化为区块链可读格式(输入)和/或使区块链数据与外部API兼容(输出)。
  • Validate – 使用数据签名、区块链交易签名、TLS签名、可信执行环境(TEE)证明或零知识证明的任何组合生成一个验证oracle服务性能的加密证明。
  • Compute – 为智能合约执行某种类型的安全链外计算,例如从多个oracle提交中计算中值或为游戏应用程序生成可验证的随机数。
  • Broadcast – 在区块链上签署和广播交易,以便发送数据和链上的任何相应证明,供智能合约消费。
  • Output (optional) –  在执行智能合约时向外部系统发送数据,例如向传统支付网络转发支付指令或从网络物理系统触发操作。

执行上述功能需要预言机系统同时在区块链上和区块链外运行。链上组件用于建立区块链连接(监听请求)、广播数据、发送证明、提取区块链数据,并可能在区块链上执行计算。链外组件用于处理请求、检索和格式化外部数据、向外部系统发送区块链数据,以及执行链外计算,以实现更大的可扩展性、隐私性、安全性和各种其他智能合约增强。

3.去中心化预言机

区块链预言机机制使用集中实体向智能合约交付数据,引入了单点故障,破坏了去中心化区块链应用程序的全部目的。如果单个预言机离线,则智能合约将无法访问执行所需的数据,或者将基于过时数据不正确地执行。‍

更糟糕的是,如果单个预言机损坏,那么链上传递的数据可能非常不正确,并导致智能合约执行非常错误的结果。这通常被称为“垃圾输入,垃圾输出”问题,其中不良输入会导致不良输出。此外,由于区块链交易是自动化和不可变的,基于错误数据的智能合约结果无法逆转,这意味着用户资金可能会永久丢失。因此,集中式预言机不是智能合约应用程序的可选方案。

集中式预言机会出现单点故障

真正解决预言机问题需要分散的预言机来防止数据操作、不准确和停机。去中心化预言机网络,简称DON,结合了多个独立的预言机节点运营商和多个可靠的数据源,以建立端到端的去中心化。‍

更重要的是,许多Chainlink DONs,如 Chainlink Price Feeds,在数据源、单个节点运营商和预言机网络级别结合了三层去中心化,以消除任何单点故障。Chainlink Price Feeds已经通过这种多层次的去中心化方法帮助智能合约生态系统获得数百亿美元的资金,确保智能合约在执行过程中能够安全地依赖数据输入。

Chainlink Price Feeds部署三层分散聚合

4.区块链预言机的类型

鉴于广泛的链外资源,区块链预言机有多种形状和大小。混合智能合约不仅需要各种类型的外部数据和计算,还需要各种交付机制和不同级别的安全性。通常,每种类型的预言机都是包含获取、验证、计算和将数据传递到目的地的一些组合。

1.输入Oracle

当今最为广泛认可的预言机类型被称为“输入预言机”,它从真实世界(链外)获取数据,并将其传送到区块链网络,用于智能合约消费。这些类型的预言器用于为 Chainlink Price Feeds提供动力,为 DeFi智能合约提供对金融市场数据的链上访问。

2.输出Oracle

与输入预言相反的是“输出预言机”,它允许智能合约向链外系统发送命令,从而触发它们执行某些操作。这可以包括通知银行网络付款,通知存储提供商存储所提供的数据,或在进行链上租赁付款后 ping物联网系统解锁车门。

3.跨链Oracle

另一种类型的预言机是跨链预言机,可以在不同的区块链之间读写信息。跨链预言机实现了在区块链之间移动数据和资产的互操作性,例如使用一个区块链上的数据在另一个区块上触发操作,或跨链桥接资产,以便它们可以在发布时所在的本地区块链之外使用。

4.支持计算的Oracle

智能合约应用程序越来越广泛地使用的一种新型预言机是“支持计算的预言机”,它使用安全的链外计算来提供分散的服务,由于技术、法律或财务限制,这些服务在链上无法实现。这可以包括使用 Chainlink Automation在发生预定义事件时触发智能合约的运行,计算零知识证明以生成数据隐私,或运行可验证的随机性函数以向智能合约提供防篡改和可证明公平的随机性源。

不同类型的预言机实现了混合智能合约

5.预言机声誉

预言机服务的广泛范围意味着声誉是选择预言机服务提供商的关键。区块链预言机系统中的声誉使用户和开发人员能够根据他们认为重要的参数在预言机之间进行监控和过滤。预言机的声誉得益于预言机签署并将其数据交付到不可变的公共区块链账本上,因此可以通过市场等交互式仪表板分析并向用户展示其历史绩效历史。如 market.link 和 reputation.link。‍

信誉框架为每个预言机网络和单个预言机节点运营商的准确性和可靠性提供了透明度。然后,用户可以做出明智的决定,决定他们要为智能合约服务的预言机。预言机服务提供商还可以利用其链外业务信誉为用户提供可靠性的额外保证。

理想的预言机网络应当满足以下五个条件:

  1. 数据调用是基于双方相互信任的(不可篡改)。预言机在调用外部数据引入智能合约时,应当保证最终反馈给用户的数据与数据来源本身的数据一致,防止预言者中途篡改。经过服务请求方的确认和其他预言者的验证后,如果调用数据结果无误,则将调用数据写入智能合约,并将交易记录上传到区块链上;如果调用数据出现不一致,则该交易将被定义为非法交易。
  2. 数据调用具有高效性。预言机合约通过智能合约规定,如果预言者没有在请求发出后的规定时间内响应用户请求,或者是响应请求没在规定时间内将数据反馈给用户,就会自动取消交易,并且对服务供应商实施惩罚。
  3. 数据调用安全性高。预言机的设计必须有效遏制各种数据腐败行为,比如女巫攻击、镜像攻击等。并且,通过强制节点在TEE(Trusted Execution Environment)环境中执行解密,并向区块链汇报所有用户和节点都能看到的通用答案。
  4. 符合激励相容原则。预言机激励机制和监督机制的设立必须实现激励相容。因此,治理机制的设计必须充分调动其他竞争预言机的监督积极性,并且不能够将代币奖励和打包概率等决定预言机收益的指标相挂钩。否则,将不可避免的发生预言机和用户因利益不一致而产生的委托代理风险。
  5. 数据资产化。数据应当作为一种资产,根据其资源的重要性和稀缺性进行定价,以公允价值的形式写入智能合约。

6.区块链预言机用例

智能合约开发人员使用预言机在更广泛的区块链用例中构建更高级的去中心化应用程序。虽然可能有无限多的可能性,但以下是最新采用的用例。

1.去中心化金融(DeFi)

去中心化金融(DeFi)生态系统的很大一部分需要预言机访问有关资产和市场的金融数据。例如,去中心化货币市场使用价格预言机来确定用户的借贷能力,并检查用户的头寸是否被低估,是否会被清算。类似地,合成资产平台使用价格预言机将代币价值与真实资产挂钩,自动做市商(AMM)使用价格预言机帮助以当前市场价格集中流动性,以提高资本效率。

2.动态NFT和游戏

预言机还为智能合约提供了非财务使用案例,例如动态NFT,这些代币可以根据外部事件(如一天中的时间或天气)改变外观、价值或分布。此外,计算预言机被用于生成可验证的随机性,然后项目使用该随机性将随机特征分配给NFT,或在高需求NFT下降中选择随机幸运的赢家。链上游戏应用程序还使用可验证的随机性来创建更具吸引力和不可预测的游戏体验,例如在比赛期间出现随机战利品盒或随机配对。

3.企业

跨链预言机为企业提供了一个安全的区块链中间件,允许企业将其后端系统连接到任何区块链网络。通过这样做,企业系统可以对任何区块链进行读/写,并就如何跨链部署资产和数据以及与使用同一预言机网络的交易对手进行部署执行复杂的逻辑。其结果是,机构能够快速加入交易对手需求量大的区块链,并快速为用户所需的智能合约服务提供支持,而无需花费时间和开发资源与各个区块链集成。

4.持续性

混合智能合同通过围绕绿色倡议的真实影响的先进验证技术,为参与绿色实践创造了更好的激励,从而促进了环境可持续性。预言机是向智能合约提供来自传感器读数、卫星图像和高级ML计算的环境数据的关键工具,从而允许智能合约向从事植树造林或有意识消费的人发放奖励。预言机还支持许多新形式的碳信用,以抵消气候变化的影响。

Chainlink不断增长的去中心化预言机服务集合

预言机通过提供对所有外部资源的访问,扩展了区块链网络的功能,这些外部资源是利用简单标记化之外的有用和高级混合智能合约用例所需的。与互联网如何在信息交换方式上带来重大变化类似,预言机驱动的混合智能合约正在重新定义社会交换价值和执行合约协议的方式。

有关第147篇 笔记-预言机(Oracle)的更多相关文章

  1. LC滤波器设计学习笔记(一)滤波电路入门 - 2

    目录前言滤波电路科普主要分类实际情况单位的概念常用评价参数函数型滤波器简单分析滤波电路构成低通滤波器RC低通滤波器RL低通滤波器高通滤波器RC高通滤波器RL高通滤波器部分摘自《LC滤波器设计与制作》,侵权删。前言最近需要学习放大电路和滤波电路,但是由于只在之前做音乐频谱分析仪的时候简单了解过一点点运放,所以也是相当从零开始学习了。滤波电路科普主要分类滤波器:主要是从不同频率的成分中提取出特定频率的信号。有源滤波器:由RC元件与运算放大器组成的滤波器。可滤除某一次或多次谐波,最普通易于采用的无源滤波器结构是将电感与电容串联,可对主要次谐波(3、5、7)构成低阻抗旁路。无源滤波器:无源滤波器,又称

  2. Unity Shader 学习笔记(5)Shader变体、Shader属性定义技巧、自定义材质面板 - 2

    写在之前Shader变体、Shader属性定义技巧、自定义材质面板,这三个知识点任何一个单拿出来都是一套知识体系,不能一概而论,本文章目的在于将学习和实际工作中遇见的问题进行总结,类似于网络笔记之用,方便后续回顾查看,如有以偏概全、不祥不尽之处,还望海涵。1、Shader变体先看一段代码......Properties{ [KeywordEnum(on,off)]USL_USE_COL("IsUseColorMixTex?",int)=0 [Toggle(IS_RED_ON)]_IsRed("IsRed?",int)=0}......//中间省略,后续会有完整代码 #pragmamulti_c

  3. Tcl脚本入门笔记详解(一) - 2

    TCL脚本语言简介•TCL(ToolCommandLanguage)是一种解释执行的脚本语言(ScriptingLanguage),它提供了通用的编程能力:支持变量、过程和控制结构;同时TCL还拥有一个功能强大的固有的核心命令集。TCL经常被用于快速原型开发,脚本编程,GUI和测试等方面。•实际上包含了两个部分:一个语言和一个库。首先,Tcl是一种简单的脚本语言,主要使用于发布命令给一些互交程序如文本编辑器、调试器和shell。由于TCL的解释器是用C\C++语言的过程库实现的,因此在某种意义上我们又可以把TCL看作C库,这个库中有丰富的用于扩展TCL命令的C\C++过程和函数,所以,Tcl是

  4. 如何判断oracle是否启动及启动oracle数据库 - 2

    plsql连接Oracle超时,完犊子了肯定是服务器断电了。得马上检查Oracle服务器状态1、检查数据库是否启动su-oracle切换到Oracle用户,输入sqlplus/assysdba显示连接状态。如果末尾显示的状态是Connectedtoanidleinstance.证明未启动2、启动数据库startup启动数据库,末尾出现Databaseopened说明数据库启动成功3、查看数据库监听是否正常先quit;断开Oracle连接,使用lsnrctlstatus查看监听状态,如果出现TNS-开头的Nolistener、Connectionrefused等错误,说明监听未启动4、启动数据库

  5. 计算机网络笔记:TCP三次握手和四次挥手过程 - 2

    TCP是面向连接的协议,连接的建立和释放是每一次面向连接的通信中必不可少的过程。TCP连接的管理就是使连接的建立和释放都能正常地进行。三次握手TCP连接的建立—三次握手建立TCP连接①若主机A中运行了一个客户进程,当它需要主机B的服务时,就发起TCP连接请求,并在所发送的分段中用SYN=1表示连接请求,并产生一个随机发送序号x,如果连接成功,A将以x作为其发送序号的初始值:seq=x。主机B收到A的连接请求报文,就完成了第一次握手。客户端发送SYN=1表示连接请求客户端发送一个随机发送序号x,如果连接成功,A将以x作为其发送序号的初始值:seq=x②主机B如果同意建立连接,则向主机A发送确认报

  6. 华为数通笔记VXLAN&BGP EVPN - 2

    VXLAN简介定义RFC定义了VLAN扩展方案VXLAN(VirtualeXtensibleLocalAreaNetwork,虚拟扩展局域网)。VXLAN采用MACinUDP(UserDatagramProtocol)封装方式,是NVO3(NetworkVirtualizationoverLayer3)中的一种网络虚拟化技术。目的随着网络技术的发展,云计算凭借其在系统利用率高、人力/管理成本低、灵活性/可扩展性强等方面表现出的优势,已经成为目前企业IT建设的新趋势。而服务器虚拟化作为云计算的核心技术之一,得到了越来越多的应用。服务器虚拟化技术的广泛部署,极大地增加了数据中心的计算密度;同时,为

  7. ruby - 使用 Ruby 连接到 Oracle 数据库 - 2

    我无法连接到OracleDB,阅读了很多资料但对结果没有帮助。我有远程OracleDB,我正在使用DBVisualizer设置连接连接到它,如下所示:DBType:OracleDriver(jdbc):OraclethinDatabaseURL:jdbc:oracle:thin:@10.10.100.10:1521/VVV.LOCALDOMAINUserIdf:SomeUserPass:SomePass连接正常。我在Ruby中所做的是:require'oci8'require'dbi'...conn=OCI8.new('SomeUser','SomePass','//10.10.100

  8. sql - ruby on rails 为 oracle View /函数准备的语句 - 2

    我有以下代码执行oracleView,如下所示:defrun_queryconnection.exec_query("SELECT*FROMTABLE(FN_REQRESP(#{type_param},#{search_type_param},#{tid_param},#{last_param},#{key_param},#{tran_id_param},#{num_param},#{start_date_param},#{end_date_param}))")end上述查询的输出如下:SELECT*FROMTABLE(FN_REQRESP('ALL','ALL_TRAN','1000

  9. [蓝桥杯单片机]学习笔记——串口通信的基本原理与应用 - 2

    目录一、原理部分1、什么是串行通信(1)并行通信与串行通信(2)串行通信的制式(3)串行通信的主要方式  2、配置串口(1)SCON和PCON:串行口1的控制寄存器(2)SBUF:串行口数据缓冲寄存器 (3)AUXR:辅助寄存器​编辑(4)ES、PS:与串行口1中断相关的寄存器(5)波特率设置  3、串口框架编写二、程序案例一、原理部分1、什么是串行通信(1)并行通信与串行通信微控制器与外部设备的数据通信,根据连线结构和传送方式的不同,可以分为两种:并行通信和串行通信。并行通信:数据的各位同时发送与接收,每个数据位使用一条导线,这种方式传输快,但是需要多条导线进行信号传输。串行通信:数据一位一

  10. 【微服务笔记23】使用Spring Cloud微服务组件从0到1搭建一个微服务工程 - 2

    这篇文章,主要介绍如何使用SpringCloud微服务组件从0到1搭建一个微服务工程。目录一、从0到1搭建微服务工程1.1、基础环境说明(1)使用组件(2)微服务依赖1.2、搭建注册中心(1)引入依赖(2)配置文件(3)启动类1.3、搭建配置中心(1)引入依赖(2)配置文件(3)启动类1.4、搭建API网关(1)引入依赖(2)配置文件(3)启动类1.5、搭建服务提供者(1)引入依赖(2)配置文件(3)启动类1.6、搭建服务消费者(1)引入依赖(2)配置文件(3)启动类1.7、运行测试一、从0到1搭建微服务工程1.1、基础环境说明(1)使用组件这里主要是使用的SpringCloudNetflix

随机推荐