上期《众说区块链》讨论的主题是“区块链在医疗行业的落地”,你们经过阿里健康给常州市医联体提供的区块链解决方案,围绕这个主题分享本身了对区块链在医疗领域落地的见解和看法。git
本期《众说区块链》讨论的主题是“以太坊分片技术”,特约嘉宾杨镇老师跟你们介绍了以太坊分片技术,并针对你们的疑惑进行了解答。github
主题:以太坊的分片技术算法
时间:5月19月(周六)晚9点-10点浏览器
特约嘉宾:杨镇微信
资料:关于分片的技术说明文档,杨镇老师进行了中译,中文版地址:https://github.com/riversyang/sharding/blob/develop/docs/doc.md网络
讨论实录数据结构
@cynthia:你们好,周六晚9点,HiBlock区块链社区特别栏目《众说区块链》准时和你们见面啦,我是主持人Cynthia,很是感谢你们对社区的支持。并发
《众说区块链》由HiBlock区块链社区发起,每周六晚9点,在社群内组织一个区块链相关主题的讨论,在讨论过程当中加深社区成员对区块链的理解。负载均衡
五月初,以太坊创始人“V神”Vitalik Buterin表示,以太坊的内部扩展解决方案——分片已经接近完成。以太坊分片旨在将以太坊分红几个并发网络,从而使整个网络更加高效地扩展,这将有助于缓解以太坊网络目前所面临的拥塞问题,从而提高交易速度并下降成本。分布式
EOS阵前叫嚣,以太坊借力“分片技术”能捍卫它的地位吗?对此你怎么看?你认为分片技术能解决目前以太坊存在的拥堵问题并达到提高速度的目的吗?除了这些优点之外还有哪些优点?又存在哪些劣势呢?
本期《众说区块链》讨论的主题是“以太坊的分片技术”,你们能够围绕这个主题分享本身对分片的见解和看法。
接下来欢迎本期特约嘉宾杨镇,带领你们一块儿聊聊“以太坊的分片技术”
下面有请杨镇老师带领你们一块儿聊聊以太坊的分片。
@何强:你们对分片技术熟悉吗?
群成员:大部分是不熟悉的,但很感兴趣
@杨镇:你们好,由于区块链自己的技术限制,公链的吞吐量问题(同一时间内交易确认量低)一直是应用角度上最被诟病的一个问题。以太坊解决这个问题的方案就是所谓的分片(sharding)。
分片的方案有不少技术细节,我先摘一端技术说明的译文给你们分享。
假设用变量 c 来表示一个节点的有效计算能力,那么在一个普通的区块链里,交易容量就被限定为 O(c),由于每一个节点都必须处理全部的交易。二次方分片的目的,就是经过一种双层的设计来增长交易容量。第一层不须要硬分叉,主链就保持原样。不过,一个叫作 校验器管理和约 (validator manager contract,VMC)的合约须要被发布到主链上,它用来维持分片系统。这个合约中会存在 O(c) 个 分片 (目前为 100),每一个分片都像是个独立的“银河”:它具备本身的帐户空间,交易须要指定它们本身应该被发布到哪一个分片中,而且分片间的通讯是受限的(事实上,在第一阶段,不存在这种通讯能力)。
@何强:有没有具体的数字,现有的效率怎么样?分片后能达到什么效率?分片有上限么?好比能分多少片?
@杨镇:这个具体的参数通常用 TPS(Transactions per second),目前我印象里仍是100这个数量级,也就是每秒能处理的交易量小于 100。按照刚刚方案里的说明,分片以后,理论上 TPS 能够提升 100 倍。
目前方案的核心就是刚刚说的 VMC 合约,这是一个目前公链上要增长的合约。按照刚刚方案里的说明,分片以后,理论上 TPS 能够提升 100 倍。
按照如今的方案,实装以后的效果是,增长了 100 个shard,每一个 shard 上都是一个单独的链,只不过在这些新的shard链上,原先的区块概念没有了,变成了 collation,这能够想象成另外一种类型的区块,是为了和现有的主链区块加以区分。
分片运行在一个普通的符合最长链规则的权益证实系统中,权益数据将保存在主链上(具体来讲,是在 VMC 中)。全部分片共享一个通用验证器池,这也意味着:任何经过 VMC 注册的验证器,理论上均可以在任意时间被受权来在任意分片上建立区块。每一个分片会有一个 O(c) 的区块大小 / gas 上限(block size/gas limit),这样,系统的总体容量就变成了 O(c^2) 。
@何强:一百倍也就是一秒10000哈,和如今交易系统比起来处于什么水平?
@杨镇:类比,不知道,没研究其余对手~
@何强:这个能和支付宝作类比吗?支付宝极限大概是每秒120000笔。
@杨镇:固然无法比,不要分布式系统和中心化系统比性能。
请注意,分片以后,记帐方式变为了权益证实。
VMC这个合约是有注册功能的,也就是说,想参与分片记帐的地址,须要从本身地址给合约发送必定量的eth,来完成注册,以后,VMC会按照全部注册的记帐人(collator)所提供的eth金额比例来随机分配由谁来记帐。
这其实就是一个PoS(Proof of Stake)协议了。
在这种状况下,每一个 shard 中的 collation 组成的链都是独立增加的,咱们再发送交易时,就须要指定想由哪一个 shard 来处理。
以前由区块来保存的交易列表数据就被移到了 collation 里,区块里保存的就变成了 collation header 列表。
目前,各个 shard 之间是不能交互的,也就是说,咱们发送到某个交易,只会存在于某一个 shard 中。
这样,咱们的客户端,通常就要明确指定咱们监视哪个 shard,而像区块链浏览器,则要监视所有100 个 shard。
@bob:若是没记错的话当前的以太坊交易,每秒20笔。
@何强:这个变化对链上现有业务有什么影响?理论上应该是只有改善。
@杨镇:TPS确定会提高,这个毫无疑问,至关于变成了100 个单独的链在一块儿处理交易。
@何强:对开发者呢?从开发的角度是增长了一些复杂度,不过换来了TPS的大幅度提高哈。
@杨镇:开发角度的复杂度提高能够忽略。使用上没有太大变化,固然,协议层定义会变、区块、collation数据结构会变。
@西安-赵晓楠:那意思好比对接以太坊的rpc接口可能会有调整?
@杨镇:rpc么?确定会。
@何强:理论上TPS提升xxx倍,那怎么知道实际上提升多少?
@杨镇:实际提升多少就要测试了,理论上就是100倍。
@@山东-孔庆丰:为何是100个?能知足现有业务?未来是否是能够分红成千上万片?
@杨镇:100倍这个是能够调整的,目前是在VMC中写死的。分片这个协议变更,是为了尽可能少的影响目前的程序,如今还在测试阶段。
@西安-赵晓楠:分片时间点大概啥时候,以前看过一些资料说实现分片,技术难度很大呀,v神以前说的3-5年才能 搞定,这进度推动这么快?
@何强:若是后期业务快速爆发,靠分片能持续提升TPS么?光冲着提升TPS来讲,应该还有其余办法。最后为何决定就用分片了?
@杨镇:这个要看社区测试的进度和反馈,目前尚未明确的时间点。分片有4个阶段,目前只是第一阶段,为了控制影响程度。
关于分片的技术说明文档,我进行了中译,中文版在个人github上:https://github.com/riversyang/sharding/blob/develop/docs/doc.md,你们有兴趣也能够看一下。具体的阶段介绍,在文章里有,但很是技术化。具体的实施,和后续 metropolis 版本也直接相关。
@西安-赵晓楠:plasma.项目和分片是一个项目仍是什么?
@杨镇:plasma须要基于sharding来实施 因此这是第一步。sharding也是后续plasma实施的基础,也就是把计算分散到所谓的侧链上进行。目前主网上的肯定区块仍是靠PoW,但经过VMC选择collator(也就是collation的记帐人)这是PoS,因此V神也说过,这个过渡阶段是所谓的混合挖矿。
@西安-赵晓楠:分片技术实施后,有没有可能会下降些手续费?不用如今竞价手续费进行打包。
@杨镇:是的,是VMC根据PoS算法随机选的记帐人。
@白菜:交易须要指定它们本身应该被发布到哪一个分片中,而且分片间的通讯是受限的。这句话不明白。这么作的目的是什么,为何受限,请大神指点,我是小白,请不要见笑。
@杨镇:由于目前没有跨链协议支持,因此没法实现跨链通讯,并且在目前来看,也没有必要作跨链交互。一个交易是存在某个 shard ,仍是像如今存在 block 中其实不是很重要。
@白菜:您最开始说,VMC合约、分片就是在公链上要增长的合约?我理解成了没有跨链。是否是我理解错了?
@杨镇:没有跨链。
@白菜:我觉得只是增长一个vmc合约而已,不算跨链。
@杨镇:管理的是shard 的基础信息,以及负责管理 stake、生成 collator,就是记帐的人。shard 的数据,和目前同样,单独存储,只把hash 保存到主网的VMC中。
@郑鹏:VMC是一个在主链上的分片前置合约吧。
@杨镇:不是前置,是必须的。目前的方案里,VMC是必须的,须要和sharding协议一块儿实装。
@郑鹏:感受分片技术和负载均衡理论有点儿相似,区别在哪里?去中心化的负载均衡?
@杨镇:我以为不要用中心化的技术去类比去中心化技术。彻底不同,VMC是选择谁来生成collation,以PoS的方式。若是要了解技术细节请你们认真阅读黄皮书,而后看分片的技术说明。
@兰凯仁:那这个vmc不算中心化么,vmc也是每一个矿机都包含的合约么?
@杨镇:区块链里的全部处理都是串行的,不存在咱们普通的中心化技术里的所谓并发问题。VMC是惟一的实例,和其余全部智能合约同样。跟所谓中心化不要紧。
合约代码是存在客户端的,全部客户端都有一份,EVM的执行也是全部客户端都会执行
因此不存在所谓中心化的问题,这些基础概念仍是须要先学习下。
总体上看,是的,但实际上不是每一个客户端都有100个分片链,每一个客户端能够本身指定监视那个shard,你能够监视全部的,也能够特定某个。矿机,理论上也不用全部,但run的时间长了,最终就会变成全部的shard。由于 VMC 选记帐人是随机的,因此若是时间够长,总会轮到全部的 shard都记过。
@白菜:以太坊分片主要是为了解决交易速度慢的问题。问题各个片区的共识如何达成,各个分片如何通讯?既然不能跨链,跨片能够吧?
@杨镇:分片链之间不能通讯,我最开始发的那段说明里已经说了。某个交易只会存在于某个shard,暂时不存在跨shard 的须要。
@Timothy:听起来以太坊能作分片扩容的一个缘由是由于节点数够多了,能够切一百份,照样每份节点也够实现不可篡改了。能这样理解吗?
@杨镇:不是这样的,跟节点个数不要紧,是有一个节点就有一个副本,分片的改动是协议级、基础数据级别的改动,区块链的基础机制没有变化。
@Timothy:分片看起来技术含量不低,它对于国内各类各样的公链项目,是否有可落地的借鉴意义呢?
@兰凯仁:感受分片技术主要增长了交易的"并发",原来10分钟1笔,如今10分钟100笔。
@杨镇:理论上提高100倍,是同一时间有100个链在处理交易,如今只有一个。每一个链仍是像如今同样是串行化处理的,理论上1000也能够,就看VMC里存几个head。
@Timothy:目前eth的tps瓶颈是节点算力仍是网络延迟?分片主要是解决哪一个瓶颈的?
@杨镇:区块是有gaslimit的,也是就是一个区块能包含的交易是有限的,而后15秒一个区块。分片以后就变成了100个上述的链同时在处理。
@joseph:杨老师 区块链作公益捐赠 目前有哪些东西能够参考?
@杨镇:公益捐款,理论上写个合约就能够,全部款项的进出都是透明的(能够在链上查到)。但这个事的关键是实操的设计,好比如何支取、发放。这就不是技术问题了。
区块链应用的关键仍是应用设计,绝大部分状况下技术都不是主要问题。
@Cynthia:感谢杨镇老师,今天先聊到这里,你们能够继续消化一下。讨论的内容会沉淀下来发布在公众号,还有想问的能够在文末留言哦~
下期主题未定,特约嘉宾也未定,欢迎你毛遂自荐,或推荐~下周六晚9点,《众说区块链》不见不散~
点击“阅读原文”加入HiBlock区块链技术布道,共同窗习
本文内容来源于:HiBlock区块链社区微信群讨论
【众说区块链】是HiBlock区块链社区组织的微信群讨论活动,每周六晚9点准时开始,围绕一个主题进行讨论,有兴趣的小伙伴加小助手:baobaotalk_com入群吧~
合做社区:
如下是咱们的社区介绍,欢迎各类合做、交流、学习:)