LOADING...
LOADING...
LOADING...
当前位置: 玩币族首页 > 新闻观点 > 【译文】阿童木COSMOS白皮书(七)

【译文】阿童木COSMOS白皮书(七)

2020-01-02 灰狼 来源:区块链网络

10.附录

10.1分叉责任

一个设计良好的共识协议应该在超过容量限制和共识失败的情况下提供一些保证。这在经济体系中尤其必要,因为拜占庭式的行为可以获得可观的经济回报。最重要的这种保障是一种分叉问责形式,即导致共识失败的过程(即导致协议客户端接受不同的价值——分叉)可以根据协议的规则,或可能的法律制度加以确定和惩罚。当法律体系不可靠或调用成本过高时,验证者可能会被迫缴纳保证金以便参与,当检测到恶意行为时,这些存币可能会被撤销或削减[10]。

注意,这与比特币不同,在比特币中,由于网络异步和查找部分哈希冲突的概率性,分叉是经常发生的。由于在许多情况下,由于异步性,恶意分叉与分叉无法区分,比特币无法可靠地实现分叉问责,除了矿工为挖掘孤立区块而支付的隐性机会成本。

10.2TENDERMINT共识

我们将投票阶段称为预投票和预提交。投票可以是针对某一特定区块也可以是空值。对于同一轮中的一个区块,我们称之为一个>?预投票的集合为Polka,对于同一轮中的一个块,我们称之为一个>?与提交的集合为提交。如果>?预提交在同一轮中为空值,则移到下一轮。

请注意,协议中的严格确定性会导致弱同步假设,因为必须检测并跳过错误的引导。因此,验证器在预先声明空值之前等待一定的时间超时假设,并且超时假设的值随着每一轮的增加而增加。在一轮的剩余时间里,进程是完全异步的,在这个过程中,只有当验证器从网络的>?处获得消息时,进程才会进行。在实践中,需要一个非常强大的对手无限期地挫败弱同步性假设(导致共识失败无法提交至区块),并且通过在每个验证器上使用超时假设的随机值可以使这样做变得更加困难。

另外一组约束或锁定规则确保网络最终在每个高度仅提交一个区块。可以识别任何恶意尝试导致在给定高度提交多个区块。首先,一个区块的预提交必须有正当理由,以Polka的形式。如果验证器已经在第R_1轮预提交了一个区块,我们说它们被锁定在该区块上,并且用于证明第R_ 2轮新预提交的R_Polka必须在R_1< R_Polka<= R_2的R_Polka中出现。其次,验证程序必须提出和/或预先声明它们锁定的区块。总之,这些条件确保验证器在没有足够证据作为理由的情况下不会预提交,并且已经预提交的验证器不能为预提交其他内容提供证据。这确保了共识算法的安全性和活跃性。

协议的全部细节在这里描述。

10.3TENDERMINT轻客户端

在一个替代链(分叉)的存在下,意味着对所有块头的同步需要被消除。当然,由于削减需要某些人共享分叉的证据,所以轻客户端应该存储它所见的任何区块哈希提交。此外,轻客户端可以定期与验证程序集的更改保持同步,以避免远程攻击(但也可以使用其他解决方案)。

在类似于以太坊的精神中,Tendermint使应用程序能够在每个块中嵌入全局Merkle根哈希,允许根据账户的平衡、存储在合约中的值或存在未耗尽的事务输出等容易验证的状态查询,这取决于应用程序的性质。

10.4防止远程攻击

假设广播网络和静态验证器集的集合具有足够的弹性,则可以检测到区块链中的任何分叉,并削减违规验证器的存币。V神(Vitalik Buterin)在2014年初首次提出这一创新,解决了其他权益证明的加密货币(见相关工作)的无利害关系问题。但是,由于验证程序集必须能够更改,在很长一段时间内,原始验证程序都可能成为未绑定的,因此可以自由地从创世区块创建新链,因为它们不再锁定存币,因此不产生任何成本。这种攻击被称为远程攻击(LRA),与短程攻击不同,当前绑定的验证器会导致分叉,因此会受到惩罚(假设分叉负责的BFT算法如Tendermint共识)。远程攻击通常被认为是对权益证明的重大打击。

幸运的是,LRA可以通过以下方法减轻。首先,要使验证器解除绑定(从而收回其抵押品存币,并且不再赚取费用以参与共识),必须使该存币在称为“解除绑定期”的时间段内不可交易,该时间段可以是几周或几个月。其次,为了确保轻客户端的安全,它在第一次连接到网络时,必须针对可信源(最好是多个源)验证最近的区块哈希。这种情况有时被称为“弱主观性”。最后,为了保持安全,它必须与最新的验证器集同步,同步频率至少与解除绑定周期的长度相同。这确保了轻客户端在验证器的资金未绑定之前知道验证器集的更改,因此不再处于危险之中,这将允许它通过在绑定的高度创建新的区块(假设它控制足够多的早期私钥)来执行远程攻击来欺骗客户。

