以太坊的“分片”是指啥?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了以太坊的“分片”是指啥?相关的知识,希望对你有一定的参考价值。

参考技术A

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

最近以太坊由于君士坦丁堡升级(Constantinople)而出现了压倒性的积极走势,而以太坊的升级之路则犹如升级打怪一般,落入了rabbit hole,谁也不知道这洞有多深。既然是“路漫漫其修远兮”,则把脚下的每一步走好走准,则成了至关重要的点。攻破这一难点之后,以太坊的下一技术难点---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)有什么不同呢?

向左转|向右转

在主链中,我们知道记账的人叫做矿工,账本是存在区块当中,对应到分片链当中,则是Collator校对人和Collation校对块。

类似于区块的构成,Collation校对块也包含Collation header校对头和tansaction list具体的交易信息。

向左转|向右转

对比下来,主链和分片链本身来说,还是大同小异,但是一但要把他们联系起来,问题就变得复杂了,这里我们举个通俗的小例子类比一下:

假设,

以太坊主链=温州银行

每个分片=温州银行分行

比如:

shard1(分片1)=温州银行(杭州分行)

Shard2(分片2)=温州银行(宁波分行)

……

在这个系统中,我们就会清晰看到几大问题:1.各大分行的账本如何汇总到总行里去?2.各大分行的账本如何互联?

对应到主链和分片链系统当中来,则变成了1.分片链和主链如何实现跨链链接?2.分片之间怎么互联?甚至分叉的场景要怎么办?

分片链和主链如何实现跨链链接?

为了将分片链加入到主链中,在主链上需要有一个叫做验证人管理员合约(Validator Manager Contract)VMC的特殊合约。VMC具体是这样的:

向左转|向右转

所有的验证人把它们的保证金(stake)存入 VMC当中,这些验证人就会被收录在VMC的common validator pool验证人备选池中。系统将会“隔一段时间”根据stake权益的多少随机为每个分片抽取一名验证人,将各个分片的collation header校对头信息同步到主链中去。

这里的“隔一段时间”,我们需要额外解释一下:“时间”,也叫period周期,这到底是怎么确定的呢?答案是主要看开发人员在最终代码中的实现为准,比如说我们把周期定为5个区块,那么就意味着主链出5个区块,所有分片链分别出一个collation校对块,这就间接决定了分片链的出块时间。

这种随机的形式,使得验证者无法提前预测他们何时会成为验证者,也无法预测会成为哪个分片的验证人,从而预防作恶的可能性。

如果一旦发现我们的分片验证人作恶了,他的stake权益就会被剥夺。

跨分片通信(cross-shard communication)怎么办?

比如说一个转账方小A在分片M中,收款方小B在分片N中,小A可以通过主链这个桥梁,完成扣款操作,并创建一个带有ID的 receipt收据,代表着“自己已经完成了扣款操作”,收款方小B可以根据这个 receipt ID 创建一个receipt-consuming收据消费交易,“消费”成功了之后,收款也就成功了。

向左转|向右转

分片链分叉了怎么办?(fork choice rule)

在以往的分叉情况中,都是“以最长链为主链”,在分片当中,分叉规则是“以最长主链里面的最长分片链为有效分片链(the longest valid shard chain within the longest valid main chain)”。

什么意思呢?我们举个例子:

一条主链出现了分叉,一条分叉连续跟了两个区块,同时也跟了两个Collation校对块,另一条则是一个区块和一个校对块,那么很明显,第一条是有效链。

向左转|向右转

接下来,第二条链又加了一个区块,变成两个区块和一个Collation校对块,依然很明显,第一条链仍然是有效链:

向左转|向右转

接下来,第一条链上又加了一个区块,虽然这条链上只有一个Collation校对块,但是它的主链长度已经超过了第一条,那么第二条则成为了现在的有效链,这就是分片场景下的分叉规则,首先比较主链长度,再比较分片链长度!

向左转|向右转

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

参考资料:

https://github.com/ethereum/sharding/blob/develop/docs/doc.md

https://www.8btc.com/article/348469

https://ethfans.org/posts/ethereum-sharding-and-finality

http://www.qukuaiwang.com.cn/news/11390.html

参考技术B

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

问答 | 请教 QuarkChain,Zilliqa 和以太坊的 Sharding 分片技术有无异同?

这里是 AI 研习社,我们的问答版块已经正式推出了!欢迎大家来多多交流~

https://club.leiphone.com/page/question

(戳文末阅读原文直接进)

社长为你推荐来自 AI 研习社问答社区的精华问答。如有你也有问题,欢迎进社区提问。 

  话不多说,直接上题  

问:请教 QuarkChain,Zilliqa 和以太坊的 Sharding 分片技术有无异同??

最近QuarkChain 的测试网络峰值已经到了14000tps,它的机制跟Zilliqa和V神最近提出的以太坊sharding有什么区别?分片技术真的可以几十倍的扩展交易效率吗?难道网络延时和片区间的确认耗时是有方法可以规避的吗?请明白人解答?


来自社友的回答

▼▼▼  

@余杭:

使用分片技术需要解决的一个很大的问题是恶意节点的问题,所以需要共识算法,但是因为分片是随机的,所以加大了节点间通信的频率。

Zilliqa 区分了存储和交易历史。存储使用频率高,空间占用小;交易历史相反。它采用的方式是每个节点拥有当前状态的拷贝,而因为交易历史使用频率低,所以对交易历史采用分片正好减少了节点间的通信频率。

Quarkchain 有两层 第一层是分片层 第二层是根层 ,在不影响根层的情况下,分片层可以动态增加,但是至少有百分之50的算力是集中在根层的,为了应对双花攻击和恶意节点。Quarkchain 支持任何时间和任何地点的的跨分片交易,而且交易速度非常快。和 Zilliqa不同的是, 它同时实现了状态和存储历史的分片,这一点 ,Ethreum 当然也做到了,吼吼吼。

你可以把每个分片看成是一个子区块链,交易仅仅对涉及到的分片有影响,每个分片都可以生成和发起合约。各个分片是独立的,生成区块的头部。主链收集各个区块的头部,每个分片把区块头部发送到主链,然后生成主链区块。类似于高速路上的收费口,同时设立多个收费口,车流量在单位时间内通过的量就大,因为区块链交易要解决的核心问题就是交易处理速度。

片区间的确认耗时是区块链越来越庞大之后必然会出现的问题,应对方法是轻量化,所以规避的方法是把节点分成轻量化节点和全节点,运行全节点会有相应的奖励,但这同时有中心化之嫌,所以比特币没有进行轻量化。

节点轻量化就是规定某个时间以前的交易历史不可更改,在轻量化节点不储存以前的交易记录的同时,大大减少轻量化节点对可靠性造成的影响。

对于网络延时问题,解决办法是闪电网络,它有一个双向支付通道,只需要记录最后一次双方的余额,不需要记录整个交易过程,提高了交易速率,数字签名确保了在提交到区块上前,双方都不能退出交易,直到通道关闭。


有技术问题需要求助

欢迎点击“阅读原文”

或者移步 AI 研习社社区

我们会把你的问题对接给技术大牛

以上是关于以太坊的“分片”是指啥?的主要内容,如果未能解决你的问题,请参考以下文章

杨镇中译修订版以太坊的分片技术官方介绍

一文速览以太坊的最新进展:合并上海升级数据分片...

一文速览以太坊的最新进展:合并上海升级数据分片...

问答 | 请教 QuarkChain,Zilliqa 和以太坊的 Sharding 分片技术有无异同?

智能合约重构社会契约以太坊分片

ETH vs EOS以太坊放出大招:Sharding(分片)技术!