我的账户
链视界

关注数字经济、区块链

亲爱的游客,欢迎!

已有账号,请

如尚未注册?

链视界 门户 资讯
来自: DeFi之光

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协调,所以跨分片的设计相比跨链会更容易一些。


12下一页

(扫二维码 入群交流)

相关阅读

区块链百科
微信扫码
行业动态资讯早知道

Copyright © 2022 链视界 粤ICP备2021100744号   Designed by 链视界