注意,以这种方式克服LRA需要对工作量证明的原始安全模型进行彻底检查。在工作量证明中,假设一个轻客户端可以在任何时候通过简单地处理每个区块头中的工作量证明,从受信任的创世区块同步到当前高度。然而,为了克服LRA,我们需要一个轻客户端以一定的规律性联机来跟踪验证器集中的更改,并且在它们第一次联机时,它们必须特别小心地将从网络中获得的内容与可信来源进行身份验证。当然,后一种要求类似于比特币,在比特币中,协议和软件也必须从可信来源获得。

上述防止LRA的方法非常适合于Tendermint驱动的区块链的验证程序和完整节点,因为这些节点将保持与网络的连接。该方法也适用于希望经常与网络同步的轻客户端。然而,对于不希望频繁访问互联网或区块链网络的轻客户端,还可以使用另一种解决方案来克服LRA。非验证器代币持有者可以将其代币作为抵押品过账,其拆封期非常长(例如,比验证器的未绑定期长得多),并为轻客户端提供第二种方法来证明当前和过去区块哈希的有效性。虽然这些代币不算区块链共识的安全性,但它们可以为轻客户端提供强有力的保障。如果以太坊支持历史区块哈希查询,任何人都可以将其代币绑定到一个专门设计的智能合约中,并提供支付认证服务,有效地为轻客户端LRA安全创造了市场。

10.5克服分叉和审查攻击

根据区块提交的定义,任何≥?的投票权联盟都可以通过离线或不广播投票来停止区块链。这样的联盟还可以通过拒绝包含这些交易的区块来审查特定交易,尽管这将导致很大一部分区块提议被拒绝,这将减慢区块链的区块提交速率,降低其效用和价值。恶意联盟也可能会以涓涓细流的方式广播投票,以使区块链提交几乎停止,或参与这些攻击的任何组合。最后,它可以通过双重签名或违反锁定规则,导致区块链分叉。

如果一个全局活跃的对手也参与进来,它可能会以这样一种方式划分网络,使其看起来可能是错误的验证器子集导致了速度的减慢。这不仅仅是Tendermint的一个限制,而是对其网络可能由活动对手控制的所有共识协议的限制。

对于这些类型的攻击,验证器的一个子集应通过外部手段进行协调,以签署一个选择分叉(及其任何证据)的重组建议,以及验证器的初始子集及其签名。签署这样一个重组建议的验证者放弃他们在所有其他分叉上的抵押品。客户应核实重组建议上的签名,核实任何证据,并作出判断或提示最终用户作出决定。例如,手机钱包应用程序可能会向用户提示安全警告,而冰箱可能会通过投票权接受由原始验证器的+1/2签名的任何重组提议。

当表决权不诚实时,任何非同步的拜占庭容错算法都不能达成共识,然而分叉假设表决权不诚实已经通过无正当理由的双重签名或锁改变。因此,签署重组方案是一个协调问题,任何非同步协议(即自动地,并且不假设底层网络的可靠性)都无法解决这个问题。目前,我们将重组提议协调的问题留给了通过互联网媒体上的社会共识进行人的协调。验证器必须注意在签署重组提议之前确保没有剩余的网络分区,以避免签署两个冲突的重组提议的情况。

假设外部协调媒介和协议是健壮的,那么分叉比审查攻击更不受关注。

除了要求>?拜占庭人投票权的分叉和审查制度外,>?拜占庭人投票权的联盟还可能提交任意、无效的状态。这是任何(BFT)共识系统的特点。与使用易于验证的证据创建分叉的双重签名不同,检测无效状态的提交需要非验证对等方验证整个区块,这意味着它们保留状态的本地副本并执行每个事务,为自己独立计算状态根。一旦被发现,处理这种失败的唯一方法就是通过社会共识。例如,在比特币出现故障的情况下,无论是由于软件缺陷导致的分叉(如2013年3月),还是由于矿工拜占庭式行为导致的无效状态(如2015年7月),都是由企业、开发人员、矿工组成的关系密切的社区,和其他组织建立了一个社会共识,即参与者需要哪些手动操作来修复网络。此外,由于Tendermint区块链的验证者可能被认为是可识别的,因此,如果需要的话,无效状态的承诺甚至可能受到法律或某些外部法律的惩罚。

—-

编译者/作者:灰狼

玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。

LOADING...
LOADING...