当前位置:首页 » 以太坊知识 » 以太坊状态分片数据分片

以太坊状态分片数据分片

发布时间: 2021-07-13 15:25:17

『壹』 以太坊的“分片”是指什么

“分片”的大致思路是:将区块链网络中的每个区块变为一个子区块链,子区块链中可以容纳若干(目前为 100 个)打包了交易数据的 Collation(大概可以称为“校验块”,为了在分片的情景中将其与区块的概念区分开),这些 Collation 最终组成一个在主链上区块;因为这些 Collation 是整体作为区块存在的,所以其数据必定是全部由某个特定的矿工所打包生成,本质上和现有协议中的区块没有区别,所以不再需要增加额外的网络确认。这样,每个区块的交易容量就大概扩大了 100 倍;而且这种设计还有利于未来的继续扩展。整个扩展计划目前也被大致分为 4 个阶段;本文所介绍的仅仅是第一阶段的相关实现细节。转自简书。数字货币交易所币汇

『贰』 以太坊的“分片”是指什么

以太坊的“分片”是指(币汇数字货币交易平台)

『叁』 什么是数据分片

MTU(Maximum Transmission Unit)是指一个特定的网络所允许的物理帧的最大数据量,当路由器收到一个大于其要转发的网络的MTU的数据报时,路由器必须将这个数据报分成可通过该网络的数据报片,每一片仍采用数据报的格式,且保留原数据报的标识符,但只包含原数据报的部分数据,在需要时,数据报片可以再次分片。

在一个TCP/IP互联网上,一旦数据报分片后,每片都作为独立的数据报传送,一直等到到达目的网点的主机后,才对它们重组。目的网点的主机通过数据报首部的标识符来查证各片是否为同一个数据报的分片,且根据片偏移及标志来控制分片和重组。目的主机首次接到某一数据报的一个分片时,就启动一个计时器,如果在收到所有分片之前计时器超时,则接收机废弃已收到的分片,不对数据报处理。

http://blog.csdn.net/yliang/archive/2004/08/02/58982.aspx

『肆』 为什么有时需要对IP数据报进行分片如何分片

任何时候IP层接收到一份要发送的IP数据报时,它要判断向本地哪个接口发送数据(选路),并查询该接口获得其MTU。IP把MTU与数据报长度进行比较,如果需要则进行分片。分片可以发生在原始发送端主机上,也可以发生在中间路由器上。
把一份IP数据报分片以后,只有到达目的地才进行重新组装(这里的重新组装与其他网络协议不同,它们要求在下一站就进行进行重新组装,而不是在最终的目的地)。重新组装由目的端的IP层来完成,其目的是使分片和重新组装过程对运输层( T C P和UDP)是透明的,除了某些可能的越级操作外。已经分片过的数据报有可能会再次进行分片(可能不止一次)。IP首部中包含的数据为分片和重新组装提供了足够的信息。
回忆IP首部(图3 - 1),下面这些字段用于分片过程。对于发送端发送的每份IP数据报来说,其标识字段都包含一个唯一值。该值在数据报分片时被复制到每个片中(我们现在已经看到这个字段的用途)。标志字段用其中一个比特来表示“更多的片”。除了最后一片外,其他每个组成数据报的片都要把该比特置1。片偏移字段指的是该片偏移原始数据报开始处的位置。另外,当数据报被分片后,每个片的总长度值要改为该片的长度值。
最后,标志字段中有一个比特称作“不分片”位。如果将这一比特置1,IP将不对数据报进行分片。相反把数据报丢弃并发送一个I C M P差错报文(“需要进行分片但设置了不分片比特”,见图6 - 3)给起始端。在下一节我们将看到出现这个差错的例子。
当IP数据报被分片后,每一片都成为一个分组,具有自己的IP首部,并在选择路由时与其他分组独立。这样,当数据报的这些片到达目的端时有可能会失序,但是在IP首部中有足够的信息让接收端能正确组装这些数据报片。
尽管IP分片过程看起来是透明的,但有一点让人不想使用它:即使只丢失一片数据也要重传整个数据报。为什么会发生这种情况呢?因为IP层本身没有超时重传的机制——由更高层来负责超时和重传(T C P有超时和重传机制,但UDP没有。一些UDP应用程序本身也执行超时和重传)。当来自T C P报文段的某一片丢失后,T C P在超时后会重发整个T C P报文段,该报文段对应于一份IP数据报。没有办法只重传数据报中的一个数据报片。事实上,如果对数据报分片的是中间路由器,而不是起始端系统,那么起始端系统就无法知道数据报是如何被分片的。就这个原因,经常要避免分片。文献[Kent and Mogul 1987]对避免分片进行了论述。
使用UDP很容易导致IP分片(在后面我们将看到, T C P试图避免分片,但对于应用程序来说几乎不可能强迫T C P发送一个需要进行分片的长报文段)。我们可以用s o c k程序来增加数据报的长度,直到分片发生。在一个以太网上,数据帧的最大长度是1 5 0 0字节(见图2 - 1),其中1 4 7 2字节留给数据,假定IP首部为2 0字节, UDP首部为8字节。我们分别以数据长度为1471, 1472, 1473和1 4 7 4字节运行s o c k程序。最后两次应该发生分片:
bsdi % sock -u -i -nl -w1471 svr4 discard
bsdi % sock -u -i -nl -w1472 svr4 discard
bsdi % sock -u -i -nl -w1473 svr4 discard
bsdi % sock -u -i -nl -w1474 svr4 discard
相应的tcpmp输出如图11 - 7所示。

前两份UDP数据报(第1行和第2行)能装入以太网数据帧,没有被分片。但是对应于写1473字节的IP数据报长度为1 5 0 1,就必须进行分片(第3行和第4行)。同理,写1 4 7 4字节产生的数据报长度为1 5 0 2,它也需要进行分片(第5行和第6行)。
当IP数据报被分片后, tcpmp打印出其他的信息。首先,frag 26304(第3行和第4行)和frag 26313(第5行和第6行)指的是IP首部中标识字段的值。
分片信息中的下一个数字,即第3行中位于冒号和@号之间的1480,是除IP首部外的片长。两份数据报第一片的长度均为1480:UDP首部占8字节,用户数据占1 4 7 2字节(加上IP首部的2 0字节分组长度正好为1 5 0 0字节)。第1份数据报的第2片(第4行)只包含1字节数据—剩下的用户数据。第2份数据报的第2片(第6行)包含剩下的2字节用户数据。
在分片时,除最后一片外,其他每一片中的数据部分(除IP首部外的其余部分)必须是8字节的整数倍。在本例中, 1480是8的整数倍。
位于@符号后的数字是从数据报开始处计算的片偏移值。两份数据报第1片的偏移值均为0(第3行和第5行),第2片的偏移值为1480(第4行和第6行)。跟在偏移值后面的加号对应于IP首部中3 bit标志字段中的“更多片”比特。设置这一比特的目的是让接收端知道在什么时候完成所有的分片组装。
最后,注意第4行和第6行(不是第1片)省略了协议名( UDP)、源端口号和目的端口号。协议名是可以打印出来的,因为它在IP首部并被复制到各个片中。但是,端口号在UDP首部,只能在第1片中被发现。
发送的第3份数据报(用户数据为1473字节)分片情况如图11 - 8所示。需要重申的是,任何运输层首部只出现在第1片数据中。
另外需要解释几个术语: IP数据报是指IP层端到端的传输单元(在分片之前和重新组装之后),分组是指在IP层和链路层之间传送的数据单元。一个分组可以是一个完整的IP数据报,也可以是IP数据报的一个分片。

『伍』 啥是分片技术

写在文前:视频版本和文字版本略有不同,想要看我深情并茂演绎,请看视频版本 (喵懂区块链22期|分片(Sharding):以太坊太慢,“盘”他!),思维逻辑怪,请看文案加长版。

