作者:巴韭特的晚餐
本文发表时间:2020年1月9号
大家好
我是巴韭特
一颗想成为巴菲特的韭菜
新的巴韭特晚餐终于又来了,这段时间在研究分片,看了不少资料,终于完成了这篇文章。
区块链的可拓展性或者说扩容问题一直是行业关注的焦点,以太坊之后的大多数公链都致力于解决这个问题,于是也迎来了后来的公链大爆发。
诸如 EOS 通过改变共识机制,使用偏中心化的 DPoS 实现更快的共识确认,IOTA 通过改变网络结构,使用 DAG 实现更强的拓展性,当然也有通过侧链或状态通道实现扩容的二层解决方案,例如 Celer。
除此之外,分片(sharding)也是非常重要的扩容解决方案之一。关于分片可能很多人早已听过,最早 Zilliqa 以及后来的 Quarkchain 都是知名的分片公链,以太坊也已经计划在将来版本中使用分片,而在新一代公链中,国外知名的分片项目 Harmony、Near 和 Elrond 也同样值得关注。

其中 Harmony 已登陆币安并上线了其主网,Elrond 也登陆了币安,并于 18 年 12 月底启动了 Pre-Staking,进入主网启动阶段,Near 还没有登录任何交易所,他们计划在今年第一季度启动主网。
那么,这三个分片公链在技术上到底有哪些区别?他们的市值相差多大?哪个背景更强?哪个会是 2020 年的黑马呢?
分片(Sharding)到底是什么?
在分析这三个项目之前,也许需要简单普及下分片到底是个啥?
分片在互联网领域早已有之,一般称之为数据库分片(database sharding)。它指的是将单个数据库中的数据,通过某种策略分摊到多个表结构与其相同的其他数据库中,这样每个数据库中的数据量就会相对减少很多,并且可以部署在不同服务器上,理论上能够实现数据库的无限横向拓展。
在区块链领域,道理也是相似的。分片指的是将区块链网络中的任务分摊给不同的节点进行处理的一种水平扩容方式。在这样的网络中并不是所有的节点共同参与一笔记账,而是有很多个小组,每个小组单独记账,通过这种并行处理的方式来提升整个网络的性能。

以太坊分片方案示意图,image byHsiao-Wei Wang
分片的目标是能够在达成共识的同时,减少计算和存储冗余,并以足够快的方式处理交易或事务,同时保证网络有足够的安全性。
举例来说,假设目前网络中有 1000 个节点,可以将节点分为 10 个小组,每个小组内有 100 个节点,这样网络中的所有交易将会被分给这 10 个小组进行并行处理。
分片有哪些类型呢?
在分片的区块链网络中,并不一定所有的事务都需要进行分片,通常来讲分片有三种类型,分别为网络分片、交易分片、状态分片。
网络分片就是将整个区块链网络进行分组,每个小组叫做一个分片(shard),所有分片同时处理不同的交易,实现并行记账。或者称之为物理分片。
交易分片就是将交易随机分到不同的分片或小组,让某些节点进行记账,比如可以通过交易 Hash 或者地址进行分配,也可以通过 VRF 等随机的方式进行分配。
状态分片就是把完整的账本信息存储在各个分片中,每个分片内各自维护部分的账本信息。这里可能还会涉及到跨分片数据同步,跨片交易等问题,是最复杂的一种分片方式。
关于分片介绍的差不多了,下面我们分别来聊聊这三个项目的分片解决方案吧。
Part 1
Harmony
Harmony 是什么?
Harmony 是一个基于状态分片和 PoS 的高性能公链项目,它的分片架构由一条信标链和多条分片链组成,信标链提供包括去中心化的随机数,分片链 Header 的验证,接受验证节点的权益抵押等服务。
在共识算法方面,Harmony 在每个分片内部使用 FBFT 达成共识,FBFT 是 PBFT 深度优化的共识,通过BLS 多重签名,使传统的 PBFT 的效率提升了一个数量级,通过这种方式在分片内快速达成共识。下方是 FBFT 的示意图:

