首页 区块链 链视界-Nightshade:能够突破限制的Near协议分片设计

链视界-Nightshade:能够突破限制的Near协议分片设计

分片是区块链扩容的一个重要方向。

传统的区块链如以太坊每秒仅能处理20个左右的交易。主要原因是以太坊中每个交易都要在每个节点上执行一遍, 单台机器的处理能力限制了以太坊的最大TPS。

分片的思路是把所有节点进行分组,每个节点不再参与全部交易的验证,而是仅验证一部分的交易,因此可以突破单台机器处理能力的限制。

今天这篇文章将会为大家介绍Near protocol提出的分片方案—夜影协议(Nightshade) 。

分片的基本设计

区块链依靠在所有节点复制所有交易来保证数据的正确性,每个节点如果只验证一部分,那就明显会降低安全性。

系统共有10个分片(shard chain), 每个分片链由1/10的节点验证,理论上TPS可以提升十倍,但安全性也会随之下降。

假设原始的区块链中有51%以上的恶意节点合谋了,才可以破坏整条链的状态,那么分片后只要有5.1% (51/100) 的恶意节点合谋就足够破坏某个分片上的状态。

大部分分片方案的应对思路是随机分配验证者,只要让恶意节点不在同一条分片链上,他们就无法合谋。

大多数方案选择用一条独立的链来实现管理分片,处理POS(proof of stake)共识,生成随机数等等。

就比如以太坊2.0的Beacon chain、PolkaDot的Relay chain、Cosmos的Cosmos Hub。

而Nightshade也使用了一条这样的Beacon chain (信标链)。

一般来说区块链的节点会负责以下任务:

1.处理交易 。

2.Relay 合法的交易和区块给其他节点 。

3.保存整条链的状态和历史数据。

以上三点都会影响整个网络的处理能力。

从长远来看,状态存储的压力比较大,即使TPS一直保持在20左右,链的状态也会一直增长,但短期来看,区块链处理交易的能力才是更加重要的。

截止发稿,以太坊全状态大约为100G,大多数节点仍可以轻松处理,但是以太坊的TPS仅有20左右,很难满足实际需求。

Nightshade的分片也会分割以上提到的三点。分片中的节点仅验证和传播与分片相关的交易,并且只存储和分片相关的状态。

在Nightshade的方案中,分片数量和计算、存储、网络等资源为线性关系。

Nightshade对Beacon chain和分片链进行了简化,在Nightshade中仅维护一条区块链,所有分片上的交易都会在这一条链上被确认。

一个块中的交易列表按照分片数量被分为多个chunks, 每个chunk对应一个分片,分片的验证者只需要下载和验证分片的chunk而不需要下载整个块,系统中没有节点会验证整个块的交易和状态。

现实中由于网络因素可能会导致chunks丢失,所以我们允许每个块中的分片可以对应一个或零个chunk。

出块

Nightshade中有两个角色共同维护协议:出块者和验证者。

在系统中任何时间点都有w个出块者和wv个验证者,系统采用POS (proof of stake),出块者和验证者都会质押一定的Token作为不遵守协议时的惩罚。

系统包含n个分片,每个出块者和验证者都仅下载和验证一部分的状态。

在本文所讨论的模型中w=100, wv=10000, n=1000。

系统的参与者可以通过质押大量的Token成为出块者,一个出块者会被分配到Sw个分片上(如果Sw=40, 那么每个分片就会有Sw*w/n=4个出块者)。

Nightshade中按照Epoch的概念选择验证者和出块者的分片,出块者需要在Epoch开始前下载分片的状态,并在整个Epoch中处理分片上的交易。

对于每个分片,都有一个出块者来负责生成chunk(和该分片相关的交易列表),在最终的块里只会包含交易列表的merkle root而不会包含完整的交易列表。

同一个分片上的出块者会轮流出块,如上面描述的,每个分片上有4个出块者,则每个出块者隔4 个块就要产生一次chunk。

跨分片交易

上文描述的分片方案中不同分片之间状态是完全隔离的,无法进行跨分片的交易。

举一个简单的例子,Alice想要转账给Bob,如果他们在同一个分片中,则交易可以正常处理。

但如果Alice和Bob在不同的分片,则每个分片的验证者都缺失了一部分状态,无法完成这笔交易的验证。

有两类方法可以支持跨分片交易:

一、同步。在同一个块进行与跨分片交易相关的多个分片的状态更新,验证者们通过与其他分片上的节点合作来处理交易。

二、异步。异步的完成跨分片交易的状态更新,比如某个分片先更新一部分状态,另一个分片再更新其余的状态。

这种方式非常简单并且易于协作,Cosmos、 Ethereum serenity (以太坊 2.0)、Near、Kadena等都采用的异步方案。

区块链或分片的互操作性在分片以外的场景也非常重要。分片的场景下每个分片是同构的,且可以借助Beacon chain协调,所以跨分片的设计相比跨链会更容易一些。

关于作者: 链视界

热门文章

发表评论

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