最近以太坊由于君士坦丁堡升级(Constantinople)而出现了压倒性的积极走势,而以太坊的升级之路则犹如升级打怪一般,落入了rabbithole,谁也不知道这洞有多深。既然是“路漫漫其修远兮”,则把脚下的每一步走好走准,则成了至关重要的点。攻破这一难点之后,以太坊的下一技术难点---Sharding分片,则又被摆到了台面上。本期《喵懂区块链》会带大家走进让以太坊快起来的法宝--- Sharding分片。

什么是sharding分片?

分片技术其实并不是什么新概念,起初是针对大型中心数据库提出的优化方案,具体来说就是将大型数据库中的数据划按照某种规则分成很多数据分片(shard),再将这些数据分片分别存放在不同的服务器中,以减小每个服务器的数据访问压力,从而提高整个数据库系统的性能。

我们举一个通俗的小例子:

比如我们平时经常使用的美团,滴滴打车等软件,就可以按照“城市”来进行分片,由于不同城市的数据不需要互通,就可以将不同城市的数据存放在不同数据库中,这样既可以把数据库服务器部署到离对应城市最近的节点上,还可以提高访问速度,何乐而不为呢?!

从上面的例子中,我大家应该对分片的概念有了初步了解,那么对应到区块链场景中来说,分片又是怎么样的呢?

以以太坊分片为例,在原有的单链系统中,公链整体的性能取决于单个节点的性能,进行分片之后,每个节点只需要承当全网部分工作,各个分片并行工作,按照Vitalik的话来说,each shard is like a separate galaxy每个分片都像是独立的小宇宙,这样效率自然噌噌噌提升!原本以太坊链全网TPS约为20,现在若增加到100个分片,那么全网TPS可以提升至2000,同理,全网容量也将提升至原来的100倍。

“每个节点只需要承担全网部分工作”,这就会引出几大问题,1.怎么确定这个节点是负责哪个分片的工作?2.哪些交易应该归类到哪些分片当中去?3.每个节点是否只需要储存自己所在分片的交易信息(账本)?

根据以上问题的实现与否,我们可以将分片依次分为三种类型:网络分片,交易分片,状态分片。

网络分片:如何将全网节点划分到不同分片当中去。

交易分片:如何将全网交易划分到不同分片当中去。

状态分片:如何让各个节点只维护各自分片内的账本,但又不影响整个系统的安全性。

主链和分片链的区别和联系?

分片的类型我们已经明白了,那么主链(Main chain)和分片链(shard chain)有什么不同呢?

向左转|向右转

以太坊分片的实现是一个漫长的过程,就连Vitalik自己也说将会分阶段来逐步实现,分片到底能不能从理论走向实践,我们还是小小期待一下吧。

『陆』 数据分片应遵守哪些基本原则数据分片有哪些基本类型和方法

