本文翻译自 @NervosNetwork 的推特推文,原文链接:
https://twitter.com/NervosNetwork/status/1676291206467166235
NC-Max 是为 Nervos L1 区块链(即 CKB,共同知识库)提供支持的创新型共识协议。在这篇推文中,我们将探讨 NC-Max 如何基于经典的中本聪共识(Nakamoto Consensus,以下简称 NC)做出改进,并解决其中的关键挑战。🚀

NC 因其简单性和低通信开销的特点而广受好评,然而它有两大缺陷:其交易吞吐量受限,且容易遭受自私挖矿攻击。
NC-Max 解决了这些问题,同时保留了 NC 的优势。🛡️

当出块间隔降低的时候,区块传播延时的瓶颈是新交易的传播。新交易是指在最新的区块中包含的、尚未被传播到网络中的交易。
没有收到过这些交易的节点必须要在向相邻节点广播收到的这个区块之前,请求这些新交易。由此产生的延迟不仅限制了区块链的性能,而且还会在实际自私挖矿攻击中被利用。

NC-Max 将交易确认分解为两个步骤:交易提交(Propose),交易确认(Commit)。📊

如果一个交易的短哈希出现在一个区块或其中一个叔块的 “交易提交区”,则该交易被提交(新提交的交易既不会影响区块有效性,也不会影响区块的广播)。
在交易被提交之后,需要经过数个区块的时间窗口,如果这个交易出现在区块的 “交易确认区” 中,则该交易被打包。⏲️

这样的两步交易确认机制消除了区块传播瓶颈,也有效地减少了实际自私挖矿攻击(通过限制攻击时间窗口)。
这也意味着节点始终拥有在区块中确认的交易数据,并且可以立即将区块传播给相邻节点。

NC-Max 协议将区块链中所有引用孤块的区块称为叔块。
这让我们能够很好地估算当前区块传播的延时,并动态地调节期望的出块间隔,从而在延时得到改善时,提升吞吐量。⚡

NC-Max 设定固定的孤块率作为难度调节目标,从而在不牺牲安全性的情况下,能够利用更短的延迟。
协议中硬编码了出块间隔的上下限来防止 DoS 攻击,和避免节点超载。🔒
在每个难度调节周期(epoch)中,区块奖励会根据预期出块间隔,成比例地进行调节,因此预期的平均时间奖励和出块间隔并不相关(每个 epoch 的总奖励不变)。
这确保了无论网络条件如何,矿工都能获得公平的奖励💰
NC-Max 协议在估计网络算力时,会将所有区块(包括叔块)纳入到难度调节中,从而减轻自私挖矿攻击。
因此,新的挖矿难度和孤块率是不相关的。📈

NC-Max 协议已被证明自私挖矿不再有利可图,不论攻击者在诚实挖矿、自私挖矿、关闭矿机这三种策略中如何分配算力,不论他的策略覆盖多少个难度调节周期。🚫
此外,NC-Max 还量化了 “孤块排除攻击” 造成的损害上限,即攻击者试图使一个 epoch 中的最后几个诚实区块无效,以防止它们被纳入难度调整中。⛓️
NC-Max 提高了 NC 的安全性、可扩展性和效率。
通过解决区块传播延时和减轻自私挖矿攻击,NC-Max 为去中心化应用程序和服务提供了坚实的基础。🌐

NC-Max 协议建立在经过验证的安全原则之上,保持较低的通信开销,并确保与各种智能合约编程模型的兼容性。
它保留了 NC 的优点,同时也解决了其局限性。🔐
通过依照网络状况动态调整区块的间隔,NC-Max 保持了一致的吞吐量,为用户和开发人员提供了稳定、可靠的网络。
这有助于打造更加无缝的去中心化生态系统。🌱
NC-Max 是区块链共识协议的一次飞跃,为 Nervos CKB 提供了更好的安全性、可持续性和可扩展性。

