Chainlink 工程师:预言机如何连接 Web2 与 Web3
2023-05-24 19:08
ForesightNews 独家
2023-05-24 19:08
订阅此专栏
收藏此文章
在市场较为低迷的情况下,预言机的需求仍一直呈现指数型增长趋势。

 

演讲:Frank,Chainlink Labs 开发者关系工程师

整理:aididiaojp.eth,Foresight News

 

我是来自 Chainlink Labs 的开发者关系工程师 Frank。我的主要工作是能够让更多的开发者,或者对这个行业抱有热情的建设者更多地去了解关于预言机的知识。基于我们目前基础架构下面的智能合约,我们可以把它看作一种混合型智能合约。智能合约能够跟 Web2 世界里面各种各样的数据,包括计算服务等更好地紧密结合起来,然后基于这个架构极大限度地拓展链上智能合约所能做的事情。

 

在今天的分享中,我首先会介绍一下预言机的概念,然后基于预言机的概念我会简单介绍去中心化预言机网络,以及我们能够提供的一些服务,包括数据服务和计算服务等。

 

什么是预言机?

 

 

从 Web 1 到 Web 2 再到 Web 3 这三个阶段网络和数据状态是在不断变化的。最开始 Web1 是一个数据只能静态读取的网站服务,发展到 Web2 阶段时,数据变得可读、可写、可参与。很多大公司就基于自己的服务缔造出来商业帝国,它们会把所有的用户数据存在自己的数据库里面,如果出于一些需要,它们其实是可以拥有并且修改用户数据。那这样的话就衍生出来一个问题,就是我们在互联网上或者在虚拟世界里面创造的一些数据,有时是有一些价值的,那这个价值到底是属于谁?基于这个背景下,我们希望能够在 Web 3 阶段很好地解决这个问题。在 Web 3 阶段所有的数据,它并不是存在一个服务器里面,或者不是存在一个节点里面,它是有一个去中心化网络,而去中心化网络是一个由多个节点组成的多账本系统。数据存储在多个节点里面,只有每一个节点都认同数据的修改和存储,最终数据才可以被存下来。那这样就会给我们带来一个好处,就是无论我们想去对数据做什么样的修改,我们需要按照预先约定好的共识进行修改。比如说我想修改钱包余额,如果没有人给我去打钱,不论这个数据的拥有者想去怎么样修改,他最终都通过不了共识过程,这导致钱包余额是不能被修改的。只有数据的拥有者发送一个符合规则的交易才最终能够将数据修改,这样带来的一个好处非常明显。同时它也带来一些缺点,最大的一个缺点就是它使得系统变成一个确定性的系统。也就是说因为在整个过程中会有一个共识的过程,所以它只能去执行别人可以验证的操作。你在发送一个操作的时候,别人需要执行你的操作,别的节点执行操作如果能够成功的话,其实它就可以去把结果返回。至于超过 50% 还是 70%,这个取决于共识算法。最终就可以把操作写到交易里面,交易写到区块,变成完整的交易。

 

 

但是如果我们需要做一些非确定性的操作,例如区块链之外获取一些 API 数据和随机数的生成等,确定性的区块链系统就无法完成。我们抽奖需要生成随机数,或者链上协议需要知道链下的资产价格,像获取股票或者是大宗商品的价格,属于一种非确定性操作,并且不能够由区块链本身完成的。再比如像 API 的调用,如果我作为网络中的一个节点,我调用了外部的 API 数据,然后我告诉网络中的其他节点这个结果,其他节点为了验证结果的真实性,那它们也会去执行同样的操作,然后得到一个结果。但是对于一个外部的 API 来说,不同的人在不同的时间去取同样一个 API,那有可能服务器会挂机,或者服务暂停,再或者随着时间的变化,数据发生了变化。你不同的时间去做同一个事情,得到的结果是不一致的。只要结果是不一致的话,最终操作就没有办法入块,也就没有办法完成。这就是我们拥有了数据所有权以后,同时也需要去承担它所带来的一些短板。

 

 

想要解决这个问题就需要依靠预言机。区块链是一个孤立的,同时也是一个确定性的系统,它无法主动从链下获取到数据,预言机的出现就是为了解决这个问题。在两三年前,预言机的概念就出现了,但当时适用的场景不多,有很大的局限性。比如想获取一些市场数据,把股票数据上传到区块链网络上,或者做一个架构把逻辑放在链下去执行,但是资产端放在链上,通过智能合约保护交易的正常进行等操作时,这时就需要从链下去获得一些数据,并且需要周期性地进行数据同步,包括银行的支付或者零售数据,甚至还包括一些其他公共事件的数据,像天气情况、地理的信息,物流信息、体育比赛结果等,这些数据如果不通过预言机是无法获取到的。这就会让链上生态非常受限。随着 Web 3 生态不断发展,Web 3 跟 Web 2 两个世界的链接会越来越紧密。如果我们想让 Web3 实现大规模采用,或者能够被更多的人去使用的话,它一定需要提供非常丰富的功能,不能仅仅局限于只能通过链上原生数据做的一些操作。

 

