Harmony区块链的分片扩展之路

(晨光照耀原野,梵高)

区块链的性能问题直接影响到它走向主流人群的步伐。比特币tps大约为7个左右,这让它目前很难达成当初的点对点支付系统的目标。以太坊tps大约为15个左右,也无法成为运行DApp的“世界计算机”。这导致比特币和以太坊都越来越走向性能要求没那么高的价值存储和去中心化金融方向。

如果区块链要达成去中心化网络的目标,构建一个去中介化的应用生态,也就是实现web3.0的愿景,其中一个无法逃避的最重要的问题是在兼顾其安全和去中心化的情况下,达到一定规模的性能,能够实现核心行为链上运行。

Harmony的坚守与 改进

为了实现区块链性能上的突破,各种不同项目绞尽脑汁,从各个层面和维度进行改进。从共识机制、分片、layer2、子链、跨链等角度进行扩展。共识机制从PoW转为PoS,有的项目,甚至为了实现更高的性能,选择部分牺牲去中心化的程度,比如DPoS机制;也有从不同的数据结构上着手,例如DAG、Holochain等。总之,就是各显神通,从大的视野看,这些实践,对于区块链发展都是前行的探索,能给整个行业带来实践启示和可能进展。

目前看,为了兼顾安全和去中心化,分片是其中最重要的突破方向之一。分片就像高速公路的收费站,原来只有一个收费通道,都得排队,吞吐量小。如果开放了更多的收费通道,其处理能力也会随之线性增长。分片对于公链的性能提升是显而易见的。

当然分片也是技术要求很高的解决方案,这里有一些难点需要处理。比如分片安全、跨分片交易、网络通信等。有些项目在分片过程中因为其依赖PoW作为随机生成的机制容易受到单分片接管攻击,有的分片项目不划分区块链数据存储,可能会影响部分机器参与网络,影响去中心化的程度。

那么,Harmony怎么看待这个问题?它如何来解决区块链的性能问题?

Harmony的目标是打造一个基于分片的区块链,具备完全扩展性、安全性。它研究了市面上很多的区块链解决方案,提出了自己的工程落地方案。这也是Harmony值得大家关注的地方。

这个是很高的目标,首先具备完全的可扩展性,Harmony的分片不仅包括交易确认、网络通信,也包括区块链状态的分片。其次要保证分片的安全性。Harmony的分片基于DRG(分布式随机生成)过程,这让它具有无法被预测、公平、可验证和可扩展的特性。此外,Harmony采用了PoS机制,而不是PoW机制来选择验证者,它对PBFT共识机制有自己的优化。PoS有一定的门槛,既要保证小的权益质押者能够参与网络和赚取收益,也要防止恶意攻击者在单个分片获得掌控权。Harmony通过采用自适应信息扩散算法(Adaptive Information Dispersal Algorithm)实现分片内和跨分片网络的信息传播。Harmony还采用Kademlia路由实现跨分片交易随着分片数量增加呈对数级扩展。有了分片,还必须保持跨分片交易的一致性,Harmony也支持跨分片交易,支持分片之间的直接通信,通过原子锁定机制确保跨分片交易的一致性。

总言之,Harmony通过对协议层和网络层的优化,试图提供一个可扩展的,同时也是安全和去中心化的区块链,能够支持更多主流的去中心化应用场景,包括游戏、去中心化交易所、IoT等。这是一个目标远大的愿景。

具体来说,Harmony在哪些特色值得关注?Harmony从安全和可扩展性上都有哪些落地的考量?

可扩展的 FBFT共识机制

Harmony没有采用PoW,而是采用PoS机制,用户通过质押代币获得生产区块的权利及奖励。同时,Harmony在区块的生产和验证过程中,采用FBPT的机制。在说明什么是FBFT之前,我们知道PBFT是实用拜占庭容错。由于PBFT有一个验证者需要把其投票广播给其他验证人的机制,这使得PBFT在通信复杂度上极大增加,导致系统如果节点达到几百上千个时,区块链很难扩展。

