This article is translated from @NervosNetwork’s Twitter post, original link:
https://twitter.com/NervosNetwork/status/1676291206467166235
NC-Max is an innovative consensus protocol that powers the Nervos L1 blockchain (aka CKB, Common Knowledge Base). In this post, we will explore how NC-Max improves upon the classic Nakamoto Consensus (NC) and addresses key challenges. 🚀

NC is widely praised for its simplicity and low communication overhead, but it has two major flaws: its transaction throughput is limited and it is vulnerable to selfish mining attacks.
NC-Max solves these problems while retaining the advantages of NC. 🛡️

When the block interval decreases, the bottleneck of block propagation delay is the propagation of new transactions. New transactions refer to transactions included in the latest block that have not yet been propagated to the network.
Nodes that have not received these transactions must request these new transactions before broadcasting the received block to neighboring nodes. The resulting delay not only limits the performance of the blockchain, but can also be exploited in actual selfish mining attacks.

NC-Max breaks down transaction confirmation into two steps: transaction submission (Propose) and transaction confirmation (Commit). 📊

If a transaction's short hash appears in the "transaction submission area" of a block or one of its uncle blocks, the transaction is submitted (newly submitted transactions will neither affect the validity of the block nor the broadcast of the block).
After the transaction is submitted, it takes several blocks of time to complete. If the transaction appears in the "transaction confirmation area" of the block, the transaction is packaged. ⏲️

Such a two-step transaction confirmation mechanism eliminates the block propagation bottleneck and also effectively reduces actual selfish mining attacks (by limiting the attack time window).
This also means that nodes always have transaction data confirmed in a block and can immediately propagate the block to neighboring nodes.

The NC-Max protocol calls all blocks in the blockchain that reference orphan blocks uncle blocks.
This allows us to get a good estimate of the latency of the current block propagation and dynamically adjust the desired block interval, thereby increasing throughput when latency improves. ⚡

NC-Max sets a fixed orphan rate as a difficulty adjustment target, allowing it to take advantage of shorter latencies without sacrificing security.
The protocol hard-codes upper and lower limits on the block interval to prevent DoS attacks and avoid node overload. 🔒
In each difficulty adjustment cycle (epoch), the block reward is adjusted proportionally based on the expected block interval, so the expected average time reward is not related to the block interval (the total reward per epoch remains unchanged).
This ensures that miners receive fair rewards regardless of network conditions 💰
The NC-Max protocol includes all blocks (including uncles) in the difficulty adjustment when estimating the network computing power, thereby mitigating selfish mining attacks.
Therefore, the new mining difficulty and orphan block rate are unrelated. 📈

The NC-Max protocol has proven that selfish mining is no longer profitable, no matter how the attacker allocates computing power among the three strategies of honest mining, selfish mining, and shutting down mining machines, and no matter how many difficulty adjustment cycles his strategy covers. 🚫
Additionally, NC-Max quantifies an upper limit on the damage caused by an “orphan block exclusion attack,” where an attacker attempts to invalidate the last few honest blocks in an epoch to prevent them from being included in the difficulty adjustment. ⛓️
NC-Max improves the safety, scalability and efficiency of NC.
By solving block propagation delays and mitigating selfish mining attacks, NC-Max provides a solid foundation for decentralized applications and services. 🌐

The NC-Max protocol is built on proven security principles, keeps communication overhead low, and ensures compatibility with a variety of smart contract programming models.
It retains the advantages of NC while also addressing its limitations. 🔐
By dynamically adjusting the block interval according to network conditions, NC-Max maintains consistent throughput, providing users and developers with a stable and reliable network.
This helps create a more seamless decentralized ecosystem. 🌱
NC-Max is a leap forward in blockchain consensus protocols, providing Nervos CKB with better security, sustainability, and scalability.