预言机概火起来是在 2020 年,就是 DeFi Summer 的时候,大多数人才认识到它。最开始预言机做的事情也非常简单,比如想要获取外部数据上传到去中心化网络,也就是区块链当中,那其实最简单的方式就是在链下建立一个中心化节点,也就是搭建一个服务器,然后通过服务器获取数据,最终再把数据写入到去重的区块链网络里面,那这个模式就叫中心化预言机。它虽然实现起来比较简单,但会带来一些问题,例如它有单点失败的风险,就是中心化节点可能会因为自身的基础原因导致宕机。还有一种可能,就是如果链上智能合约所提供这个服务是依赖于中心化节点提供的数据,而如果链上智能合约涉及的资金量是非常大的话,那这个中心化预言机有可能通过自己所能够操控的数据,对服务发起攻击。只要利益足够大,没有办法通过技术手段实现完全性保障,那这就是单点失败。我们想把应用放在在去中心化网络里面,包括以太坊或者其他的 Layer 2 生态里,其实也是希望我们可以通过网络里面成百上千的预言机节点来保证我们应用也就是智能合约的公平性和安全性。

 

 

当然如果说我们依赖中心化节点来获取数据端,即使别的方面安全性都可以保证,但最重要的资产数据端没有办法保证安全性的话,也会让整个 dApp 失去意义。所以在中心化预言机之后,就出现了去中心化预言机网络,它能够很好地去解决我们刚才所提到单点失败的风险。去中心化预言机网络最大的区别不是单个预言机节点向去中心化网络提供服务,而是通过去中心化预言机网络来提供服务,也可以把它理解成某种 Layer 2,就是每一个去中心化预言机网络里面的节点都可以通过自己的数据源获取到数据,得到结果以后可以跟其他的去中心化网络进行数据聚合,那也可以把它理解成一种达成共识过程,包括查一下数据是否是有没有节点,或者所返回的数据是否偏离平均值太远了,或者就是单纯做一个平均值,然后把数据做一次聚合等,再写到去中心化网络当中。这种方式带来的好处,一个是技术上可以保证服务不会中断,除非去中心化预言机网络里面的所有节点都停止服务,但这个可能性是非常低的。另外在数据端也可以保证预言机给链上合约所提供这个数据并不是由单一的节点所控制的,而是由很多个节点控制。如果想操纵数据发动攻击的话,成本就非常高了,这就相当于你要去攻击 Layer 2,或者甚至是以太坊这样的去中心化网络,那基本上是不太可能成功的。

 


去中心化网络能够使智能合约接收数据的安全性和公平性得到极大的提升。对于用户来说,我们只是一个去中心化预言机网络,但是基于去中心化预言机网络,我们又可以提供一些别的服务,比如数据服务、计算服务和跨链服务等。如果是基于预言机给网络提供数据,其实有一些比较复杂和成本较高的操作,也可以在链下完成,就是把它打包给链下预言机网络进行计算,然后再写回到安全性比较高的区块链上面。我们如果能够从链下获得数据,那也可以从其他的链获取数据,再写到这条区块链上,那这其实就涉及到了跨链。只要去中心化预言机网络安全性足够强,那它可以保障基于它之上所建立的数据服务、计算服务和跨链服务的安全性都是非常强的。Chainlink 基于去中心化预言机提供了各种各样的服务,能够把 Web 3 跟 Web 2 的数据,包括 Layer 1 和 Layer 2 的数据打通,让大家尽可能多地获得相对应的数据和服务。

 

Chainlink 预言机提供的服务有哪些?

 

接下来我来简单介绍一下 Chainlink 预言机所提供的服务。当然基于 Chainlink 所提供的服务有很多,我分享一些适用场景比较多的服务。

 

如果大家以后要做关于 DeFi、 GameFi 、NFT,还有 SocialFi 等领域的一些创新的话,大概率是需要预言机来获取数据的。因为你一定要需要以一种非常去中心化且安全的方式获取链数据,并写回到你的链上智能合约里面。


第一个服务是喂价,这个可能也是大家之前经常会听到的一个词汇,它的爆火是在 2020 年 DeFi Summer。 2020 年出现了很多 DeFi 项目,最开始是 Uniswap,后面出现了借贷合约 Compound,再然后是合成资产项目 Synthetics 等应用,它们对于链下的数据都有大量的需求,因为只有基于安全的数据才能够通过合约以去中心化的方式让数据能够被用户所使用,那其中扮演一个重要角色的就是预言机的喂价服务。

 

 

