Harmony的目标是打造一个基于分片的区块链,具备完全扩展性、安全性。它研究了市面上很多的区块链解决方案,提出了自己的工程落地方案。这也是Harmony值得大家关注的地方。
这个是很高的目标,首先具备完全的可扩展性,Harmony的分片不仅包括交易确认、网络通信,也包括区块链状态的分片。其次要保证分片的安全性。Harmony的分片基于DRG(分布式随机生成)过程,这让它具有无法被预测、公平、可验证和可扩展的特性。此外,Harmony采用了PoS机制,而不是PoW机制来选择验证者,它对PBFT共识机制有自己的优化。PoS有一定的门槛,既要保证小的权益质押者能够参与网络和赚取收益,也要防止恶意攻击者在单个分片获得掌控权。Harmony通过采用自适应信息扩散算法(Adaptive Information Dispersal Algorithm)实现分片内和跨分片网络的信息传播。Harmony还采用Kademlia路由实现跨分片交易随着分片数量增加呈对数级扩展。有了分片,还必须保持跨分片交易的一致性,Harmony也支持跨分片交易,支持分片之间的直接通信,通过原子锁定机制确保跨分片交易的一致性。
总言之,Harmony通过对协议层和网络层的优化,试图提供一个可扩展的,同时也是安全和去中心化的区块链,能够支持更多主流的去中心化应用场景,包括游戏、去中心化交易所、IoT等。这是一个目标远大的愿景。
项目愿景
目前,许多新的区块链项目正试图提高交易处理速度(吞吐量),但像EOS和TRON中的dPoS,Quarkchain中的Rootchain等新解决方案都必须牺牲部分关键要素,譬如去中心化和安全性,才能显著提升性能。
这样的系统尽管运行过程十分迅速,但只能算是半中心化的系统,丧失了区块链的核心理念——去中心化。
分片作为区块链扩容的解决方案,可显著提升网络性能且不损失安全性和去中心化。
Harmony通过在区块链中引入状态分片来解决区块链扩容问题——由于每个节点只需运行和存储一部分区块链数据就可以完成交易,交易处理工作量被分摊,由此大大提高了区块本身的可扩展性。
项目亮点
扩展问题是目前区块链行业最受关注的问题之一。谁率先解决这个问题,谁将成为行业的引领者。当然,这里的前提是在兼顾安全和去中心化两个属性的前提下,如果以牺牲这两个关键属性来实现突破,这只是低层级的突破,或者是走向了不同的发展路径。
在兼顾安全和去中心化前提下,分片是区块链扩展的最重要的路径之一。Harmony探索的重点就在于此,尽管目前有其他的分片区块链项目,还有以太坊2.0,也有跨链的项目,Harmony如果能在分片的探索路上能够比其他项目的工程落地更扎实,那么它就有机会在竞争中获得先机。
当然,Harmony团队选择的是一条难的路,需要很多的努力,也有非常强劲的竞争者。据Harmony团队向蓝狐笔记介绍,项目已完成1800万美元融资,投资人有来自硅谷、澳大利亚、香港、新加坡的基金,有了一个很好的开始。
从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的共识验证者都是基于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) , 比有些项目在速度上至少快一个数量级。
基于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将使区块链状态本身尽可能小。