Harmony 是基于分片技术的新一代高性能公链,已经在 2 月份发布测试网络,并刚于 4 月 11 日在北京举办了名为「区块链的未来」的社区见面活动。链闻早前报道过,其于 4 月 3 号宣布通过向香港的风险投资机构 Lemniscap、澳大利亚的 BCA 基金、新加坡的 UniValues Associates 和美国的 Consensus Capital 出售 26 亿枚代币(总共 210 亿枚),完成其首轮 1800 万美金融资。
Zilliqa 是第一个使用安全分片技术将吞吐量扩展到每秒数千个交易的高吞吐量公链平台。其在测试网中实现了每秒 2828 笔交易(TPS)的速度。 Zilliqa 致力于通过支持高吞吐量的 DApp,以满足企业诸如如电子广告,支付的业务扩展需求。本文将带你一探究竟,同是使用分片技术的项目,Harmony 与 Zilliqa 有何不同。
原文标题:《高性能公链 Harmony 助力去中心化经济》
原文作者:Rohit Chatterjee
翻译:Harmony 团队
Rohit Chatterjee,商业咨询机构 Keystone Strategy 合伙人
目前而言,虽然走入现实技术和应用的区块链正慢慢被普罗大众接受,但离其广泛应用显然还有相当一段长的路要走,这其中,最大的一个障碍就是区块链本身的响应速度问题。越来越多的商家开始接触、了解并接受用比特币和以太坊等虚拟货币支付进行交易的概念,但如果真要将虚拟货币当成一种正规且通用的支付手段,并占据跨境交易市场,它的性能和相应的技术基础就需要达到 Visa 和 Mastercard 等这些人们早已习惯的传统支付方式正面竞争的水平。
从现有的事实看,区块链还太落后了。目前区块链的性能还无法满足这一要求,比特币每秒只能处理不到 10 笔交易,以太坊哪怕在最高峰时每秒也只能处理不到 40 笔交易,相比之下,Visa 每秒处理的交易可达 2000~5000 笔,差距显而易见。
目前多个区块链项目已经在尝试用不同手段解决区块链的性能问题。以太坊提出了自己的扩容方案——以太坊 2.0,但目前开发进度非常缓慢,扩容升级遥遥无期。在区块链领域,为了提升性能,通常需要牺牲其安全性或去中心化程度,这就是大家常说并被广为接受的区块链「不可能三角」理论。分片技术作为最新的扩容方案,是唯一一个突破不可能三角的方向。区块链的分片简单来讲,就是分而治之,将整个区块链账本横向切分为更小的账本。其实,传统的中心化信息系统早已经开始使用分片技术,但直到近期,这一技术才开始被区块链世界所重视。
Zilliqa 可能是大家第一个想到的区块链分片项目。被称作「高性能公链」的 Zilliqa 在测试网中实现了每秒 2828 笔(TPS)的速度。需要注意的是,在分片系统中,TPS 交易速度(TPS)会随节点数量的增加而增加,Zilliqa 的这个 TPS 数值是在 3600 个节点中获得的。在过去的一段时间里,除了 Zilliqa 还有一些新项目也在利用分片技术开发高性能区块链。其中最令人期待的项目之一便是在过去一年里潜心开发的公链 Harmony。作为下一代的开放式高性能公链,Harmony 的愿景是无缝链接数十亿人的经济运转。为了达到这个目标,Harmony 在区块链协议层、网络层和系统层都做了大量创新。
是什么让 Harmony 团队在众多公链项目中脱颖而出?让我们来深度剖析一下 Harmony 与 Zilliqa 等项目到底有何不同。
State Sharding 状态分片技术
尽管都是打着分片技术的期号,但 Harmony 和 Zilliqa 的分片技术显然有所差异。Zilliqa 仅对网络和交易进行了分片,而 Harmony 则在这一基础上,进一步对区块链状态进行了分片处理。简而言之,Zilliqa 是将网络节点分到不同的分片,每个分片包含几百个节点 (即网络分片),这使得不同的交易可以被各分片同时处理(即交易分片)。然而,为了能够处理跨片交易,每个分片的每个节点都需要存储区块链的整个账本数据,这使得某些性能差的节点无法参加到网络中,进而减弱去中心化。
相比之下,Harmony 对区块链的账本数据也做了进行了分片处理(即状态分片),团队将这种在分片技术中各方面突破的总和方案命名为「深度分片」。深度分片,是包括对网络、交易和状态的多层分片,同时在网络层的数据传输协议中,利用纠删码技术对区块数据进行分片,使广播者的网络压力很小,再加上引入 Kademlia 路由协议,让区块数据能通过最短路径传输到目的地,在此基础上,还可以允许小节点的加入,最大限度地保证了去中心化程度。
PBFT Consensus Mechanism/PBFT 共识机制
Zilliqa 的共识机制被称为 PBFT(实用拜占庭容错)协议。在这一协议里,一个节点被选为「领导者」,其余节点作为「验证者」。每一次共识过程包括两个阶段:prepare (准备)和 commit (确认)。在每个阶段,领导者向所有验证者广播一个提议,所有验证者收到提议后,再反过来将自己的投票意见广播给其他人,最后每个验证者都要计算所有收到的其他投票。这个过程导致总消息复杂度为 O(n*n),这里 n 是总节点数。通过简单的计算可知,这种算法在几百个节点的网络中并不实用。
FBFT 共识机制
Harmony 在 PBFT 算法的基础上进行了大量改良,创造出 FBFT 算法(快速拜占庭算法)。在这个新的算法中,验证者不用广播他们的投票,只需通过数字签名的方式把投票发给领导者即可,领导者把收到的数字签名合成为一个数据量位 O(1) 的多重签名,再广播出去,这使得整个共识过程的消息复杂度从 O(n*n) 骤降到 O(n)。
此外,验证者的选取是通过 PoS 抵押代币的机制完成的,想要成为验证者的节点需要抵押一定数量的代币才有权参与共识。PoS 相比于 PoW 有节能高效的特点,在这点上,基于 PoS 的 Harmony 要比基于 PoW 的 Zilliqa 具有更多优势。抵押代币越多的节点,被选为领导者的几率越大,但恰恰因为抵押代币越多,他们才不会轻易作恶,因为一旦被网络检查到,他们的抵押代币将会被全部没收。
Distributed Randomness Generation/ 分布式随机数生成
分片区块链系统通常需要一个随机的节点分配过程,目的是避免单一分片受到攻击。这就需要生成一个随机数来实现随机的分片过程。随机数本身需要具有完全不可预测,不可干扰的特性,这样恶意节点就无法知道它将被分配到哪个分片。此外,这个随机数的产生过程还需要快速并且可验证。
在这个问题上,我们先看看 Harmony 白皮书里提到的其他几个分片项目方案的做法。项目 Omniledger 采用的分布式随机数产生协议叫 RandHound,协议中会把所有参与的节点划分成若干组,我们以 c 代表组数。这个协议的弱点在于它的复杂度为 O(n_c_c),对于节点众多的区块链系统来说,如此高的复杂度会使协议速度极慢。RapidChain 作为比 Omniledger 更新的分片项目设计,采用了基于 Verifiable Secret Sharing(VSS) 的分布式随机数产生协议。虽然这个协议比 RandHound 快很多,但它并不安全,容易受到攻击者的干扰和阻碍。大家熟知的项目 Algorand 用到了 Verifiable Random Function(VRF) 作为随机数,虽然它是基于密码学里重要的技术,但它不是分布式的协议,任何单一节点都可以独自完成随机数过程。最后以太坊 2.0 采用了 Verifiable Delay Function(VDF) 的最新技术,可以大大提高分布式随机数协议的安全性。
_基于 VRF 和 VDF 的安全随机数生成协议 _
正因为看到了以上几种路径的缺点,Harmony 的分布式随机数产生协议巧妙地结合了 VRF (可验证随机函数)+和 VDF (可验证延迟函数)的密码学特性。在这一协议里,所有验证者分别利用 VRF 计算自己的随机数,并发给领导者。领导者收集一定数量的 VRF 随机数结果,将他们合并之后,把结果进行 VDF 计算,最后产生的结果作为最终的随机数。这样的过程保证了恶意节点无法提前预测或干扰随机数的结果,并且整个过程复杂度为 O(n),可以在短时间内完成最终随机数的生成。
Kademlia Cross-shard Communication/ 基于 Kademlia 协议的跨片通信
对基于分片的区块链系统来说,尤为重要的一点在于如何处理跨片交易。Zilliqa 依赖于它的主链来进行跨片间的交易处理。Omniledger 的跨片交易需要靠用户在片间传递消息。RapidChain 依靠片内节点的互相通信来实现跨片交易。Harmony 采用了类似于 RapidChain 的设计,利用片内节点自行相互通信,但不止如此,Harmony 还引入了 Kademlia 路由协议,这让本来为 O(n) 的通信复杂度降低为 O(log(n)),大大减小了跨片交易的网络开销。
在 Kademlia 路由协议中,每个节点维护一个记录到其他分片距离的路由表。这个距离是根据分片 ID 的不同计算得到的。当一个分片内的节点需要发消息给另一个分片,他不会盲目地广播这个消息给全网,而是根据路由表发给离目的地距离最短的分片的节点。有了这个高效的路由协议,消息只会经过 O(log(n)) 的分片就能抵达目标分片,而无需涉及所有 O(n) 的分片。
Beacon Chain/ 信标链
Harmony 的分片架构包含一条信标链和多条分片链,每条分片链分别存储一部分账本信息。信标链本质上也是一个分片,但其具有两个特殊功能:1、运行分布式随机数协议;2、接受节点的抵押代币。此外,信标链对提升整个系统的安全性也能起到至关重要的作用。在每条分片的新区块被确认后,通过 Kademlia 路由协议,新区块的区块头将被发送给信标链。信标链验证这个区块头的合法性之后,会把它添加到自己的链内,并广播给全网。这样,每个分片都可以轻松维护其他分片的区块头序列,方便对其他分片的信息做 Merkle 验证。
信标链与分片链双层结构
有了信标链的保护,攻击者必须同时攻陷分片链和信标链才有可能进行双花攻击。不止如此,由于信标链在分片链区块头的广播中起到了中枢的作用,所导致的网络开销仅为 O(n) 的量级。设想一下,如果没有信标链的帮助,每个分片都需要分别广播它的区块头,那么总体网络开销将是 O(n*n),这极有可能造成网络阻塞,而通过信标链,Harmony 则巧妙地避免了这个问题。
Parting Thoughts/ 总结
可以看出,Harmony 愿景远大,而一个远大宏大的愿景是成功改变世界的起点开始。在测试网中,Harmony 利用 44,000 个节点跑出了惊人的 118,000TPS 的数据。诚然,好的技术也需要有好的落地场景和市场来检验,Harmony 团队在市场开发这方面也毫不逊色,相信他们会在不久的将来开拓出自己的市场。除此之外更重要的是,Harmony 是一个关注社群建设的项目,他们的开发者一直在 Telegram 和 Discord 上积极回答社群问题,并听取建议。
最后声明,这篇文章的撰写主要基于 Harmony 的白皮书里的内容,强烈推荐读者亲自看看他们的白皮书,可以学到很多分片技术的要点。白皮书地址:https://harmony.one/whitepaper