区块链|【译】Byzantine Fault Tolerance in Proof-of-stake protocols


介绍基本知识,了解最新和最伟大的卡斯帕研究 股权证明符合数十年前的研究文献。 如果您遵循以太坊基金会的Casper研究,您将会听到许多术语,如“异步安全性”和“异步时序模型中的容错阈值”。我想概述基础拜占庭容错理论中的重要概念因此您可以在今天有关证券占用空间中最激动人心的工作中获得更多背景。
在学术文献中谈到分布式共识算法时,我们使用了一个基本模型,该模型假设了一些关于时间的属性(“该信息到达需要多长时间?”)以及一些关于故障类型的属性(“节点在协议中做错了什么?“)。 我们这样做,所以我们可以非常精确地描述我们正在讨论的事物的类型,因此我们可以反过来创建正在调查的算法的各种保证的正式证明。 这些正式的证明是有用的,所以我们可以说服我们自己和其他人,我们认为将发生的事情将实际发生。 计算机可能进入的状态数量,更不用说它们中的许多状态的网络,如此庞大以至于在构建真正的冷却系统的系统时,使用数学中的一些漂亮工具是非常有帮助的。
协议中的安全性和活力
让我们快速回顾协议是什么,所以我们都有相同的上下文。 然后,我们可以谈论活跃性和安全性,以及当这些事情中的任何一个都有“失败”或“错误”(通常是同义词,btw)时它的意思。 我们可以像一场比赛一样思考一个协议 - 有一套球员和一些规则。 这些规则决定了玩家应该如何回应游戏中的各种事件。 这个“要做的事情”通常会导致玩家改变他们所拥有的一些数据,比如迄今为止的最高分。 如果我们的共识协议运作良好,那么遵循所有规则的所有参与者意味着在任何给定时间,每个参与者对于他们的本地状态将具有相同的价值。 在分散式协议中,这种结果变得非常重要,在这种协议中,你通常会在互联网上有一群陌生人正在试图对这个世界的本质做出最好的猜测。
活力是指我们的共识算法不能“卡住”,这意味着只要足够的节点(“参与者”)仍在参与,就可以达成共识。 “活跃性失败”是指我们从某种状态开始(如创世区块),然后运行协议处理消息,我们从同行中看到“脱线”并相应更新我们对全球状态的本地观点 - 然后被“卡住”。 这里意味着您的计算机可能会高兴地等待更多的消息,但实际上没有任何人(或某些子集在某些情况下)可以向您发送消息,让您继续计算全局状态。 你认为这就像玩hopskotch,除非你在卡牌7和8之间卡住(可能永远!)跳中。
安全性是一个重要的一致性属性,它意味着一旦节点决定了某个共识值(根据协议),那么该决定也将在该组参与者中的所有节点上做出。 更简单一点,如果你没有安全,那么你就没有达成共识。 如果我们一半人认为当前状态是数字“1000”,但另一半认为它是“1234”,我们的协议就会失败。 一个重要的细节是节点可以避免产生共识值 - 也许他们需要更多的时间来从他们已经看到的所有消息中找出共识状态 - 但是如果一个节点正确地遵循一个安全协议,那么它只会一旦确定每个遵守规则的人都做了相同的事情,就要承诺具体的价值。
计时模型
通常使用的三种主要类型的时序模型是同步模型,异步模型和部分同步模型。 这些模型中的每一个模型都会对在给定一轮协议执行过程中节点之间交换消息之间可能发生的时间长度(“延迟”)做出一些保证。 这种分类很重要,因为在分布式设置中,单个节点无法区分发生故障的对等节点和需要很长时间响应的对等节点。 考虑到这个事实是设计分布式共识的鲁棒算法的核心。
举一个更熟悉的例子,让我们想象我们坐在一张桌子上,你的朋友正在玩一个电话游戏。 一个玩家开始向下一个玩家耳语,然后我们全都围着桌子向旁边的玩家耳语。 最后的最后一名球员展示了他们听到的每个人的单词,每个球员都可以将他们的单词与起始单词进行比较。 笑通常随之而来。 实际上,我们可以在这里区分两种类型的延迟:1)玩家一旦听到该单词就会向下一个玩家耳语; 2)单词从玩家到玩家的时间。 第一种延迟对我们的分布式计算环境非常重要 - 想象一下由于本地代码中存在错误而导致无限循环的“领导者”节点,并且永远不会“传递火炬”,从而使组中的“追随者”可以继续在没有失败的领导者的情况下形成共识 - 然而,第二种延迟通常会得到更多的分析,因为它通常以绝对的方式占主导地位(也许是因为作者认为我们可以编写无缺陷的代码?)。 要在电话游戏中传递信息,你只需要向邻居耳语,这似乎并不需要很长时间。 在分布式计算环境中,您可能试图联系世界另一端的计算机,此时传输消息所需的时间开始累计。 现在让我们看看每个时序模型。
在同步模型中,在节点发送消息和确定接收节点听到消息之间的时间内,有一些最大值(“上限”)T. 对于节点之间速度的相对差异,你也有一个上限P(所以你可以考虑处理器速度慢的机器)。 我们可以想象一些理想化的环境,我们只有少数几台电脑(可能都在同一个房间内)与完全可靠的链接交换消息。 在这种情况下,我们希望现代机器能够在不到一秒钟的时间内发送消息; 这个数值就是我们的T.由于我们使用了现代化的机器,让我们假设所有的处理器都是直接来自晶圆厂,那么我们将在相同的节点间有一定的容差。我们的P值。
在异步模型中,我们删除T和P的上界。消息可以花费任意长的时间到达对等点,并且每个节点可以花费任意时间响应。 当我们说任意的,我们包括“无限”,这意味着它发生一些事件需要永远。 这种模式非常重要,因为它可以更准确地捕获公共互联网,网络上的节点(包括中间路由器)发生故障,并且信息一直被丢弃。
部分同步模型在两者的混合中存在:对于T和P存在上限,但协议设计者不知道它们,并且任务正在设计依据这个事实仍然达成共识的机制。 在实践中,考虑到现代网络/机器的实际特性(消息通常到达目的地),协议实现者可以实现类似于这种模型的系统,并使用诸如超时之类的策略来指示节点何时应该重试发送消息。 传统的BFT文献(例如Paxos和较新的Raft)有几种类型的算法利用了这种见解。
这在卡斯帕的应用有多少
所有上述背景都与卡斯帕相关,因为它旨在成为以太坊区块链的分散协商一致协议。 我们不仅有典型的问题类别 - 错误的节点和多斑点的网络 - 我们现在也有实际的激励措施,使节点行为失常。 对卡斯帕共识的成功攻击可能允许某人执行双重支出攻击或我喜欢称之为索罗斯攻击的攻击 (参见乔治索罗斯和黑色星期三),攻击者在短时间内攻击ETH,然后在Twitter时激发大规模的恐慌抛售开始传播以太坊达成共识失败的消息。
关于分散化背景下的共识细节还有很多需要说明的内容,并且考虑到加密货币涉及的经济诱因,攻击空间更大。 我建议从这里开始深入探索: https ://blog.cosmos.network/understanding-the-basics-of-a-proof-of-stake-security-model-de3b3e160710 ,如果你想从消防队员那里喝酒可以加入https://ethresear.ch/的研究。


https://hackernoon.com/byzantine-fault-tolerance-in-proof-of-stake-protocols-ab9746521b24
【区块链|【译】Byzantine Fault Tolerance in Proof-of-stake protocols】

    推荐阅读