区块链技术之“分片”

紫衣仙女 2020/4/3 5:31:37

POW和BFT


比特币是一个现金交易系统,所以它只有两个状态:钱花 掉了,钱没花掉(Spent 和 Unspent),所以比特币的账本模式是 UXTO。


因为比较简单,那么以太坊引进了智能合约,就增加了很多比较复杂的状态, 所以当 Vitalik 设计以太坊的时候,非常明显,用比特币的 UXTO 是无法记录其他状态的。他当时有两种选择:



一种就是把花掉和没花掉,仍然用 UXTO 沿用比特币的做法,用另外的数据文件来处理新状态。但是这种模式他放弃了,后来量子链捡起来了。

第二种就是用了新的账户模式来记录所有的状态。那么这种革新,就使得以太坊成为一种状态复制机(State Replica Machine)。而这里引入了一个很重要的事情,就是这个复制机,可以用 BFT(拜占庭容错机制)来解决。


这和中本聪做的 POW 挖矿不同。POW 在形成共识的时候,会出现暂时的分 叉,就是出现分叉链,那么需要确认——大家估计都知道,需要 6 个区块确认, 确认的方法是最长链,哪条分叉最长,大家去哪边挖矿。这个是 POW 的一个弱 点,就是你达成共识的时候并不是终极共识,需要二次确认。那么以太坊做出了 一些优化,叫做 Ghost 确认方法。


那么 BFT 就不是这样。BFT 通过每一个节点和其他节点的一对一沟通,最后 达成的共识就是终极共识,具有 Consensus Finality,而不需要任何再次确认。但 是 BFT 也有软肋,就是节点超过了 16 个,就慢得好比乌龟了。主要原因是他们 节点之间的一对一信息,非常非常多。


分片


那么大家要解决这个办法,就开始找捷径。其实嘛,捷径就是牺牲之前的完 备性——没有免费午餐啊。比如小蚂蚁的捷径,就是号称我们有 1000 个节点,但是只选出 7 个节点来做 BFT 共识。


那么 Zilliqa 说他们做分片,把每个片分了 600 个节点,然后在这里做 BFT。 大家看到问题了吧?600 个节点,不是 16 个节点啊,所以要走捷径,是不是? 那么捷径是啥?他们就是在 600 个节点中选择一个出来做小组长,那么其他 599 个团员都知道这个小组长是谁。这个小组长叫做 Aggregator,就是把大家的签名 集中在一起。


本来 BFT 要求,每个团员都发信息给另外 599 个团员。现在他们不做了,只 需要所有人发信息给小组长,然后小组长做一个多重签名,用 Schnorr 签名做成 一个。这样就把信息量大幅度减少,速度就起来了,但是就变中心化了。


我觉得小组长这个中心化角色是一个软肋,你只要在 599 个团员中有一个坏 人,就可以通过外面去 DDoS 这个小组长,把小组长打趴下。


另一个问题,就是 BFT 就是不假定你知道别人。现在连领导都出来了,变成 你必须确认,小组里面没有坏人。那这个就违背了拜占庭容错机制的本意。如果 你需要确认大家都是好人,干嘛不做 Raft 呢。


另外他们是硬分片,就是把固定的片分好,然后各种交易分到不同的片里面。 还要根据地址,必须保证同一个地址去同一个片,因为如果去了不同的片就会出 “双花”。我个人觉得这里他们可能会被攻击打垮。


分的固定片出问题,那就出“双花”啊。 墨客是逻辑分片,我叫软分片,按照智能合约的要求来分片。 大家需要分清楚,Zilliqa 它是提供一个解决方案,比如去修改 BFT 流程;墨客不是提供一个解决方案,而是设计一个基础框架。


首先我们认为,将来大量的流量是智能合约相关的,因此我们分层,让底层仍然处理交易活动,这样我们就无需考虑 Zilliqa 必须考虑的如何防止“双花”的 问题,因为我们已经用了现有可行的有效方案。那么在智能合约层面上,我们通过分片落实子链,也不是在子链这里给大家 提供解决方案。


我想大家小时候都听过一首儿歌,“大路有水,小路有鬼。大路 很平坦,但是绕路还有水。小路可以抄近路,但是有鬼”,就是说没有一种解决 方法可以尽善尽美,总是有得有失。我们就把这个解决方案,让落实子链应用的客户来自己做取舍。你在墨客子链,可以做 BFT,可以做 POS,可以做 Tendermint, 甚至可以做你自己定义的任何共识方式。我们不会去改动现有的各种共识方式, 来提供解决方案给你,我们只是提供一个非常灵活可扩展的架构,让大家自己根 据业务的需要,来选择最合乎你业务最优化的配置,而且各个子链还可以提供服 务给大家。大家懂了吗?

墨客的扩展能力


在所有解决公链扩容问题上,墨客是各种底层公链币中最强的。墨客 使用了分层分片技术集百家之长。分层的 pow 下层有比特现金的大区块扩容,且 pow 模式能在全球铺开数万节点。去中心化程度高。 分层的智能合约层有分片,各分片子链内部,通证发行方可以自定义 共识模式,可以有 eos 的 dpos,小蚁的 dbft。墨客以上层分片法汇集 各家竞争底层公链的高并发交易扩容之术,又以整体分层法,用 pow 大区块在底层承载全网交易,有数万挖矿全节点铺遍全球,去中心化程度极高。这在解决区块链扩容方面做到了极致。再加上另外两个大杀器,异步调用合约和跨链交易。


墨客碾压以太坊最大的一个原因,就是你可以在以太坊发币,但是不能在以 太坊发链。你可以在以太坊上发一个币,是吧?你也可以做一个合同,不发币, 是吧?好像撸猫这种。可是你可以到以太坊上建一个链吗?你说,以太坊,给我 100 个节点,用 pbft 做共识,我要建一条链,行不行?但是墨客就可以,没有 链的币,就是空气。

原文出处

点击查看更多内容
随时随地学软件编程-关注百度小程序和微信小程序
关于找一找教程网

本站文章仅代表作者观点,不代表本站立场,所有文章非营利性免费分享。
本站提供了软件编程、网站开发技术、服务器运维、人工智能等等IT技术文章,希望广大程序员努力学习,让我们用科技改变世界。
[区块链技术之“分片”]http://www.zyiz.net/tech/detail-123813.html

上一篇:区块链游戏2.0时代,如何打造开放型游戏生态社区?

下一篇:以太坊共识算法研究

赞(0)

共有 条评论 网友评论

验证码: 看不清楚?
    关注微信小程序
    程序员编程王-随时随地学编程

    扫描二维码或查找【程序员编程王】

    可以随时随地学编程啦!

    技术文章导航 更多>
    扫一扫关注最新编程教程