NC-MAX:让中本聪共识再次伟大(上)

Nervos Network 采用的共识机制提案 NC-MAX 于19日由 Nervos 研究员张韧正式提交,本文是《NC-MAX:让中本聪共识再次伟大》的上篇,将带大家抢先了解一下什么是 NC-MAX ?NC-MAX 主要在中本聪共识的基础上做了哪些改进,而这些改进又解决了当前中本聪共识中存在的哪些问题。

一句话读懂 NC-MAX

NC-MAX 是 Nervos Network 提出的共识机制,是中本聪共识的升级版。NC-MAX 通过消除区块传播延迟的瓶颈,缩短区块间隔时间,解决了比特币网络中交易处理吞吐量较低,交易确认延迟较长的问题;通过动态难度调节机制,将所有有效区块纳入难度调整中,让自私挖矿不再有利可图。

关于中本聪共识

在了解 NC-MAX 之前,先让我们来分析一下中本聪共识的优点和缺点:

中本聪共识的优点:

(一)中本聪共识的安全性是经过了近十年实践考验并得到充分理解的。而近些年众多新提出的替代协议会引入很多尚不确定的新的攻击形式,其中有些替代协议还是建立在实践中难以实现的安全假设之上的。

(二)中本聪共识最小化了共识协议的通信依赖。在理想情况下,在比特币中传播1MB 的区块只需要广播大约 13KB 的压缩块,所有诚实节点很快地接收有效块,而很多替代协议通常需要额外的通信开销来证明某些节点见证了区块,比如项目 Algorand 就要求每个区块都要附带300KB 的块证书。

(三)中本聪共识可以确保在区块生成时就能确定全局交易顺序,这是和智能合约的编程模型相兼容的。而很多其他拓扑结构的替代协议要么放弃全局交易,要么需要经过很长的时间才能确认,这极大地限制了其效率上的提升或者功能上的丰富。

中本聪共识的缺点:

(一)中本聪共识系统的可扩展性较差,无法实现较高的 TPS 吞吐量。限制系统吞吐量的主要两个参数是:最大区块容量和预期的区块间隔时间。增加最大区块链容量会导致更高的区块传播延迟,而减小区块间隔时间会导致更高频地出块,这两种方式都提高了在其他区块传播期间生成新块的比例,间接地会提升竞争区块的比例,但是由于竞争区块中最多只有一个块有助于最终交易的确认,因此会有大量带宽被浪费在传播孤块上,从而限制了整个系统的有效吞吐量。另外,孤块率的提升也会降低双花攻击的难度。

(二)中本聪共识的安全性还会遭受自私挖矿攻击的破坏。因为在中本聪共识的难度调节机制中,忽略了孤块的存在,攻击者可以通过故意孤立其他矿工开采的区块,致使孤块率上升,挖矿难度降低,从而获得高于平均的区块奖励。

NC-MAX的优化

NC-MAX 主要从以下三个方面对中本聪共识进行了优化:

消除区块传播的瓶颈

当区块间隔时间缩短时,区块传播延迟的瓶颈就是传播新的交易,新的交易是指在生成最新块时,尚未完成广播到全网的交易。没有收到这些新的交易的节点必须在生成新块并将新块转发给其他节点之前请求它们。由此产生的延迟不仅限制了整个区块链的性能,还可能会在自私挖矿攻击中被利用,攻击者故意在自己的块中嵌入新的交易,延迟其他节点生成下一个区块的时间,因为其他节点在生成新块之前需要完成对新交易的同步,这样攻击者们相比于其他节点就有机会更快地找到下一个区块从而获取更多奖励。

在 NC-MAX 中,将交易的确认分解为两个单独的步骤,以此来消除区块传播的瓶颈,两个步骤分别是 propose(提议)和 commit(提交)。如果一个交易中名为“txpid”的 truncated hash 被一个区块或者一个叔块包含了,那么这个交易就会进入到 propose pool。新 propose 的交易既不影响块的有效性也不影响块的广播,节点可以在接收到这些交易之前就开始广播新的区块。交易最终被 commit 是当它出现在 commit pool 的时候,这通常是在该交易被 propose 的几个区块之后。

通过两步确认的规则可以消除区块传播的瓶颈,因为在新块中 commit 的交易,在交易 propose 的时候就已经被所有节点接收和验证。这一规则还可以通过限制攻击时间窗口,有效地遏制自私挖矿的攻击行为。

通过缩短延迟提高吞吐量

NC-MAX 规定将所有孤块都归入叔块。这使得我们可以估计当前区块传播的延迟并动态地调整预期的区块间隔,从而在区块传播延迟改善时增加吞吐量。因此,我们的难度调整目标是一个固定的孤块率,保障在利用较短的延迟提升 TPS 的同时,不会影响系统的安全性。NC-MAX 对区块间隔的上限和下限都进行了硬编码,以防止 DoS 攻击并且避免节点过载。另外,块奖励与一段固定时间内的预期区块间隔成比例地调整,使得预期时间平均奖励独立于区块间隔。

避免自私挖矿攻击

NC-MAX 在估算网络算力进行难度调整时,会包含所有块(包括叔块,注:因为孤块也归入了叔块,所以孤块也会被包含),使得新的难度与孤块率无关。

我们还可以证明自私挖矿攻击在 NC-MAX 协议中将无利可图。这个证明是意义重大的,因为在以太坊的一些非正式论证中并不能排除攻击者在适应了修改的机制后,仍然能够获得不公平的区块奖励的可能性。比如,攻击者可能在第一个周期内暂时关闭一些采矿装备,导致修改后的难度调整算法低估网络的计算能力,并在第二个时期开始自私挖矿以获得更高的总体时间平均奖励。

而我们可以证明,在 NC-MAX 中,无论自私挖矿攻击涉及多少个周期,无论攻击者如何将其挖矿能力划分为诚实的挖矿、自私的挖矿或者闲置,自私挖矿都无利可图。(详细证明将在之后公布)

《NC:让中本聪共识再次伟大》(下篇)将会详细阐述两步交易确认机制和难度动态调节机制,敬请期待!

其他

  • NC-MAX 具体细节可以参见RFC-0020:

NC-MAX 共识协议提案活动已经发布,欢迎大家点击上方的活动链接,了解关于本次活动的更多内容,真·CKB 等你来赢取!

3 Likes

你这么早啊,兄弟,上次奖励也是你的

1 Like

请问证明有文章了么

张韧老师出文章了,我第一时间发你 :stuck_out_tongue_winking_eye:

谢谢:grinning: