首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【区块链扩容】-“分片技术”

【区块链扩容】-“分片技术”

作者头像
帆说区块链
发布2022-04-27 09:29:38
6760
发布2022-04-27 09:29:38
举报
文章被收录于专栏:帆说区块链帆说区块链

之前说道扩容作者写了很多期关于跨链技术的科普文,我们在考虑多链间的数据共享同时也需考虑到链内分块,也就是单区块链分片分块数据共享和单块数据共识来达到区块链扩展性问题。

百度也很明显给了答案,分片向区块链走来,区块链技术运用分片技术已经成为热点。

什么是分片?为什么区块链需要分片?首先追溯到IP分片。

01—IP分片

  • 什么是IP分片

IP分片是网络上传输IP报文的一种技术手段。IP协议在传输数据包时,将数据报文分为若干分片进行传输,并在目标系统中进行重组。这一过程称为分片( fragmentation)。分片其实是一种传统数据库技术,它将大型数据库分成更小、更快、更容易管理的部分,这些部分叫做数据碎片。

  • 为什么要进行IP分片

通常要传输的IP报文的大小超过最大传输单位MTU(Maximum Transmission Unit)时就会产生IP分片情况。IP分片通常发生在网络环境中。比如说,在以太网(Ethernet)环境中可传输最大IP报文大小(MTU)为1500字节。而传输的报文大小要比1500字节大,这个时候就需要利用到分片技术,经分片后才能传输此报文。另外,使用UDP很容易导致IP分片,而很难强迫TCP发送一个需要进行分片的报文。

  • IP分片原理及分析

分片和重新组装的过程对传输层是透明的,其原因是当IP数据报进行分片之后,只有当它到达下一站时,才可进行重新组装,且它是由目的端的IP层来完成的。分片之后的数据报根据需要也可以再次进行分片。

IP分片和完整IP报文差不多拥有相同的IP头,ID域对于每个分片都是一致的,这样才能在重新组装的时候识别出来自同一个IP报文的分片。在IP头里面,16位识别号唯一记录了一个IP包的ID,具有同一个ID的IP分片将会重新组装;而13位片偏移则记录了某IP片相对整个包的位置;而这两个表中间的3位标志则标志着该分片后面是否还有新的分片。这三个标志就组成了IP分片的所有信息,接受方就可以利用这些信息对IP数据进行重新组织。

以上IP分片是由于IP数据字节超过MTU,那么区块链分片同样的,因为超过区块链数据最大,需要扩容。

在公链中,它是通过使用多个网络设备来获得平行处理转账的功能,从而分散那些转账验证的工作量。这样会自动地把网络分成很多更小的部分,或者说进行“分片”处理,从而每一个小网络只需要运行一个更小范围的共识协议。网络上的交易将被分成不同的碎片,其由网络上的不同节点组成。

因此,每个节点只需处理一小部分传入的交易,并且通过与网络上的其他节点并行处理就能完成大量的验证工作。将网络分割为碎片会使得更多的交易同时被处理和验证。

所以,分片技术使用的是平行处理的方式,有越多的节点加入,网络中批准的速度也会加快。简单来说,分片的就是将一个大任务拆分为多个可以并行处理的小任务,从而提升性能。

图中,我们把以太坊的网络分为两部分,左边一部分L1为现有的以太坊主链,右边一部分L2为各个分片,他们各自是一个独立的账户空间。每个分片有专门的节点来维护,就相当于一个个独立的区块链,每个分片将自己的记录汇总发给主链。主链收集各个分片的摘要,然后生成主链区块(N+1)。但是主链收集的是摘要而不是具体的交易细节。

分片方案带来的主要好处是,网络节点进行的冗余计算量大大减少,每个节点只需对自己分片内的交易进行验证,不需要验证分片外的交易。如此可节约大量的时间与网络资源,进而完成更多的交易的处理。

02—区块链与分片技术

目前主流的分片技术分为网络分片、交易分片和状态分片等三个层级,其技术难度也随之依次递增。主要的核心在于分片内节点需要达到一致,并且防止被恶意攻击者控制,而分片之间需要信息传递机制,保证交易及智能合约的状态在不同分片间达到一致。

1.网络分片

利用随机性,网络可以用VRF方法随机抽取节点形成分片,用以防止恶意节点占据某个分片。分片内节点之间的共识可以通过pBFT等共识机制来实现。

2.交易分片

1)账本分片:在一个基于UTXO的系统内,系统可以根据发送者的地址分配一个分片。这确保了两笔双花交易将在相同的分片中得到验证,因此系统可以很容易地检测到双花交易,而不需要进行任何跨片的通信。

2)跨账本分片:在一个非UTXO的系统里,为了防止双花问题,在验证过程中,分片间将不得不进行相互通信。事实上,由于双花交易可能会在任何分片中出现,因此特定分片所接收到的交易将不得不与其它的所有分片进行通信。这种相互之间的高昂通信成本可能会破坏交易分片的最初目的。

3.状态分片

这一技术的关键是将整个存储区分开,让不同的碎片存储不同的部分;每个节点只负责托管自己的分片数据,而不是存储完整的区块链状态。状态分片一经提出,就伴随着挑战。

在一个状态分片的区块链中,一个特定的分片只会保留一部分状态。假设其中一个账户创建了一笔交易,它将支付另一个账户一笔钱。这笔交易将由第一个分片进行处理,一旦该笔交易被验证,关于第一个账户的新余额的信息就必须与它所在的分片进行共享。如果两个帐户由不同的分片进行处理,那么这可能需要进行频繁的跨片通信和状态交换。确保跨片通信不会超过状态分片的性能收益仍然是一个值得公开的研究问题。

状态分片的第二个挑战是数据的可用性。比如由于某种原因,一些特定的分片遭到了攻击而导致其脱机。由于分片并没有复制系统的全部状态,所以网络不能再验证那些依赖于脱机分片的交易。因此,在这样的情况下区块链基本上是无法使用的。

解决此问题的方法是维护存档或进行节点备份,这样就能帮助系统进行故障修复以及恢复那些不可用的数据。但是,这样就使得节点将不得不存储系统的整个状态,因此这还可能会引发一些中心化的风险。

任何分片机制需要确保分片在抵御攻击和失败时是具有弹性的;网络必须接受新的节点并以随机的方式将这些分配给不同的分片。然而,在状态分片的情况下,重新分配节点是非常棘手的。在一次重新调整网络的过程中,在同步完成前可能会出现导致使整个系统失效的问题。

为了防止系统的中断,我们必须对网络进行逐步调整,以确保每个分片在所有节点被清空前仍有足够多的旧节点。类似地,一旦一个新节点加入了一个分片中,系统就必须确保该节点有足够的时间与分片状态进行同步。

————————————————

参考:https://blog.csdn.net/macrossdzh/article/details/5721306

https://blog.csdn.net/shangsongwww/article/details/88638959

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-03-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 帆说区块链 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
区块链
云链聚未来,协同无边界。腾讯云区块链作为中国领先的区块链服务平台和技术提供商,致力于构建技术、数据、价值、产业互联互通的区块链基础设施,引领区块链底层技术及行业应用创新,助力传统产业转型升级,推动实体经济与数字经济深度融合。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档