链路层具有最大传输单元MTU这个特性,它限制了数据帧的最大长度,不同的网络类型都有一个上限值。以太网的MTU是1500,你可以用 netstat -i 命令查看这个值。如果IP层有数据包要传,而且数据包的长度超过了MTU,那么IP层就要对数据包进行分(fragmentation)操作,使每一片的长度都小于或等于MTU。我们假设要传输一个UDP数据包,以太网的MTU为1500字节,一般IP首部为20字节,UDP首部为8字节,数据的净荷(payload)部分预留是1500-20-8=1472字节。如果数据部分大于1472字节,就会出现分片现象。
分片(sharding)是数据库分区的一种,它将大型数据库分成更小、更快、更容易管理的部分,这些部分叫做数据碎片。碎片这个词意思就是整体的一小部分。
Jason Tee表示:“简言之,分片(sharding)数据库需要将数据库(database)分成多个没有共同点的小型数据库,且它们可以跨多台服务器传播。”
技术上来说,分片(sharding)是水平分区的同义词。在实际操作中,这个术语常用来表示让一个大型数据库更易于管理的所有数据库分区。
分片(sharding)的核心理念基于一个想法:数据库大小以及数据库上每单元时间内的交易数呈线型增长,查询数据库的响应时间(response time)以指数方式增长。
另外,在一个地方创建和维护一个大型数据库的成本会成指数增长,因为数据库将需要高端的计算机。相反地,数据碎片可以分布到大量便宜得多的商用服务器上。就硬件和软件要求而言,数据碎片相对来说没什么限制。
在某些情况中,数据库分片(sharding)可以很简单地完成。按地理位置拆分用户数据库就是一个常见的例子。位于东海岸的用户被分到一台服务器上,在西海岸的用户被分在另一台服务器上。假设没有用户有多个地理位置,这种分区很易于维护和创建规则。
但是数据分片(sharding)在某些情况下会是更为复杂的过程。例如,一个数据库持有很少结构化数据,分片它就可能非常复杂,并且结果碎片可能会很难维护。
分片过程
对于发送端发送的每份IP数据报来说,其标识字段都包含一个唯一值。该值在数据报分片时被复制到每个片中。标志字段用其中一个比特来表示“更多的片”。除了最后一片外,其他每个组成数据报的片都要把该比特置1。片偏移字段指的是该片偏移原始数据报开始处的位置。另外,当数据报被分片后,每个片的总长度值要改为该片的长度值。
最后,标志字段中有一个比特称作“不分片”位。如果将这一比特置1,IP将不对数据报进行分片。相反把数据报丢弃并发送一个ICMP差错报文给起始端。
当IP数据报被分片后,每一片都成为一个分组,具有自己的IP首部,并在选择路由时与其他分组独立。这样,当数据报的这些片到达目的端时有可能会失序,但是在IP首部中有足够的信息让接收端能正确组装这些数据报片。

『柒』 以太坊架构是怎么样的

以太坊最上层的是DApp。它通过Web3.js和智能合约层进行交换。所有的智能合约都运行在EVM(以太坊虚拟机)上,并会用到RPC的调用。在EVM和RPC下面是以太坊的四大核心内容,包括:blockChain, 共识算法,挖矿以及网络层。除了DApp外,其他的所有部分都在以太坊的客户端里,目前最流行的以太坊客户端就是Geth(Go-Ethereum)

『捌』 当一个8192B的UDP数据报通过以太网传送时,导致分片,问需要分成几个数据报片每个数据报片的长

1)首先,计算数据包总长度:
数据包总长度=IP头(20字节)+UDP头(8字节)+UDP数据(8192字节)=8220(字节)

2)由于你没有提到分片大小,以一般的以太网MTU值(Maximum Transmission Unit,最大传输单元)1500字节计算。
因为要考虑20个字节的IP报文头,所以每个数据分片的数据段长度最大为1480字节。

3)分片结果,分为6片,具体长度和偏移量(IP报偏移量的单位是8字节,要除以8)如下:
第一片用户数据报的数据字段长度1480,偏移量0
第二片用户数据报的数据字段长度1480,偏移量1480/8
第三片用户数据报的数据字段长度1480,偏移量2960/8
第四片用户数据报的数据字段长度1480,偏移量4440/8
第五片用户数据报的数据字段长度1480,偏移量5920/8
第六片用户数据报的数据字段长度800,偏移量7400/8

4)如果分片大小有变化,即MTU值不是1500,请按照设定的MTU值计算即可。

热点内容
区块链与车 发布:2025-07-10 01:13:27 浏览:202
买卖以太坊比特币货币违法吗 发布:2025-07-10 01:13:14 浏览:545
eth货币是什么币 发布:2025-07-10 01:08:54 浏览:636
eth4年前价格 发布:2025-07-10 01:08:32 浏览:904
零撸币圈 发布:2025-07-10 00:59:36 浏览:202
证通电子与数字货币 发布:2025-07-10 00:48:16 浏览:94
买一个比特币矿机能挖到吗 发布:2025-07-10 00:44:56 浏览:742
btcltcethusdt 发布:2025-07-10 00:38:55 浏览:586
删除节点数据区块链丢失 发布:2025-07-10 00:38:50 浏览:20
eth金色趋势分析 发布:2025-07-10 00:30:42 浏览:297