针对PBFT难以扩展的问题,FBFT进行了优化,FBFT在通信复杂度方面可以实现线性扩展。具体来说,怎么实现?FBFT机制中,它也有领导者和验证者的角色,并不要求所有验证者广播他们的投票,领导者运行一个多重签名的签名过程来收集验证者的投票,这个多签的大小是O(1),然后广播投票。这意味每个验证者只需接收一个多重签名,将通信的复杂度从O(n^2)减少到O(n)。

Schnorr签名机制可以实现恒定大小的多重签名聚合,并在验证者之间形成多播树以方便消息传递,但是schnorr多重签名要求秘密承诺轮次,会导致单个多重签名两次往返的问题,FBFT则采用了BLS( Boneh-Lynn- Shacham )多签方案来优化这个问题,实现只要求一次往返,由此,FBFT比普通采用Schonorr签名机制的BFT要快50%。最后,Harmony还采用RaptorQ喷泉码来加速区块广播过程。

Harmony的FBFT运行图

需要注意的一点是,所有Harmony的共识验证者都是基于PoS机制选出来的。有更多投票份额的验证者比其他人有更多的选票,而不是一次签名一票。这也意味者,领导者等待的不是2f+1的验证者签名,而是2f+1的验证者的投票权份额。

融合VRF和VDF的随机算法

对于区块链来说,要快速要扩展,比如上述的FBFT能够实现更快速的交易确认,但安全永远是最重要的。在验证区块的过程中,保持随机性是安全的重中之重。

好的随机算法必须同时保证不可预测、可验证、一视同仁、以及可扩展。有的协议可以实现不可预测、一视同仁和可验证,但扩展性上较弱,例如RandHound协议。它们有各自的有点和缺点。

Harmony提出一种随机生成的算法,它融合了VRF和VDF两种技术。VRF是可验证随机函数(Verifiable Random Function),VDF是可验证延迟函数(Verifiable Delay Function)。Algorand利用基于VRF(可验证随机函数)的加密分类来选择共识验证组;以太坊2.0提出VDF(可验证延迟函数)用于延迟实际随机数的揭示,防止最后揭示者的攻击。

由于有VDF,领导者在 pRnd提交到区块链之前,无法知道实际的最终随机数。由于使用VDF来计算Rnd,pRnd已经在前一个区块中提交,所以领导者就无法操纵它。如果领导者不提交pRnd 停止协议,FBFT有一个超时机制可以切换领导者并重新启动协议。此外,Harmony所采用的DRG协议,其协议的复杂度是O(n) , 比有些项目在速度上至少快一个数量级。

VDF延迟了最终随机性的揭示

基于 PoS 的分片

不管是PoW还是PoS都要预防女巫攻击。PoW链通过算力来进行身份证明,并由此获得生产区块的权利。而Harmony采用的是PoS机制,PoS使用验证者权益代币质押来进行证明。要想成为Harmony的验证者,必须首先质押一定的代币。所质押的代币越多,所能获得的验证者投票份额也就越多。每个投票份额对应BFT共识的一票。

权益质押者获得跟其所质押的代币成正比的投票份额。该投票份额会随机分配到分片。成为分片验证者的权益质押人在分片中获得相应的投票权。

Harmony的共识和分片过程中,有一个周期(Epochs)的概念。周期是预定的时间间隔,在这个期间内,分片结构是固定的,每个分片持续地与同一组验证者运行共识。

每个周期的开始,会由DRG协议产生随机数,基于随机数来确定分片结构。验证者如果想要验证某个时期内的交易,必须在前一时期质押其代币。权益质押的截止时间是在随机数原像 pRnd被提交到区块链之前。

在每个新的验证周期开始,新验证者的投票份额都会随机分给分片。新验证者加入分片,其中的投票份额会得到分配。分片的共识达成至少需要有2f+1的投票份额的区块签名。

为了保证单个分片的安全,Harmony采用了自适应阀值PoS,它会以自适应的方式来通过算法调整投票份额的价格,并把个体投票份额分配给分片,而不是单个验证者。

