zoukankan      html  css  js  c++  java
  • 【转】Ouroboros:一个可证明安全的PoS区块链协议 (共识介绍)

    原文作者:Aggelos Kiayias∗ Alexander Russell† Bernardo David‡ Roman Oliynykov§

    摘要

    我们向大家展示Ouroboros——第一个基于权益证明(PoS)并拥有强大安全保证的区块链协议。我们为该协议建立了可以与比特币协议相媲美的安全属性。因为该协议提供了一个"权益证明"的区块链规则,所以相比较基于物理资源证明的区块链(例如工作量证明)它拥有定性效率优势 。我们也为激励PoS协议提出了一个新颖的奖励机制,并且我们证明出,鉴于这个机制,诚实的行为是一个近似的纳什均衡(Nash equilibrium),因此可以让自私挖矿(selfish mining)这种类型的攻击无效。我们还提供了交易确认和处理的实验结果,以此作为Ouroboros协议在真实的世界环境中可以实践的初步证据。

    1 介绍

    对基于工作量证明(PoW)的区块链协议(例如比特币[30])运行的最初考虑就是执行时所需的能量。在撰写本文的时候,比特币上生产一个区块所需的哈希操作超过了260, 这些哈希操作需要大量的能量。确实,早期的计算表明了PoW协议所需的能量与一个小国相当[32]。

    这种状况推动了对其他区块链协议的研究,通过使用更节能但能提供相同安全保证的其他协议取代工作量证明协议的方法来避免浪费工作量证明协议所需的能量。需要指出的重要一点是,比特币的工作量证明机制促进了一种随机化的“领导者选举”过程,该过程就是选举其中一个矿工来生产下一个区块。此外,如果所有矿工都遵守协议,那么选举就是以一种按照每个矿工计算力为比例的方式随机进行的。(偏离协议的行为例如“自私挖矿”可能会破坏这个比例。)

    一种依赖于“权益证明(PoS)”概念的自然替代机制:与矿工为了参与到领导者选举过程中而投资计算力资源相反,他们运行一个程序,该程序以当前区块链账本中记录的每个矿工所拥有的权益(stake)为比例来随机选举其中一个矿工作为领导者。

    实际上,这产生了一个自我参考(self-referential)的区块链规则:维护区块链依赖于股东(stakeholder)们自己,对于他们的工作安排(和奖励)按照账本中记录的他们所拥有的权益数量进行的。除此之外,这个规则对股东们应该没有进一步“人造的”计算力需求。从某种意义上来说,这听起来很理想;然而,实现一个这样的权益证明协议涉及到了许多定义上的、技术上的、以及分析上的挑战。

    预备工作

    PoS的概念在比特币论坛上1 引起了广泛的讨论。Bentov等人更正式的研究了基于权益证明的区块链设计,不论是与PoW[5] 相结合的还是作为区块链协议[4] 唯一的机制都进行了相应的研究。虽然Bentov等人表明他们的协议对于某些类别的攻击是安全的,但是他们不为分析基于PoS协议或依赖于精确定义的安全证明提供正式的模型。一些加密货币2 已经提出(并实现)了试探性的基于权益证明的区块链协议。因为是基于试探性的安全论据,所以从安全角度来看这些加密货币经常被发现很多不足。[4] 中讨论了多种攻击。

    将基于PoS的区块链协议和依赖于固定的(fixed)一系列权限(请看[17] )的经典区块链共识相比较也挺有趣。基于PoS区块链和那些假设静态权限的区块链的区别是权益会随着时间而改变,因此信任假设会随着系统进化。

    另一个可替代PoW的是一个空间证明(proof of space) [2, 20] 的概念,该概念在区块链协议环境中[33] 已经被具体的研究过了。在空间证明的环境中,一个“证明者(prover)”希望展示空间(存储/内存)的使用,就像在PoW中使用物理资源一样,但是随着时间的推移能量的要求会逐渐减少。一个相关的概念是空间时间证明(PoST) [28]。不过,这些对昂贵的物理资源(存储或计算力)都有很大的需求。

    PoS设计的挑战

    基于PoS的区块链协议最基本的一个问题就是模拟领导者选举过程。为了在股东们之间的选举达到一个真正的随机性,系统中就必须要引入熵(entropy),但引入熵的机制可能会容易被敌手操作。例如,一个控制一群股东的敌手可能会试图模拟协议的执行,尝试不同的股东参与者的顺序以此来找到对敌对股东有力的继续者。这会导致一个叫做"grinding"的致命弱点,敌对参与者可能会使用计算资源来倾斜领导者选举。

    我们的结果

    我们提出的"Ouroboros"是一个可证明安全的权益证明系统。就我们所知,它是第一个进行严格的安全分析的PoS类型的区块链协议。更多关于我们研究结果的细节后续会讲到。

    首先,我们提供一个模型来形式化实现基于PoS的区块链协议的问题。我们介绍的模型本着 [24] 的精神,注重 持久性(persistence) 和存活性(liveness),这是一个稳健的文件交易账本的两个重要属性。持久性表明一旦系统的一个节点声称某个交易是“稳定的”,剩下的节点如果被查询并诚实的进行回应,也必须报告该交易是稳定的。在这里,稳定性被理解为一种断言,它将会被一些安全参数k参数化,k将会影响该属性拥有的确定性(例如,深度超过k个块)。存活性确保诚实地产生的交易一旦提供给网络节点足够长的时间之后,比如说经过了u时间,就说这个交易是稳定的。存活性和持久性相结合提供了一个强大稳健的交易账本,即被诚实地产生的交易会被采纳并且会变得不可改变。我们的模型经过适当的修改以促进基于PoS的变化。【译者理解:持久性是指区块的确认时间,持久性是指多少个块之后交易不可更改。存活性是指交易的确认时间,从向网络发送交易开始, 多长时间被确定, 超过了这么长时间,要么被确定了, 要么被抛弃了。】

    第二,我们描述了一个基于PoS的新颖的区块链协议。我们的协议假设参与者可以自由的创建账户并进行接收和支付,随着时间的推移权益也会改变。我们使用一个(非常简单的)安全的多方实现掷硬币(coin-flipping)协议产生领导者选举过程中的随机性。这也是我们的方法(预防所谓的“grinding”攻击)与其他先前解决方案的区别,那些解决方案要么基于区块链当前的状态确定性的定义一个这样的值,要么使用集体掷硬币的方式来引入熵 [4] 。同样,我们方法的独特性还包括以上系统会忽略掉的一轮轮的权益改变。相反,当前股东们的快照是在一个叫做阶段(epoch)的相同的间隔内被拍下的,在每个这样的间隔内一个安全的多方计算就使用区块链本身作为广播通道。具体的说,就是在每个阶段被随机选举到的一群股东们形成一个委员会,然后该委员会就要负责执行掷硬币协议。协议的结果决定下一个阶段负责执行掷硬币的下一群股东以及当前阶段所有领导者选举的结果。【译者注释:也就是多方计算产生真随机,不像以前的pos协议,没有严格的随机性。】

    第三,我们提供了一套正式的论证,确定没有敌手可以打破持久性存活性。我们的协议在下面这些合理的假设下是安全的:(1)网络是同步的,也就是在任意诚实的股东都可以与其他股东进行通信的期间可以确定上限,(2)在诚实的多数者中的一群股东可以根据需要而参与到每个阶段中,(3)股东们不会长期保持离线状态,(4)腐败适应性受制于一个小的时延,该时延在每个回合都会进行测度,并与安全参数成线性关系(或者,玩家拥有访问匿名发送者广播通道的权利)。我们安全论证的核心就是关于“可分叉字符串”组合概念的概率性论证,该论证由我们构想、证明并通过实验验证的。在我们的分析中,我们还区分了隐蔽攻击,这是一种特殊的常用分叉攻击。“隐蔽”在这里指的是敌手对于安全多方计算协议的隐蔽,参见 [3],敌手希望能够破坏协议并且不会被发现。我们表示隐蔽可分叉字符串是可分叉字符串的子类,隐蔽可分叉字符串拥有更小的密度;这允许我们提供两个在效率和安全保证方面能达到不同权衡的截然不同的安全论证。我们的可分叉字符串分析是一个自然和相当普遍的工具,它可以成为PoS环境安全论证的一部分。

    第四,我们将关注点转移到协议的激励结构。我们为激励系统中的参与者提出了一个新颖的奖励机制,该系统已经被我们证明是(近似)纳什均衡的。这样,我们的设计就可以缓和类似扣块(block withholding)自私挖矿(selfish-mining) [21, 38] 的攻击。奖励机制背后的核心思想就是给这些协议行为提供积极的报酬,这些协议行为不能被与协议背道而驰的各方联盟所扼杀。如此,也许能表明在合理的假设下,即在特定的协议执行成本很小,当所有的参与者都是理智的时候忠实的遵循协议就是一种平衡。

    第五,我们引入了一个权益委托机制,该机制可以无缝的加入到我们的区块链协议中。委托在我们这种背景下非常有用,因为我们希望允许我们的协议即使在一群股东高度分散的情况下也可以扩大规模。在这种情况下,委托机制能够让股东们将他们的“投票权利”委托出去,即参与到委员会中的权利,该委员会在每个阶段运行领导者选举协议。就像流动民主(liquid democracy)(又名委任民主 [23] ),股东们在想要独立于其他股东时有能力撤回它们的委任约定。

    鉴于我们的模型和协议描述,我们还可以探索在实践中考虑到的各种攻击如何在我们的框架内被解决。具体来说,我们讨论了双花攻击、交易拒绝攻击、51%攻击、无利害关系、去同步攻击以及其他攻击。最后,我们给出了关于我们设计效率的证据。首先,我们考虑了双花攻击。为了解说的目的,我们对中本聪的分析做了一个比较,他的分析是关于比特币交易拥有99.9%的把握是确定的确认时间。对于敌方而言,交易的确认时间是比特币的10到16倍,这取决于敌手的计算力;对于一般的敌方确认时间要快5到10倍。此外,我们对双花攻击的分析依赖于我们对可分叉和隐蔽可分叉字符串的组合分析,并且比中本聪简化些的分析3 适用于更广的敌方行为。然后,我们调查了我们的原型实现,并报告了在亚马逊云中运行的基准测试,这些测试展现了我们的权益证明区块链协议在性能方面的优势。

    相关工作

    在Ouroboros开发的同时,也有一些其他的协议被开发了,这些协议针对基于PoS分布式账本设计空间中的多个位置。睡眠共识 [6] 考虑一个固定的股东分配(即权益不会随着时间而改变)并针对一个“混杂”的腐败环境,在该环境中,除了拜占庭式的错误之外,攻击者被允许进行自适应以及执行失败停止和修复腐败。在这个混杂的腐败环境中,我们的分析其实是直截了当的,参见备注 2;不过,由此产生的安全性只能在“延迟的腐败”环境中被争论,因此它不是完全自适应的。白雪(Snow White) [7] 讲述了一个演变的股东分配以及为了保障安全使用一个与我们类似的腐败延迟机制。然而,与我们的协议相反的是,白雪设计容易受到“grinding”类型的攻击,这种攻击会按照敌方的意愿来偏离高概率事件。这不仅不会渐渐的破坏安全性,而且还预防了不顾及敌方计算力的具体参数化。

    Algorand [27] 提供了一个遵循拜占庭协议的分布式账本,每个块都可以抵抗自适应的腐败。由于每个块都需要达成一致,所以这样的协议生产区块的速率在本质上会比基于PoS的区块链要慢(其中减速与拜占庭协议预期的执行时间相匹配),但是它们可以自由的进行分叉。在这方面,尽管存在分叉,区块链协议还是展现了允许客户设置可以愿意承担的风险级别的灵活性,让低级别客户可以乐观的享受更快速的处理时间。最后,Fruitchain [36] 为基于PoW的区块链提供了一个奖励机制和近似纳什均衡证明。我们在区块链层使用了一个类似的奖励机制,不过我们底层的机制是不同的,因为我们需要在PoS的环境中操作。该思想的核心就是为诚实的多数者(参见 [24] )提供一个PoS“背书”模拟,使用与基于PoW拜占庭协议相同的逻辑输入一个合适的比例。

    白皮书的概括

    我们在第二部分阐述了模型,为了简化我们协议的分析,我们在第三部分以四个阶段展示给大家。总之,在第四部分我们描述和分析在静态环境中的协议;然后我们再在第5部分讲述动态环境。我们的激励机制和均衡协议将在第七部分讲述。然后我们在第6部分讲述以匿名渠道改善协议以及在第8部分讲述委托机制。接下来,第9部分我们讨论协议在多种攻击下的恢复力。在第10部分我们讨论交易确认时间和原型实现在亚马逊云上运行的一般性能结果。

    译者说:共识介绍的部分已经翻译完成,更多精彩,下回再续!(十分感谢大家对Cardano社区的关注)

    翻译作者: 许莉
    原文地址: Ouroboros: A Provably Secure Proof-of-Stake Blockchain Protocol

  • 相关阅读:
    java 内部类
    webservice restful rpc
    linux 修改文件权限chmod
    java ThreadLocal的理解
    转:Eclipse常用开发插件
    Eclipse安装插件支持jQuery智能提示
    转:VS2008 vs2010中JQUERY智能提醒
    jquery ui和jquery easy ui的区别
    线程池
    java连接数据库URL
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13313563.html
Copyright © 2011-2022 走看看