通过基于链锁定(ChainLocks)的长效主节点仲裁链(LLMQ)防范51%攻击

通过基于链锁定(ChainLocks)的长效主节点仲裁链(LLMQ)防范51%攻击

Alexander Block,2018年11月29日发布于达世币文档
安德猴,2019年5月28日翻译于安德猴的博客
原文链接: https://blog.dash.org/mitigating-51-attacks-with-llmq-based-chainlocks-7266aa648ec9

(译者注: 之前看大家对AXE1.4.0版本的版本更新内容不是很了解,于是就萌生了翻译这篇文章的想法。达世的这篇文章简明地解释了ChainLocks和LLMQ的运作机制,它们的激活会给达世带来前所未有的新特性。AXE在未来的几个版本也将逐步激活ChainLocks和LLMQ特性,因此了解一下还是很有必要的。
此文章原文发布于2018年11月28日,所以当时的很多情况已经不适用于当下,包括但不限于ETC受到双花攻击、BCH社区的算力大战等)

近期,某些加密货币遭受到了51%攻击,这一现象向人们说明,51%算力攻击是真实存在的,并且在一定程度上能引起市场的恐慌与不确定性。

什么是51%算力攻击?

当一个矿工或者团体拥有了比全网其他矿工加起来还要多的算力时,就可以发动51%算力攻击。在这种情况下,这个矿工可以否决其它所有矿工挖出的区块,只需要忽视其他矿工挖出的新区快,并在自己的区块之上挖掘新块即可。

恶意矿工可以光明正大地挖矿,但这样就会因为孤块(orphaned blocks)率的异常升高而被发现。恶意矿工也可以悄悄地发起攻击,只需要在秘密挖矿一段时间(几个小时或几天)后,将自己挖出的区块链一次性地发布(并通过自己的压倒算力优势强迫网络承认),而不是一块一块地单独发布。如果恶意矿工选择后者的话,网络一开始会正常运行,随后突然进行一次深层的链重组。

就这样,恶意矿工可以通过多种方法来攻击区块网络。他们可以在公开的链(public chain)上进行一笔交易转账,同时在自己秘密的链(secret chain)上将同一笔币转账给自己,也就是双花攻击(由于区块链的共识规则,这种攻击是可行的)。他们也可以在秘密的链上只挖出空白区块,来回滚这段时间里公开链上产生的所有交易。这些交易有可能会在新区块中得到确认(由诚实的矿工挖出),但也并非一定如此。并且,在攻击发生后,大家都会担心,即使在重新得到确认后,这些资金也不安全,因为恶意矿工完全有可能继续进行下一次攻击。

上述只是一些例子,来举例说明拥有超过51%算力的矿工能对网络做些什么。恶意矿工还有很多其他的攻击方法,能对网络造成极大的破坏。

这种攻击发生的可能性有多大?

在PoW共识机制的基本假设成立的前提下,通常认为51%算力攻击不足为惧。其中一个假设是:对矿工来说,诚实比恶意更加有利可图;第二个假设是:提供多数算力的理性参与者遵循第一个假设。在这些假设下,即使网络中的部分算力是恶意的,大多数的理性矿工也可以通过自身的算力优势,将恶意矿工踢出去。

然而有的时候,这些假设可能完全不成立。比如说,如果一群矿工秘密研制出了某个币种的ASIC矿机,又或是他们的矿机有着压倒性的算力优势,便可以让他们从恶意行为中获利,或者至少将损失降低到可以接受的水平。

同时,那些没有自身算法的足够算力的币种(例如:BCH),也时刻处于被大算力恶意矿工攻击的危险中。(BCH采用BTC的SHA256D算法,但它的总算力只有BTC的10%不到)。

这一定程度上导致了人们对PoW机制的担忧和不信任,这一点从最近BCH社区的“算力大战”中便可以看出来。多个团体联合起来,从BCH网络中分叉出来,并威胁要对原始网络进行51%攻击。