为了预防大规模质押代币攻击,Harmony不是通过验证者进行分片,而是通过投票份额进行分片,防止大量持币验证者攻占单一分片。如果单个验证者拥有分配到不同分片的投票份额,则它可以被分配到多个分片。分片的领导者被确定为在某组中拥有第一个投票份额的验证者。

同时投票份额较小,以至于恶意攻击者无法在单个分片中聚集力量。Harmony经过测算认为,一旦超过600个投票份额,可以保证分片的高安全性。

从经济利益来考量,拥有更多质押代币的验证者有更多机会被选为领导者。如果发生恶意行为,质押了代币的验证者担心其利益会被消减,也由此会保证网络的安全。

除了以上的机制之外,Harmony还采用一种重新洗牌的分片方案来提高其安全性。因为如果分片保持结构固定,恶意攻击者仍有机会实施攻击。比如实施静态循环攻击、慢适应攻击或完全适应攻击等。Harmony采用基于Cuckoo规则的重新分片机制来解决这些问题。在一个验证周期结束,其中撤回质押的验证者会被逐出该网络,保留质押的人会留下来。

快速的 状态同步

  一个周期的首个区块包含上一个周期首个区块的哈希链接。这允许新节点的状态快速同步,其中它们可以依赖灰色区块来快速验证当前的状态。

假如说要验证分片交易,需要下载整个区块链历史,那么时间上太过于漫长,如果你同步过以太坊区块链历史就知道了,可能需要好几天的时间。而Harmony只须下载一个周期时间窗口内的当前状态。

在Harmony,加入分片的新验证者首先下载该分片的当前状态tries。新节点下载历史区块头,并通过检查其签名来验证区块头。只要有从当前状态返回到创世区块的加密踪迹,如哈希指针和签名,该分片状态就有效。

同时,为了减少签名验证计算所带来费用和时间成本,Harmony的每个周期的首个区块包含额外的哈希指针指向上个周期的首个区块。通过这种方式,新节点在追踪其到创世区块的哈希指针时可以跳过一个周期内的其他区块,由此加快对当前区块链状态的验证。最后,为了进一步优化状态同步过程,Harmony将使区块链状态本身尽可能小。

Harmony的 信标链

Harmony的信标链也是一种分片,不过它是特殊的分片链。除了处理交易之外,信标链还有两件事要做:一是生成随机数;二是接收权益质押的代币。这点跟以太坊的信标链有类似之处。

从信标链区块到分片链区块的哈希链接

信标链会包括来自每个分片链的区块头。在新区块提交到分片链后,它的区块头将被发送到信标链。而信标链会通过如下方式检查其区块头的有效性:一是前一个区块的哈希;二是区块的多重签名的签名者必须是该分片的正确验证者。

之所以把分片链的区块头添加进入信标链,主要是从安全和可扩展的角度来考虑。一是这样可以增加攻击单个分片的难度,因为攻击者必须同时破坏分片链和信标链才能实施攻击。二是这样可以降低在分片中广播区块头的网络成本。如果让每个分片都单独广播其区块头,将会有O(N^2 )网络通信,而使用信标链作为中继,复杂性降低到O(N )。

最后,在信标链上提交的区块头还会被广播到整个网络。每个分片会保留所有其他分片的有效的区块头。一是可用来检查来自其他分片交易的有效性,二是也可以起到简单的支付验证作用。最终是有利于增强分片链安全性和分片链状态的一致性。  

Harmony的 状态分片

有的区块链分片项目只有网络分片和交易分片,而Harmony还包括了区块链的状态分片。

Harmony的状态分片采用于基于账户的数据模型(不同于UTXO数据模型)。每个分片链包含自己的账户状态,已有代币在所有分片中分布。用户账户可以在不同的分片中有多个余额,例如,777个代币在分片A中,277个代币在分片B中。用户可以通过跨分片交易转移其在不同分片中的代币。  

除了普通的用户账户之外,还有智能合约账户。智能合约账户仅限于创建合约的特定分片。