目前 Harmony 主网 v0 版本,每个分片内有 250 个节点,出块时间在 8 秒以内,官方说优化后预计达到5 秒以内
5秒真男人??嗯,这是褒义
Harmony 怎么保证分片系统的安全性?
在分片公链中,可能 1% 攻击即可进行双花。因为网络分片后,全网算力和抵押代币数量都被分割了,每个分片只有网络的N 分之一,如果有 100 个分片,在没有特殊安全协议的设计的情况下,利用全网 1% 的算力或权益就可以控制一个分片,进行双花,甚至凭空创造新币。
Harmony 采用了EPoS(Effective Proof-of-Stake)的有效抵押机制和安全的随机分片技术(Random Sharding),靠协议的规定把大户抵押的代币打散成许多细小的部分,并随机分配到多个分片里,这样任何人就无法把他抵押的代币集中到单一分片内,从而无法攻击单一分片。
以下是随机分配权益的示意图:

上图中红色是攻击者,他的代币被随机分配到了多个分片,这样就没法在任何一个分片内得到主动权。
EPoS 不仅有效解决了抵押 Stake 中心化的问题,同时支持抵押复利和抵押委托。在 Harmony 的网络中,抵押者并非按照实际抵押量来获得奖励,而是按照”有效抵押“获得奖励。
有效抵押,简单来说就是取用户抵押数量的中位数,所有抵押的代币数量都在这个中位数上下 15% 的数值之内。
举个极端的例子好了,假设现在有 5 个节点,抵押 ONE 数量分别为 1, 10, 100, 200, 1000。这里的中位数就是 100,那其他节点的”有效抵押“分别为 85, 85, 100, 115, 115。

1600 个节点的有效抵押图示
EPoS 的有效抵押主要是为了减缓“富人越富”效应,以及防止 PoS 网络趋于中心化的问题。不过对于这种方式,可能有些大户并不会特别乐意,我倒是觉得是不错的解决方案,当然仁者见仁智者见智了。
Harmony 已于 2019 年 7 月份上线了其第一阶段的主网「Day ONE」(这个代号让我想起了我经常使用的日记APP Day One 哈哈), 它具备分片和共识等基本功能,总共有 4 个全状态分片,包括 150 个基石节点在内的总共 600 个节点同时参与共识。
Harmony 如何防止节点被贿赂?
除了 1% 攻击之外,还有另一个攻击方式是贿赂攻击既在初始分片结束后,攻击者通过收买或贿赂的形式,获得单一分片内的绝大部分权力,进行攻击
为了避免贿赂攻击,Harmony 引入了基于Cuckoo Rule的随机再分片机制(Resharding),系统会每隔一天时间重新随机打散验证者的权利,并再分片,让攻击者很难锁定要贿赂的目标,没法成功攻击单一分片。
这里随机再分片机制需要依赖一个安全的随机数生成器。Harmony 采用了独创的分布式随机数生成(DRG, distributed randomness generation)协议产生安全不可预测的随机数,这是一种特殊的多方计算 MPC 方法。
DRG 协议让每一个参与其中的节点生成一个本地的 VRF(可验证随机函数),然后这些随机数会被结合起来生成一个 preimage 数字,并放到下一个区块中,之后这个 preimage 会被用来运算VDF(可验证延迟函数)来生成最终的随机数。

