去中心化预言机ChainLink

396 阅读4分钟

ChainLink原理剖析

预言机问题

(1)智能合约无法获取区块链以外的数据,外部API提供的数据和任何其他链下资源都无法获取。 image.png (2)区块链是一个确定性的系统,无法执行非确定性的操作(包括生成随机数和获取动态数据)。

中心化预言机工作流程

image.png

中心化预言机单点失败风险

image.png 中心化预言机有可能网络故障宕机,或者是采取的数据源太过单一(数据源出问题,输入的数据也会出问题),其次,中心化预言机可能会看到链上的合约,从而伪造对于自己有利的数据。

去中心化预言机网络

image.png 多个数据节点形成去中心化预言机网络,每个节点都会收集数据,达成共识后输入到区块链上的智能合约。 共识的方式有很多种,可能是取平均数,也可能类似比赛打分,去掉一个最高分和去掉一个最低分再平均,或者是取中位数等等。 1.技术上,避免了单点失败风险 2.数据上,通过网络对多个数据源进行验证

ChainLink基于本身去中心化网络的产品

ChainLink Data Feed(数据源处理工具)

image.png 有一个预言机网络,每个预言机节点会收到一个外部的数据,那这个数据可能是不一样的(比如有一个token,它有的数据源给的价格是400,有的数据源给的是399或者是401),这部分的共识就是,将从全部价格中找出一个中位数,然后将中位数传给区块链上的智能合约。

ChainLink Data Feed业务流程

image.png 数据提供商将数据提供给网络中的一个预言机节点,节点就将接收到的数据加入到网络中进行共识,一个节点有一个或多个数据提供商,预言机内部聚合合约会获取到去中心化网络聚合以后的数据,然后存在合约的mapping结构里面,用户合约就可以通过调用该接口获取到价格数据。

ChainLink Data Feed技术架构

image.png (1) 1.Consumer调用Proxy合约函数latestRoundData() 2.Proxy调用Aggregator合约函数latestRoundData() 3.Aggregator返回Transmission结果给Proxy 4.Proxy返回结果给Consumer

(2)Aggregator合约为聚合合约 ChainLink预言机网络更新Aggregator合约中的价格信息 1.每30分钟会更新一次 2.通证价格波动超过0.5%

ChainLink Data Feed案例

1.Lending and borrowing(借贷) 2.Mirrored assets(合成资产) 3.Stablecoins(稳定币) 4.Asset management(资产管理) 5.Options and futures(期权期货交易)

ChainLink Keepers(合约自动化执行工具)

image.png (1)开发者人员通过一个中心化服务器去执行solidity的Cron job,监控合约状态,并且发送交易给链上合约。 · 单点失败风险 · 占用团队时间和资源

(2)给交易触发的个人账户提供赏金,交易执行成功即可获得经济激励。 · winner-takes-all reward · 增加链的拥挤程度 · 没有direct commitment

(3)ChainLink Keepers模式

image.png

ChainLink Keepers业务流程

image.png 1. eth_call,判断是否满足条件 2. 下个区块继续检查 3. 调用Keepers注册合约 4. Keepers注册合约调用用户合约

ChainLink Keepers技术架构

image.png

ChainLink Keepers使用场景

1. 自动复利 & yield(Yield Harvesting and Compounding) 2. 借贷平台清算(Liquidation) 3. DEX限价单(DEX limit orders) 4. 流动性管理(Liquidity management) 5. 跨链NFT铸造(cross-chain minting) 6. 动态NFT(Dynamic NFT)

预言机数据源国内外研究总结

1. 现在国外的解决方案ChainLink采用多数据源获取、内部共识来解决可信问题(数据源多是付费来获取可信性,一旦链上合约价值大于费用,数据源的可信就不能保证了);Band Protocol双币经济模型(这个解决方案很好,但是在国内不适用,因为涉及到了发币环节,而且预言机的使用门槛会升高,提供数据的人还得自己去判断数据来源可不可信,以免损害收益)

2. 国内的解决方案Dos NetWork是随机选取节点进行工作,并通过签名来验证数据(仍然没有解决数据源可信问题);Truora融合多数据源与权威中心数据源共存,通过系统对信任度的要来进行选择(权威中心背书,适应国内行情,但是对小型数据提供商不友好,过度中心化)

3. 总结:现在已有的解决方案都是在采集数据以后,在预言机内部来进行数据筛选和共识,使得上链的数据都是可信的,但是系统工作量大,需要不断识别预言机采集的数据,站在预言机的角度上想就还是只保证了传输过程的可信,刚采集的数据是无法判断可信的(即数据源不可信),从源头解决的方案又过度中心化,需要政府或权威背书,违背了区块链去中心化的初衷,且对真实的小型数据源极度不友好。