Chainlink、Band、NEST、Tellor哪种预言机更抗攻击?

区块链无法主动获取链下数据,但区块链又需要链下数据,所以为区块链提供可靠链下数据的预言机就诞生了。
区块链是一个去中心化的可信系统,对数据的准确性要求非常高,否则区块链就不可信。所以能够为区块链提供可信数据的预言机非常重要,其将支撑起海量的区块链业务。
今天以 Chainlink、 Band 、NEST、DOS、Tellor 为例,对这几个预言机项目进行一个简单的概述。
Chainlink
Chainlink 是预言机赛道的龙头,实力强劲,市值已进入前十行列,是行业内应用最多去中心化预言机产品。

Chainlink 已经上线了多种虚拟货币、法币和大宗商品的价格数据,每一个报价都有众多使用方。

报价按照偏差和时间进行更新,不同的报价其偏差阈值和间隔时间有所不同,下图 ETH/USD 报价的更新条件是偏差阈值达到 5% 或者时间超过 10800 秒。此报价由 21 个节点进行,最少 14个 节点提交了报价才能计算可信答案,而节点获取的数据源也是分散的,Chainlink Market 列出了22个数据源。

Chainlink 使用的链上聚合模式,节点将数据提交到链上合约,在合约内进行数据聚合,获得最终数据。而在 Chainlink 的中期计划内,数据聚合这一步骤将在链下进行,取得最终数据后再上传至链上。
Chainlink 的节点可以参与多个报价,在 Chainlink Market 中可以看到所有的节点,也可以看到节点参与了多少个报价及提交了多少次报价。下图可以看出参与报价最多的节点参与了 47 个价格的报价,也可以看到不同的报价节点数各有不同。

Chainlink 通过节点声誉、抵押代币来保证数据安全,Chainlink 会对节点的工作进行声誉评价,声誉更好的节点更有可能获得数据需求方的选择。
数据需求方可以设定节点是否需要抵押代币,以及抵押代币的数量及模式,理论上抵押的代币越多安全性越高。
Chainlink 的报价节点要经过考核才能成为正式节点,Chainlink 会确认节点的身份以防止女巫攻击,以及作为对节点的约束,Chainlink 还公布了 15 个经过官方认证节点。
数据需求方可以选择机构节点提供服务,机构节点本身有较高的信誉度,串联造假的信誉成本较高,可以认为安全性相对更高。
风险点:
随着服务业务规模的增长,节点造假获得的潜在收益越来越高,预言机的安全性会逐步降低。
Band 
Band 是一个受到币安和红杉投资的的去中心化预言机协议。Band 认为预言机的难点在于如何通过经济模型设计实现真正可靠的去中心化,所以 Band 协议的不同之处就在于其经济模型。
Band 协议内有众多数据集,每个数据集都有对应的代币,数据集代币通过代币池与协议代币 BAND 兑换获得。数据提供者需要抵押数据集代币,数据集代币持有者会对数据提供者进行投票,排名前几的节点才能成为数据提供者。
Band 协议内还有协调者,协调者收集数据提供者提交的数据进行聚合,然后将聚合后的数据发送给数据集内的节点签名,签名比例达到 2/3 以上,协调者会将数据上传到链上,供数据需求方调用。
完成了数据提供,系统会对数据提供者和投票者奖励数据集代币,奖励会大部分分给数据提供者。
从官网公布的合作节点来看,也都是一些知名机构,从源头上提升了可信度。

Band 也有不少项目使用,在博客内专门有一栏合作伙伴展示。