在 DRG 中,VRF 保证了结果的随机性,VDF 保证了结果的不可干扰性。Harmony 已经利用BLS12-381 椭圆曲线实现了 VRF 的功能,并完成了第一个用Go语言实现的VDF可验延迟函数(https://github.com/harmony-one/vdf)。
VDF 的作用可以简单理解为,是防止最后一个节点在看到前面的随机数之后,自己快速计算一个有利于自己的随机数来左右最终结果。而通过 VDF 可以延迟计算和公布前面的随机数,从而让最后的节点无法在最后修改有利于自己的结果。关于 VDF 更详细的介绍可以查看这篇文章:《一文搞懂可验证延迟函数 VDF
Harmony 如何优化跨片通信?
在状态分片中最重要的就是跨片通信。而如果采用简单的 P2P 广播协议,最终系统将产生非常多的消息负载,这样的系统没法支持大量的分片。
Harmony 采用了「Kademlia 跨片路由技术」,来控制跨片间通信的网络开销,并且利用「纠删码」对区块广播过程进行优化,使广播者的网络压力更小,避免发送者的网络瓶颈问题,从而实现高效的横向分片扩展。
纠删码是什么?
因为下面还会提到纠删码,所以这里简单解释下,纠删码(Erasure Code)是存储领域常见的一种数据冗余技术,它可以将数据分割成片段,把冗余数据块扩展、编码,并将其存储在不同的位置,当某些数据丢失时,可以通过重构算法恢复原来的数据。与之有相似功能的是多副本策略,即把数据复制多份存储起来,以便能恢复。
Part2
Near Protocol
Near Protocol 是什么?
Near 是基于全状态分片、对开发者友好的可拓展性公链,他们提出了一种新的协议和解决方案,称之为夜影协议(Nightshade)。
Near 与其他分片公链不同的是,它的技术架构并不是由一个信标链和多个分片链组成的,而是把系统建模成一个单独的区块链,在区块级别进行了分片,每个分片中有很多“段”。

具体来说,Near 将区块分为一个个物理组成块,因为每一个区块都包含这些物理组成块,经过对多个区块的验证,物理组成块均相同的时候就可以验证这些区块是正确的。每个区块逻辑上包含所有分片的所有交易,并切分分片的状态,验证者只负责验证交易所针对分片相对应的状态即可。
项目主网上线时计划是 8 个分片,24 个区块/块生产者以及 800 个验证人。这意味着每一个区块切分成 8 份,然后需要 800 个验证人负责验证 24 个区块确认每一个物理组成块不出问题,相应的 NEAR 的区块间隔也就会更低。
Near 采用了什么共识机制?
Near 采用了独创的称之为 Doomslug 的共识机制,该共识机制允许一组区块生产者只需要一轮通信就可以创建区块,从而使得每个区块都不可逆。而且即使有 50% 的区块生产者不在线,也依然可以完成。
同时他们还推出了一种类似 Casper 的最终确定性工具,称之为Nightshade Finality Gadget(夜影确定性小工具,它可以保证区块在不超过 1/3 恶意攻击者的情况下会被最终确定,进而增强了网络安全性。
Near 如何保证分片的安全性?
为了不暴露特定分片的验证人,Near 通过 VRF 对验证人进行随机分配,隐藏验证人分配到分片的信息。这样节点只知道验证人的存在,却并不知道每个验证人所对应的分片是哪个。
而且,这些隐藏的验证人是对块进行签名,而不是具体的段,这样也会隐藏验证人具体是验证了哪个分片。

Near 如何保证数据的可用性?
Near 也是通过「纠删码」来解决分片的数据的可用性问题,因为分片的存在,并不是所有的节点都有所有分片的状态,如果一些节点没有某些分片的状态,就难以保证某些数据的可用性。
Near 的解决思路是,每一个节点会把他们所制造的区块分成很多部分发送给不同的验证者,使得只需要依靠其中的一些部分,就可以重组它这个节点所制造的分片区块,从而使得数据的可用性能够得到保证。

Part 3
Elrond
Elrond 是什么?
Elrond是一个自适应状态分片的高吞吐量公链他们提出了一种改良的权益证明机制,称之为安全权益证明(SPoS)的共识机制,引入随机选择的共识组,抵押加评级的方式。
与 Harmony 类似,Elrond 也有一条主链,称之为公证链或元链Notarization (Meta) chain),负责所有网络和全局数据操作,比如节点加入和离开网络,验证人列表,节点分配等。
哦,原来元链是大哥,都听大哥的
那。。。
Elrond 的共识机制是什么?
Elrond 采用 SPoS 共识机制,他们参考了 Algorand 随机选择机制,并进行了改进。Elrond 通过随机选择共识组,与抵押和评级这些维度相结合的方式来达成共识,它与传统 PoS 不同的是,加入了对每个参与打包节点进行评级这个维度,以及共识组内通过 pBFT 进行签名确认
Elrond 如何跨分片通信?
Elrond 执行跨分片通信的策略是使用异步模型。Elrond 的每个块结构由一个区块头表示,它包含块随机数、轮次、提议节点、验证节点时间戳等信息,以及包含交易信息的微块(Miniblock),每个微块都包含所有事务。
在这个网络中,交易的验证和执行会先在发送方的分片中完成,然后在元链中进行公证并提供执行证明,之后再到接收方的分片中完成并更新余额等。在这个过程中的处理单元就是微块。

Elrond 如何保证安全?
Elrond 使用了随机数来保证安全性,例如将区块提议者和验证者随机采样到共识组中,并在一个轮次结束后对分片之间的节点进行改组。通过这种方式也可以防止上文所说的贿赂攻击等。

随机性是区块链的核心,不仅是在 PoS 共识中,可能通过持币量和币龄,或者随机数等选择每一轮的记账节点,在 PoW 共识中很重要的一点也是需求某种随机性。
巴韭特评论:
是不是太过于技术了,可能看起来并不容易理解。
于是我做了一张简单的技术对比图。把比较知名的几个做分片公链的项目做了一个汇总,其中参考了 Harmony 币安的研究报告,以及部分内容联系官方做了确认。

除了 MultiVAC,国内 TOP Network 也是采用了分片解决方案,后面有机会也会研究一下。
技术是一方面,对于内容我也想简单提一下,哈哈哈,其中 Harmony 让我看的最透彻,他们在 Medium 和币乎有大量的中文资料,而且白皮书和 AMA 中对技术的阐述条理清晰。Near 确实够技术,技术到夜影协议中文版白皮书我都看不太懂具体的实现方案,更别提其他几个原版白皮书了,我四级的英文水平,看到头痛欲裂。
Elrond 几乎很少的中文资料,只看到 Tokengazer 对他们的分析和评级,还好他们的白皮书和其他资料比较有条理。
面对中国市场,技术再厉害,没有好的内容向大家展示也许是非常可怕的,一个中国区负责人或者一个靠谱的 Marketing 团队是很有必要性的。
社区需要优质的内容,要不然就只是闲聊的社群而已。
三大分片公链投资分析
Harmony总发行量 126 亿枚,目前流通量大约 37 亿枚,据 Coingecko 数据 Harmony 市值排在 143 名。他们在 18 年 5 月份完成种子轮募资,投资方包括 Continue Capital、CypherMines、Lemniscap、Univalues Associates、Qtum、点阵资本、共识资本等,出售了 22.4% 的额度总共融了 1830 万美元19 年 5 月份在币安 IEO 出售了 12.5% 的额度又融了 500 万美元
投资方背景很强,融资金额还算充裕,不过如果 18 年 5 月份融资的以太坊没有变现,到现在估计也有点捉襟见肘了。
Harmony 二级市场表现还算可以,目前价格 0.0048 左右,相较于私募价 0.0065 虽处于破发状态,但相较于 IEO 0.003175 的价格还处于盈利。

不过 Harmony 代币分配感觉并不是很合理,关于协议进展和生态建设部分让人摸不着头脑。
根据团队公开的代币解锁信息(http://dwz.date/dxf),2020 年还有两次种子轮的解锁,约 14 亿枚。加上协议进展和生态建设以及团队的代币,到今年底预计流通量达到 70% 左右
目前 Harmony 的 Staking 好像并没有开始,他们计划在 Q1 开放抵押,预计年化收益率在 10% 左右。如果 Staking 将流通量控住在更小的范围,加之主网之后 Dapp 的发展,也许还会有不错的表现,当然也要看团队的决策和资金了。
NEAR是以传统形式进行的融资,投资方包括 MultiCoin Capital、Coinbase、Electric Capital、MetaStable、百度风投、SVAngel 等,共融资 1210 万美元。
目前 Near 还未登陆任何交易所,预计 Q1 启动主网并登陆交易所。关于代币分配和解锁以及私募价格等信息官方暂时没有公布。
最近看到 Near 来国内做了几场线下活动,效果还不错,不过来国内的时间貌似选的并不太好,年底国内的环境和市场并不好,并且没有大的利好,很难刺激大家的神经。期待春节后的动作吧。
Elrond总发行量 200 亿枚,目前流通量大约 100 亿枚,据 Coingecko 数据 Elrond 市值排在 149 名,竟然和 Harmony 排名相差很少。
Elrond 相对来说估值低很多,私募出售了 19% 的额度融了 190 万美元,投资者包括 Binance Labs、Electric Capital、NGC、Maven 11、Woodstock Capita。后来 Elrond 在币安进行了IEO出售了 25% 的额度融资 325 万美金
相比来说,Elrond 融资应该是最少的,而在官网上看到他们团队有 20 多人,成本还是很高的,资金看上去也并不充裕,不知道他们是否有再融资的计划。
目前项目方都不太容易,如果真的有突破和价值,削减成本保证开发,未来可期。
最后,感谢大家的阅读,为了写这篇文章看了很多资料。可能还有很多点未能详尽介绍和分析,以后有机会我们再慢慢聊~
原文链接