上图是喂价服务的基本流程图,其中包括 3 个重要的参与方。第一个就是我们刚才提到的预言机去中心化网络;第二个是数据提供商,有可能是交易所,也有可能是其他大型权威机构,它们都可以作为数据的提供商;第三个是用户合约。上图展示的流程是非常简单的,每个数据提供商都可以通过数据源接口或者服务给到 Chanlink 预言机网络的某一个节点,预言机网络的每一个节点也都可以根据自己的服务来获取数据,然后再经过聚合过程,把每个渠道获取的数据写到链上部署好的验证合约里面。如果通过验证的话,数据就可以被记录下来,以后就可以被用户所使用,这就是整个流程。用户端只需要使用合约就能够获取和使用多个数据。

 

喂价的使用案例是非常多的,比如刚才我们提到的 Compound、Uniswap 和 Synthetics,它们需要把 Web2 里面的资产映射到 Web3,这时它们需要外部机制提供资产的价格。就像稳定币一样,它基于多少资产能够发多少稳定币,那它的资产价格也要基于预言机去获取。另外像一些资管平台和比较火热的衍生品交易应用,他们对于价格都是高度依赖的,所以这其实都是喂价服务的重要用户。从趋势上来看,喂价服务的需求属于指数型上升的。尽管在市场不是那么活跃的情况下,数据使用量也是在一直增长的。

 

 

接下来我介绍第二个比较有特色的服务是 Any API,简单来说就是帮助链上智能合约获取一些非标数据,比如一些长尾数据。这些数据可能只有某一些人或者某一些合约可以用得到了,但它并不是像是代币价格一样,或者资产价格一样的标准数据。很多 DApp 都需要非标数据,比如说 Web 3 保险业务类应用需要获取天气数据或者是航班的延误数据。像是温室气体可以做一些类似于 ESG 的项目,包括选举体育比赛可以跟预测市场结合起来。我们基于 Any API 提供了数据市场,每个数据市场里面是有各种不同的数据提供商基于自身数据向外部提供服务,只要用户发送请求,那他就可以根据服务要求把数据写回到用户合约。数据的提供方跟数据的接收方都是由市场决定的。用户和数据提供商存在市场,并不是由 Chainlink 官方把所有的数据都垄断掉,然后向链上提供数据。

 

 

Any API 跟喂价的工作流程其实也比较一致,合约首先发送请求,然后请求会被 Chanlink 的节点所发现。发现以后,Chanlink 可以根据请求选择所需数据,然后再写回到区块链之上。Any API 能够给用户提供各种各样的数据,但是它有一个特点,就是虽然它搭建起来的速度比较快,但是它是由单个节点提供数据的。Any API 要做到的是尽可能快的通过简单的方式获取数据,而非是通过我们之前所提到的去中心化网络预言机去获得到数据。

 

 

后来随着数据需求的多样性增加,很多非标数据也希望能够通过去中心化的方式写回到链上。我们在今年 4 月初的时候也做了一个新的服务叫 Functions,简单来说就是通过去中心化预言机网络执行用户的任何请求。用户可以用一些高级的编程语如 Javascript 等把操作程序写出来,不再只能通过 Solidity 语言编写,用 Javascript 写出来的程序肯定是比 Solidity 更加丰富。Functions 服务可以把写出来的程序封装进请求当中,并发给整个预言机网络。网络里面的每一个节点都会执行相同的操作,可能是计算服务,可能是获取数据服务,也可能是其他的服务。在每个节点执行得到结果后,经过我们刚才所提到的聚合过程,再写回智能合约里面。

 

 

跟喂价相比,它的自由度就非常高了。也就是说可以给到智能合约向外的接口来使用任何一种它想要的方式。也能够把它要做的一些逻辑写到合约里面,然后不是由区块链去执行了,而是由预言机去执行,就相当于把预言机服务直接嵌入到智能合约里面,变成是混合型的智能合约。如果以这种方式去做,那你的执行是通过去中心化的网络去保证的,那你这些非确定性的操作,就是在区块链上做不了的操作,能够通过去中心化预言机网络执行,并且返回结果的。总体来说能够大大提升智能合约的功能性。它能做的功能会比以前更加丰富,然后在用户端实际应用起来也非常简单,只需要在你的合约里面加入两个函数,就可以直接把去中心化预言机网络作为你的智能合约一部分来使用。而且对于传统 Web2 的程序员也是非常友好,因为执行逻辑是可以通过传统的编程语言完成。整体的流程并未发生改变,发送请求,然后给到去中心化预言机网络,执行以后进行聚合,最后再写回到用户的智能合约里面。

 

以上就是我分享关于预言机,以及基于预言机的去中心化网络所能提供一些服务。

【免责声明】市场有风险,投资需谨慎。本文不构成投资建议,用户应考虑本文中的任何意见、观点或结论是否符合其特定状况。据此投资,责任自负。

ForesightNews 独家
数据请求中
查看更多

推荐专栏

数据请求中
在 App 打开