虽然目前这些扬言者还未实行攻击,但受到BCH的拖累,整个市场已经受到重挫,并且很多交易所也暂停了对应币种的交易。对于任何一个想要长期发展并获得大众认可的币种来说,这种风险和危机都是不可接受的。

达世如何解决这种问题?

目前而言,达世和其他PoW币种一样,有着遭受51%攻击的风险,并且很多社区成员也询问过我们该如何解决这种问题。曾经有一个叫做“抵押挖矿”(Collateralized Mining)的提案,它能在一定程度上解决51%攻击问题,但它要求挖矿经济的大转变,而这本身又会引起其他的问题。

而现在,长效主节点仲裁链(Long Living Masternode Quorums——LLMQs)允许我们用一种全新的保护机制来对抗51%攻击。这种保护机制叫做链锁定(ChainLocks),在代号为DIP8的提案中提出。在研究了几个月后,我们决定发布这个DIP,作为对社区问题的回应。LLMQs的出现,也让抵押挖矿相形见绌。

基于长效主节点仲裁链(LLMQs)的链锁定(ChainLocks)技术

链锁定(ChainLocks)的概念,就是在全网络范围内实行“最先看见”(first-seen)的原则。对于每一个区块,都会有一条由数百个节点组成的仲裁链被选出,并且每个节点都会对它们最先看到的添加到当前高度之上的新区块进行签名。如果有足够多的参与节点(例如:≥ 60%)都看到了相同的新区块,仲裁链就可以生成一条P2P信息(CLSIG),并将这条信息广播到全网。这其中还有些细节,尤其是当多个矿工在近似时间里发现了同一个高度的区块。这些细节可以在DIP8的文档里看到。

只有当足够多的仲裁节点都达成共识,这条CLSIG信息才能被生成。这是因为LLMQs采用的是BLS M-of-N阈值签名技术,并且要求CLSIG信息包含有效的阈值签名。这种阈值签名在内部和普通的BLS签名相似,并且可以由所有节点验证,而无需知道谁签署了它。此验证只需要LLMQ的仲裁公钥,而这个公钥可以从链上数据中检索到。由于LLMQ签名请求/会话的工作方式,至多只能有一条有效CLSIG信息存在,所以不存在冲突与不确定性的问题。

若存在有效的CLSIG消息,则表明LLMQ的大多数成员(例如60%)已将指定的块视作第一个区块。由于LLMQ是由达世的主节点集(当前大约有4900个节点)随机组成的,因此首先在整个网络中看到这个区块的节点的分布在统计上应与LLMQ内部相同。这意味着,如果60%的LLMQ成员首先看到了这个区块,那么整个网络的大约60%也应该首先看到它。

如果节点收到了有效的CLSIG信息,它就会拒绝与CLSIG消息中指定的块不匹配的所有区块(及其后续区块),这使得对区块链的决策变得快速,简单且明确。同时也使得在这个区块高度之下的链重组变得不再可能。

对网络的影响

ChainLocks对整个网络及其经济性有着非常重要的影响。对于普通用户和商家来说,最显著的一点就是,交易在受链锁定保护的区块内进行第一次链上确认后,便可认为交易已经完全确认。由于被签名/锁定的区块无法再被重组,因此交易无法再被抹去或者重写,这意味我们不再需要等待6次或者更多个区块的确认,1个确认即可保证交易的有效性。

链锁定对挖矿也有着重要的影响。它使得恶意矿工难以再通过51%攻击进行链重组来获利。曾经秘密挖矿再运用算力优势进行双花攻击的路子不再能行得通,因为这种攻击方式需要矿工秘密地挖出较长的链。根据目前的区块链共识原则,(由于矿工的算力优势,)这条链将会覆盖公开的链,并对原有的公开链进行重组。然而,在链锁定(ChainLocks)激活后,矿工们需要立即发布他们挖出的区块,即使他们理论上有足够的算力来碾压其他所有矿工。发布失败将会给恶意矿工带来巨大的风险和损失,因为如果在恶意矿工发布秘密链之前,另外一个诚实的矿工发布了接收CLSIG的有效区块,任何的秘密链(即使后面跟着数千个更长的区块)都将会被节点拒绝。

