收起
1分钟1小时1天1周1个月

如何实现真正的去中心化预言机?

随机性和去中心化的预言机。

2019年11月29日 16:32 区块链 预言机

来源 / 蓝狐笔记

前言:预言机是整个加密世界非常重要的一环。不过,当前的去中心化预言机还无法达到领先公链级别的安全和去中心化。而需要预言机服务的智能合约安全会依赖于最薄弱的环节,如果预言机方面通过选择高质量认证节点运营商,通过惩罚方式,通过声誉指数等方式来确保安全,也许在短期和中期内有利于引导出网络,并提供一定程度的安全,但也存在一个很大的安全隐患:如何防止这些已知节点的合谋。如果想要达成真正的去中心化预言机,最重要的是构建达到公链级别的安全,而随机选择节点是其中的一种重要方法。它本质上也是一种共识机制的设计。本文作者是Zak Ayesh,由“蓝狐笔记”社群的“MoQi”翻译。

本文提出一个附加安全层的想法,可被整合到诸如Chainlink这样的预言机中,以供智能合约使用:随机选择节点运营商。


当前Chainlink的安全设计

Chainlink试图解决加密领域的重大问题:预言机问题。Chainlink白皮书中,我最喜欢的描述之一是其团队开发协议的纵深防御方法。该计划允许智能合约开发者可以调整下列的安全变量,也称为“服务级别协议(SLA)”,以适应各自不同的合约情况:

  • 自由选择所需的节点运营商数量

  • 使用链上验证合约来确定高质量的节点

  • 使用链上和链下声誉指标来确定高质量的节点

  • 要求使用可信执行环境(TEE)

  • 要求节点运营商持有一定数量的抵押资产

  • 对恶意节点的抵押资产进行惩罚的严重程度

  • 奖励给行为良好节点的金额

  • 如何聚合节点响应(这也控制了如何奖励或惩罚节点的确切条件)

  • 使用Chainlink自己的可信和经过审查的节点运营商,以抵抗女巫攻击

  • 底层区块链的选择。Chainlink是一种协议,可以移植到最安全的智能合约区块链。

那么,举个例子。假设我是一个开发团队的成员,该团队拥有一个有数万亿美元流动的智能合约。我可以要求300个在验证和声誉合约/服务上拥有最高分数的认证节点运营商,只选择那些在可信执行环境(TEE)中运行节点的运营商,要求每个节点至少抵押了100万美元的Link代币,惩罚所有偏离平均响应两个标准差的节点运营商,并慷慨奖励所有两个标准差以内的节点运营商。

这样的行为有很高的安全性。可能会过犹不及,我上述提到的假设也可能无法实现。但这是Chainlink协议的精妙之处。它允许智能合约开发者以及社区来决定为某个特定的智能合约在预言机中提供多大程度的安全性。智能合约的安全取决于其最薄弱的环节,Chainlink的CEO Sergey曾表示其目标是让预言机跟运行智能合约的区块链一样安全和去中心化。但是,在所有这些防御层中缺少实现这一目标的关键安全特征:随机节点运营商的选择。


随机节点运营商和抗合谋

让我们简单看下以太坊的共识算法,以太坊是当前运行Chainlink的区块链。以太坊当前运行在PoW共识算法上,有计划切换到PoS。在PoW中,任何人都可以成为矿工,以创建和验证区块,其方式是通过设置挖矿节点,加入网络,并寻找正确的随机数以挖出区块。

尽管这创建了任何人都可以参与的无须许可的网络,但它同时也创建了一个更加抗合谋网络。(蓝狐笔记:抗合谋是指不易串通)

这种抗合谋性来自于这样的事实:区块生产者并非由中心机构或人选择的,而是根据它们所贡献的哈希算力比例随机选择出来的。没有实体可以确定地知道哪个节点会提议下一个区块。

然后提议的区块由运行全节点的整个网络检查,攻击者可以通过合谋来启动区块链篡改的唯一方法是,合谋的群体是否拥有超过23%的哈希率。如果要造成任何实质性的损害,通常认为必须要控制超过50%的哈希率。将它跟EOS的DPoS共识算法进行比较,它通过社区投票来选定有限的验证者,也就是21个代表节点,它因此也遭受可能的腐败及合谋的指责。