假设分片A的吞吐量无法满足某一个游戏类DApp的业务需求,该游戏应用开发者可以在不同分片中实例化同一智能合约,可以实现每个实例处理部分需求。不过,同一智能合约的不同实例不共享相同状态,可以通过跨分片通信跟其他实例进行通信。

基于Kademlia的路由 方案

区块链的性能提升,还要面临一个重要的受限因素就是现实世界的网络通信。

Harmony采用Kademlia作为跨分片信息传递的路由机制,使用Kademlia路由协议可以减少网络通信的复杂度。

Harmony网络中的每个节点都维护一个包含来自不同分片的节点路由表。当一个分片A的消息要发送到分片B,分片A的节点首先会查看路由表,然后把信息发给距离最近的分片ID的节点。

使用基于Kademlia路由,在抵达目标分片之前消息仅穿过O(logN)节点。跟传统的八卦网络广播相比,Kademlia路由机制可以大大减少分片区块链的整体网络负载。  

此外,Harmony还使用纠删码进行广播,可以显著减少发送者的网络负载。在Harmony中,发送者首先用纠删码对消息进行编码,然后将编码的消息块发送给邻居。这会让发送者的网络负载减少到O(M + e) ,其中e是纠删码的大小,它通常比原始消息M要小。

此外,Harmony想要通过用RaptorQ喷泉码来替换原始的Reed-Solomon纠删码来提高IDA的稳健性。

最后考虑到住宅节点和节点IP地址改变的现实问题,Harmony也作出应对解决方案。住宅网络的P2P节点会产生独特问题:除非由其住宅互联网路由器调解,否则它们无法从外部抵达,需要用NAT(网络地址转换)的技术。这些路由器对进入流量的支持还各不相同,需要开发不同的方法来支持不同类型的路由器。Harmony的P2P层试图检测节点运行的NAT(网络地址转换)机制,并且采用对应的解决机制,如STUN、TURN、IGDP等。

对于节点会改变他们的IP地址,比如笔记本电脑会经常在不同的wifi网络之间跳跃,IP地址每次都会改变。为了解决这个问题,Harmony的网络层使用行业标准的HIPv2(Host Identity Protocol Version 2)引入了节点身份(节点拥有的加密密钥对)和节点定位器(可以抵达节点的网络/传输层定位器)之间的清晰分离。  

Harmony的惩罚机制

Harmony是采用PoS的机制,除了在区块成功生成之后,将新代币奖励给所有验证者之外,也有惩罚机制,防止恶意行为者的不当行为。

Harmony对于权益质押者的不当行为,会有消减代币的惩罚。例如,验证者签名了不诚实的区块,领导者没能完成共识流程并触发领导者更改流程等,这些行为都会被消减一定数量的质押代币。  

不当行为可以通过两个签名区块的相互冲突发现。任何验证者都可以提交交易证明其他验证者的不当行为,如果经过验证,被消减的代币会奖励给证明人。  

结语

扩展问题是目前区块链行业最受关注的问题之一。谁率先解决这个问题,谁将成为行业的引领者。当然,这里的前提是在兼顾安全和去中心化两个属性的前提下,如果以牺牲这两个关键属性来实现突破,这只是低层级的突破,或者是走向了不同的发展路径。

在兼顾安全和去中心化前提下,分片是区块链扩展的最重要的路径之一。Harmony探索的重点就在于此,尽管目前有其他的分片区块链项目,还有以太坊2.0,也有跨链的项目,Harmony如果能在分片的探索路上能够比其他项目的工程落地更扎实,那么它就有机会在竞争中获得先机。  

当然,Harmony团队选择的是一条难的路,需要很多的努力,也有非常强劲的竞争者。据Harmony团队向蓝狐笔记介绍,项目已完成1800万美元融资,投资人有来自硅谷、澳大利亚、香港、新加坡的基金,有了一个很好的开始。

从Harmony的白皮书可以看出,团队在技术思路上清晰,对于分片工程落地要面对的问题也有深入思考,团队以研发人员为主,主要来自于微软、谷歌、苹果公司的背景。期待Harmony在这场区块链扩展的探索路上能够率先作出成绩!