那“最长链原则”呢?

最长链原则是基于PoW(工作量证明)机制的共识中非常重要的一部分。在这个原则中,每个节点都应该将具有最多积累工作量的链视为本地活动链(locally active chain)(但只有在所有其他共识规则也有效的情况下)。之所以要设立这条原则,是因为不这样做的话就无法在链的选择上达成共识。节点需要从有限的信息中寻找共识,而其中唯一可行的信息就是从头部链(chain of headers)中找到的信息。运用累积工作量(可以从头部计算)能确保每个节点都能随时断开并重新连接,并且仍然可以随时找到共识。

在链锁定(ChainLocks)下,此原则依然有效,但可以被有效的CLSIG消息否决。实际上,只有有关的LLMQ节点成员才能完全遵循最长链原则,因为他们是协作创建CLSIG消息的人。由于只有在足够的LLMQ节点成员同意时才能创建CLSIG信息,所以CLSIG信息的存在可用作证明其认可的区块是导致最长链的区块。

这意味着需要对CLSIG消息和著主节点网络有着相当的信任,但我们认为这是可以接受的权衡。新的机制假设大多数主节点网络都是诚实的,这与普通的PoW系统中的假设基本一致。

不同的是,在激活ChainLocks后,攻击者必须同时控制超过51%的矿工和51%的主节点,才有可能成功发动攻击。并且即使攻击成功,攻击者仍然无法对区块链进行深度重组,因为之前的CLSIG信息无法被无效化。攻击者可以实现的最糟糕的事情是选择不对新的区块进行签名,而这也会被所有的主节点注意到。同时,如果任何具有大多数诚实的主节点的LLMQ在攻击之间签署了一个区块,那么之前所有未经签名的区块也将被完全确认,这也使得无法对区块链进行重组。

那其他的共识原则呢?

没有任何其他的公式原则受到影响。所有节点依然必须完全验证一个区块,才能接受它。这个过程包括双花确认、签名确认以及PoW验证(哈希<难度目标)等。

一条有效的CLSIG信息无法强制接受其他无效的区块。

为什么其他的币种不能有链锁定技术呢?

使链锁定安全可信任的一个主要先决条件是防止女巫攻击(Sybil Attack)的半可信节点网络。那些没有这类节点网络的币种将无法以安全的方式实现ChainLocks之类的功能。例如,在比特币中,任何依赖于单个节点“投票”的活动都可以被简单地建立数千个恶意节点来干扰。唯一可能的解决方式是在节点当中建立明确的信任列表,而这又会是一个大规模的中心化解决方案。

在达世币中,每个主节点都需要1000个达世币来做抵押,这能有效保证主节点网络免受女巫攻击。1000个达世币的抵押使得女巫攻击在经济上是不切实际的,因为光是建立足够多的主节点就需要花费大量的财务资源,这将使得任何形式的攻击都充满了成本风险。在当前LLMQ设定的参数下,攻击者至少需要购买60%的主节点才能有成功攻击的可能性。

我相信这是达世的著节点网络中最被低估的属性之一。针对女巫攻击的有效防护是链锁定和使用任何其它形式仲裁决策的主要先决条件。

在未来,达世这种独特而强大的网络基础设施将使我们能在LLMQs之上安全地实现更多创新功能,使得达世更加安全,快速和用户友好。

(全文完)

译者的一些随话:

我这几天看达世的文档,越看越不禁感叹,抛开团队争议和利益分配的问题,达世真的都是天才般的设计。主节点在技术方面解决去中心化网络网络性能不足的问题,同时用1000个币的有效抵押完美避免了女巫攻击的可能性,在市场方面也能有效避免抛压;同时,Superblock使得DAO社区自治成为可能。而这次的ChainLocks和LLMQs,如果真的能有如宣传那般的效果,那有理由相信,达世会成为机制上最安全的PoW币之一。

发表评论

电子邮件地址不会被公开。 必填项已用*标注