我的想法?只要智能合约开发者在选择特定的节点运营商,它们就无法达到跟领先公链相同的抗合谋级别。一群已知的节点运营商远比从一个池中随机选择的节点运营商更容易实现合谋。即使使用像SGX这样的可信执行环境(TEE),你实际上也要在组合中添加一个可信运营者,例如Intel(蓝狐笔记:此处是指除了要相信已知的节点运营商之外,还要相信硬件厂商)。

在这里,我的意思不是说Intel会有意地设计带有后门的SGX,也不是说所有合约都需要达到以太坊底层链级别的安全,但有些合约确实需要这种级别的安全。如果我们想要达成这一目标,Chainlink需要增加另外的安全性,基于staking上的安全的随机信标。


解决方案:以太坊2.0信标链+Staking/

对于缓解Chainlink中节点运营商可能的合谋问题,我的建议是允许智能合约开发者使用安全的随机信标从无须许可的节点运营商池中随机选择节点。真正安全的随机信标在区块链中很难达成,但很幸运,以太坊已经有提议要实现安全的通用随机信标,即以太坊2.0信标链。

说以太坊中的信标链会产生不可预测和没有偏见的随机性,它基于这样的假设:至少有一个验证者是诚实的,并且不存在VDF ASIC硬件的速度快于商品VDF ASIC硬件速度很多倍的情况。实际上,你会看到我的建议实质上是使用一个非常类似于以太坊2.0的权益证明工作原理的系统。

让我们假设有特定的数据流在很多不同的智能合约中都有非常高的需求,例如,让我们假设其中的一个数据流就是ETH/USD价格流。任何人都可以为这个数据流启动节点,并加入网络。但是,不是加入和等待一个智能合约开发者来选择你,而是你加入节点运营商的池子,在这个池中的所有节点都给智能合约提供相同的数据流。

以太坊随机性信标被触发,并且当它触发时,节点运营商的新委员会被选择出来,委员会规模由需要预言机服务的智能合约的SLA决定。(蓝狐笔记:SLA是指服务级别协议)其中,某个特定节点被选进委员会的概率将与其在池中质押的Link代币数量比例成正比。这些节点将提供数据流,数据会被汇总,并将根据使用服务的智能合约的定义来进行奖励或惩罚。

这可以叠在所有当前计划的安全功能之上。

或许智能合约开发者可以基于链上声誉指标部分影响节点被选中的概率;质量声誉越高,被选中的可能性越大。智能合约可以奖励使用SGX的节点,或者它可用于当前中心化认证服务,其中你至少知道谁是池中的一些较大的节点。

当然,这需要足够大的节点运营商池,才能从根本上消除池中已认证节点之外的女巫攻击威胁。在以太坊中,估计有数以万计的节点,这很容易假定这些节点中的大多数并非由少数几个假装很多的运营商所控制。


结论

我不是第一个想出这个主意的人,有几个即将到来的预言机网络也发现节点选择缺乏随机性,并提出了自己的解决方案(通常它们有自己的PoW链,对此我也有所保留)。其中的案例包括Witnet和Tellor。还有其他解决方案,例如可能的去中心化身份协议。这是一个非常基本的建议,距离详细的规范和设计相距甚远。

还可以从以太坊的PoS设计中吸取营养,例如锁定期间或对同时离线的节点处以更大的惩罚。本文的目的更多是对抛砖引玉,希望Chainlink和社区采取行动。从长远看,我们必须最小化对第三方的信任,以及最大限度地减少预言机中出现的合谋威胁。

总体来说,我认为Chainlink当前的计划和发展是出色的。使用认证服务用于抵抗女巫攻击,同时结合所有上面提到的安全方法,这些给它超过大多数其他竞争预言机解决方案的最强防御属性。这些方法还具有快速引导出网络的额外好处,并且在节点运营商还不够多的情况下,可能在中短期内有更好的安全性。

然而,从长远看,如果我们真正想要开发出最去中心化的预言机解决方案,如果我们想要在安全和无须信任方面尽可能达到与领先公链如以太坊相同的级别,那么,我们就不能简单地相信选择的一组节点运营商不会合谋。获得随机性可能是Chainlink未来需要确保自己安全的最后一项功能。