大数据中国

搜索
大数据中国 首页 热点综合 区块链 查看内容
一文读懂分片基础原理, 数据分片, 跨分片交易, 区块链分片和缩放究竟是什么鬼?
2019-10-7 20:29 | 查看: 235| 评论: 0

以太坊是所有区块链中一直与分片概念同步的底层平台,想要理解为什么以太坊开发者社区想要实现分片,重点是要理解分片是什么,以及这个解决方案为何如此有吸引力。


根据ETH Gas Station的统计,向以太坊区块链中添加一项交易大约需要1.78分钟,每32秒生成一个新的区块,平均每秒处理15-20个交易。这个生态系统创造了一个有利于矿工而非用户的环境,如果用户想要优先处理他们的交易,就必须要提高他们的gas价格。


由于低吞吐量、高延迟和高价格限制了以太坊网络性能,因此,目前以太坊上不太适合部署需要强可扩展性的服务和应用程序。



什么是分片?


简单来讲,分片是一种分区方式,可以在P2P网络中分散计算任务和存储工作负载,经过这种处理方式,每个节点不用负责处理整个网络的交易负载,只需要维护与其分区(或分片)相关的信息就可以了。


为了进一步解释分片,我们可以看一下最简单的分片示例。以太坊的创始人Vitalik Buterin称其为“通过1000山寨币增加扩展性”。


在本例中,不是运行单条区块链,而是运行多条区块链,我们将每条区块链称为一个shard(分片),而不是称之为区块链。反过来说,每个分片都有自己的验证器网络或者节点网络,可以使用PoW算法挖掘区块,也可以通过质押(staking)或投票(voting)来挖掘区块。



分片所面临的挑战


在尝试去使用分片时,我们面临的第一个问题是,由于每个分片都有自己的节点集,所以每个分片的安全性都低于像以太坊这样的单链。


所以如果具有x数量节点的以太坊决定硬分叉并分裂为一条分片链,且将整个网络分布在超过10个分片上,那么每个分片将具有原链1%的安全性。意味着通过控制原链5.1%(而不是51%)的节点,每个分片都可能会被破坏。


我们遇到的第二个问题是:“我们如何选择哪个节点验证哪个分片?”对于一个不怎么好的参与者来说,只有当这5.1%的网络节点都在同一个分片中进行验证时,要控制这些节点才会是个问题。


允许节点选择其在哪个分片中验证可能会导致频繁的网络攻击,因此将攻击风险减到最低的最佳方法,就是不允许节点选择验证哪个分片


实际上,所有的分片架构都是随机为分片分配节点的。将节点分配给分片需要非特定于分片的计算,并且几乎所有这些设计都使用单独的链来处理维护整个分片和节点网络。该链在以太坊中被称为信标链,负责生成随机数,将节点分配给分片,捕捉单个分片的快照,处理握手权益和其他各种功能。


信标链有一些缺点。因为它们负责前面提到过的记录保存计算,所以网络使用的分片越多,信标链需要做的工作就越多,那么没有分片的网络可能会遇到低吞吐量加高延迟的问题,因此分片网络的可扩展性有其天然的局限性。


然而,分片网络具有可乘性,因此如果网络效率得到改善,导致网络中节点处理交易的速度提高四倍,那么信标链就能够处理四倍的分片数量,将网络速度提高16倍。



如何将数据分割为分片?


让我们先看看节点通常在区块链上执行的功能:

  1. 处理/验证交易

  2. 将这些交易以及它们挖掘的区块中继给网络上的其他节点

  3. 储存所有交易的历史


随着网络的发展,节点需要能够跟上网络的需求及其发展需要。

  1. 要增加处理中的交易数量需要每个节点都增加更多计算力。

  2. 中继的交易越多,需要节点提供的宽带就越大。

  3. 要在区块链上储存所有的数据也就需要节点逐渐增加更多的存储空间。


观察这三个参数,你会发现,无论每秒的交易数或中继的交易数是否增加,数据存储量都会增加。


在编写这篇文章之前,就已经提出过对存储进行分片但不对交易进行分片的方法,而且有些项目已经实现了交易处理(而非存储)的分片。


然而,最常见的分片类型被称为“状态分片(State Sharding)”,包括每个分片中构建其自己区块链的节点,该区块链包含整个全球网络中仅仅影响它们自己那部分的交易,这意味着节点只需要存储它们分片的交易历史,处理影响它们分片的交易,并在它们的分片中中继这些交易。


接下来,我们将介绍跨分片交易、无效交易和恶意行为。



上文中,我们讨论了分片是什么,分片要解决的问题以及要有效实现分片需要克服的一些障碍。那么接下来我们将讨论跨分片交易无效交易恶意行为

正如上文描述的分片的基本类型并不是非常有效或者实用的分片方法,因为它们不能彼此通信,所以它们就像单一区块链一样。以简单的付款为例,如果用户A和用户B在同一个分片上,那么分片中的验证器能够毫无障碍地处理交易,但是当他们的账户在不同的分片上时,会出现什么状况呢?


用户A在1#分片上,用户B在2#分片上。各个分片上的验证器将无法借记或贷记用户的账户,因为它们没有彼此分片的权限。


然而,这个问题也是有解决方案的,下面就让我们来更详细地看一看其中一些解决方案:


同步(同时)跨分片交易


在这种情况下,当在1#分片的用户A要向在2#分片的用户B发送资金时,将同时在每个分片生成包含与此交易相关的状态转换(state transition)的区块,并且每个分片上的验证器会协同工作以确认这笔交易。

免责声明: 除非特别声明,文章均为网络转载,仅代表作者观点,与大数据中国网无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。如果本文内容有侵犯你的权益,请发送信息至ab12-120@163.com,我们会及时删除

最新评论

关闭

站长推荐上一条 /1 下一条

 
 
在线客服①
在线客服②
大数据行业交流
大数据行业交流
大数据求职招聘
大数据求职招聘
服务电话:
15010106923
微信联系:
hb-0310
服务邮箱:
ab12-120@163.com
官方微信扫一扫
大数据中国微信

QQ   
冀ICP备15018178号-3

版权所有: Discuz! © 2001-2013 大数据.

GMT+8, 2019-10-22 17:37 , Processed in 0.040856 second(s), 24 queries .