风险点:
Band 和 Chainlink 的风险点类似,随着服务规模的扩大,安全性会逐步降低。
NEST
NEST 是一个基于矿工报价博弈的去中心化预言机系统。
NEST 通过矿工报价,以 ETH/USDT 为例,矿工参与报价必须同时在合约内存入 EHT 和对应报价的 USDT ,比如矿工报价 ETH 价格为 230 USDT,则矿工报价最低需要存入10 ETH 和 2300 USDT(最低报价为10ETH)。报价收取 ETH 规模的 1% 作为手续费,同时获得 NEST 激励,收取的 ETH大部分作为 NEST 持有人的分红分发出去。
如果矿工报价偏离市场价格,比如市场价 230 USDT,矿工报价 200 USDT,则矿工的 ETH 会被验证者(套利者)用 USDT 吃掉,矿工会遭受损失。被吃掉的报价为无效报价,不参与价格生成。
验证者在吃单的同时,需要报出一个新的报价单出来,新的报价单规模要求是自己吃单规模的 beta 倍,当前 beta=2。如果验证者的新报价与前面的生效报价有超过 10%  的价格偏离,那么新报价规模要 x 10 倍。
为防止恶意吃单破坏价格生成,验证者在吃单的同时,需要支付吃单 ETH 数量 0.1% 的交易手续费。
如果报价没有在 25 个以太坊区块时间内被成交,则视为公允价格,会被系统收录参与价格形成。25 个区块时间后矿工可以取回报价资产。
任何人都可以参与报价,任何人也都可以参与验证,NEST 是一个开放的系统。
NEST 系统每个区块都会有一个价格生成,如果某一个区块没有生成新的报价,则使用上一个区块的价格。
从上述分析中我们可以看出,想要对报价进行攻击,需要动用大量的资产。因为每次吃单后都需要提交一个新的报价,新报价规模是吃单规模的 2 倍,这是一个指数级提升的资产规模。
理论上每个区块可以有多个报价,则想要阻止一个区块内的多笔报价,需要对多笔报价进行吃单,以及提交吃单规模 2 倍的新报价。同时新的报价也会被验证者进行吃单,从而快速提升攻击成本。
有一种情况理论上可以比较简单的实行攻击,即报出一个规模非常大的报价,此时验证者可以进行吃单,假如参与验证者不够多,只能吃下一部分规模,则剩余未被吃单部分也会被系统收录参与到价格生成中去。
但事实上现在部分主流资产 DEX 上的交易深度已经比较不错,验证者可以在 DEX 内即时变现,进行循环套利。而如果是在中心化交易所做对冲,提币时间漫长,无法进行循环套利。但如果是小币种,DEX 深度不足,则可能会受到大额报价攻击。
NEST 预言机系统 7 月正式上线,目前已经被原力协议集成,迈出了实际应用的第一步。
风险点:
假如报价矿工较少,则攻击成本会降低,报价频次越高,攻击成本越高;
假如验证者较少,则可能会受到大额报价攻击,验证者越多,越安全。
DOS
DOS Network 和 Chainlink 的核心区别是,数据提供节点选择上的去中心化。
其每次报价的节点通过 VRF 随机选择,然后通过门限签名在链下达成共识,最后上传到链上验证。
此种方式在节点端更加去中心化,攻击难度更高,但如果节点数量很多,则节点收益可能难以保证。
成为 DOS 节点需要抵押 80 万 DOS 代币,近期刚开放了节点抵押机制,目前只有 14 个节点,也未见到有项目方使用其预言机系统。
值得一提的是 DOS 的博客在 2 月份就已经停止了更新,而在 7 月突然恢复了更新,且宣布了主网上线。

风险点:
节点数过少的中心化风险;
随着所服务业务规模的增长,节点造假获得的潜在收益越来越高,串通风险会增加。
Tellor 
Tellor 是一个基于以太坊的使用 POW+PoS 机制的预言机系统。
网络每 10 分钟为出价最高的数据请求者提供 1 次数据,矿工以算力竞争提供数据的权利,每次会有 5 名算力竞争胜出者提供数据,系统选择这个 5 个数据的中间值,提供给数据请求者。
矿工需要抵押 1000 个 Tellor 代币,如果对矿工提交的报价有异议,可以在 1 天内抵押代币发起争议,由代币持有人投票表决,胜则获得代币,败则失去代币。
Tellor 矿工需要硬件投入才能挖矿,想要实现和比特币类似的安全性,但 Tellor 如果不能被大量采用,则挖矿收益很可能难以覆盖挖矿成本,则 Tellor 的模型不成立。
Tellor 舍弃了性能,而选择使用 PoW 这种方式来实现更加安全的计算。从利益相关性上说,矿工需要投入金钱购买硬件,以及抵押代币,最终随着算力的增加,硬件成本不断增加,利益相关性逐渐增强,但这要求系统能够提供给矿工足够的回报。
值得一提的是 Tellor 是由 Maker 、Binance Labs 和 ConsenSys 投资的项目。
风险点:
采用不足,系统收益少,矿工没动力增加算力;
随着服务规模的增加,安全性会逐步降低。
总结
事实上随着 DEX 的发展,直接使用 DEX 的链上价格做为预言机也是一个很有潜力的方向,这需要 DEX 具有足够的深度,能够抵抗价格操纵,或者对价格进行加权等操作,来规避价格操纵攻击。
预言机对区块链非常重要,现在的区块链发展还离不开预言机,抗攻击性是预言机最重要的特性。从发展来看,数据需求方可能会选择多个预言机来保证数据安全。
从长远来看,预言机还拥有广阔的空间。