區(qū)塊鏈的性能問題直接影響到它走向主流人群的步伐。比特幣tps大約為7個左右,這讓它目前很難達(dá)成當(dāng)初的點(diǎn)對點(diǎn)支付系統(tǒng)的目標(biāo)。以太坊tps大約為15個左右,也無法成為運(yùn)行DApp的“世界計算機(jī)”。這導(dǎo)致比特幣和以太坊都越來越走向性能要求沒那么高的價值存儲和去中心化金融方向。
如果區(qū)塊鏈要達(dá)成去中心化網(wǎng)絡(luò)的目標(biāo),構(gòu)建一個去中介化的應(yīng)用生態(tài),也就是實(shí)現(xiàn)web3.0的愿景,其中一個無法逃避的最重要的問題是在兼顧其安全和去中心化的情況下,達(dá)到一定規(guī)模的性能,能夠?qū)崿F(xiàn)核心行為鏈上運(yùn)行。
Harmony的堅守與改進(jìn)
為了實(shí)現(xiàn)區(qū)塊鏈性能上的突破,各種不同項目絞盡腦汁,從各個層面和維度進(jìn)行改進(jìn)。從共識機(jī)制、分片、layer2、子鏈、跨鏈等角度進(jìn)行擴(kuò)展。共識機(jī)制從PoW轉(zhuǎn)為PoS,有的項目,甚至為了實(shí)現(xiàn)更高的性能,選擇部分犧牲去中心化的程度,比如DPoS機(jī)制;也有從不同的數(shù)據(jù)結(jié)構(gòu)上著手,例如DAG、Holochain等??傊?,就是各顯神通,從大的視野看,這些實(shí)踐,對于區(qū)塊鏈發(fā)展都是前行的探索,能給整個行業(yè)帶來實(shí)踐啟示和可能進(jìn)展。
目前看,為了兼顧安全和去中心化,分片是其中最重要的突破方向之一。分片就像高速公路的收費(fèi)站,原來只有一個收費(fèi)通道,都得排隊,吞吐量小。如果開放了更多的收費(fèi)通道,其處理能力也會隨之線性增長。分片對于公鏈的性能提升是顯而易見的。
當(dāng)然分片也是技術(shù)要求很高的解決方案,這里有一些難點(diǎn)需要處理。比如分片安全、跨分片交易、網(wǎng)絡(luò)通信等。有些項目在分片過程中因?yàn)槠湟蕾嘝oW作為隨機(jī)生成的機(jī)制容易受到單分片接管攻擊,有的分片項目不劃分區(qū)塊鏈數(shù)據(jù)存儲,可能會影響部分機(jī)器參與網(wǎng)絡(luò),影響去中心化的程度。
那么,Harmony怎么看待這個問題?它如何來解決區(qū)塊鏈的性能問題?
Harmony的目標(biāo)是打造一個基于分片的區(qū)塊鏈,具備完全擴(kuò)展性、安全性。它研究了市面上很多的區(qū)塊鏈解決方案,提出了自己的工程落地方案。這也是Harmony值得大家關(guān)注的地方。
這個是很高的目標(biāo),首先具備完全的可擴(kuò)展性,Harmony的分片不僅包括交易確認(rèn)、網(wǎng)絡(luò)通信,也包括區(qū)塊鏈狀態(tài)的分片。其次要保證分片的安全性。Harmony的分片基于DRG(分布式隨機(jī)生成)過程,這讓它具有無法被預(yù)測、公平、可驗(yàn)證和可擴(kuò)展的特性。此外,Harmony采用了PoS機(jī)制,而不是PoW機(jī)制來選擇驗(yàn)證者,它對PBFT共識機(jī)制有自己的優(yōu)化。PoS有一定的門檻,既要保證小的權(quán)益質(zhì)押者能夠參與網(wǎng)絡(luò)和賺取收益,也要防止惡意攻擊者在單個分片獲得掌控權(quán)。Harmony通過采用自適應(yīng)信息擴(kuò)散算法(Adaptive Information Dispersal Algorithm)實(shí)現(xiàn)分片內(nèi)和跨分片網(wǎng)絡(luò)的信息傳播。Harmony還采用Kademlia路由實(shí)現(xiàn)跨分片交易隨著分片數(shù)量增加呈對數(shù)級擴(kuò)展。有了分片,還必須保持跨分片交易的一致性,Harmony也支持跨分片交易,支持分片之間的直接通信,通過原子鎖定機(jī)制確??绶制灰椎囊恢滦?。
總言之,Harmony通過對協(xié)議層和網(wǎng)絡(luò)層的優(yōu)化,試圖提供一個可擴(kuò)展的,同時也是安全和去中心化的區(qū)塊鏈,能夠支持更多主流的去中心化應(yīng)用場景,包括游戲、去中心化交易所、IoT等。這是一個目標(biāo)遠(yuǎn)大的愿景。
具體來說,Harmony在哪些特色值得關(guān)注?Harmony從安全和可擴(kuò)展性上都有哪些落地的考量?
可擴(kuò)展的FBFT共識機(jī)制
Harmony沒有采用PoW,而是采用PoS機(jī)制,用戶通過質(zhì)押代幣獲得生產(chǎn)區(qū)塊的權(quán)利及獎勵。同時,Harmony在區(qū)塊的生產(chǎn)和驗(yàn)證過程中,采用FBPT的機(jī)制。在說明什么是FBFT之前,我們知道PBFT是實(shí)用拜占庭容錯。由于PBFT有一個驗(yàn)證者需要把其投票廣播給其他驗(yàn)證人的機(jī)制,這使得PBFT在通信復(fù)雜度上極大增加,導(dǎo)致系統(tǒng)如果節(jié)點(diǎn)達(dá)到幾百上千個時,區(qū)塊鏈很難擴(kuò)展。
針對PBFT難以擴(kuò)展的問題,F(xiàn)BFT進(jìn)行了優(yōu)化,F(xiàn)BFT在通信復(fù)雜度方面可以實(shí)現(xiàn)線性擴(kuò)展。具體來說,怎么實(shí)現(xiàn)?FBFT機(jī)制中,它也有領(lǐng)導(dǎo)者和驗(yàn)證者的角色,并不要求所有驗(yàn)證者廣播他們的投票,領(lǐng)導(dǎo)者運(yùn)行一個多重簽名的簽名過程來收集驗(yàn)證者的投票,這個多簽的大小是O(1),然后廣播投票。這意味每個驗(yàn)證者只需接收一個多重簽名,將通信的復(fù)雜度從O(n^2)減少到O(n)。
Schnorr簽名機(jī)制可以實(shí)現(xiàn)恒定大小的多重簽名聚合,并在驗(yàn)證者之間形成多播樹以方便消息傳遞,但是schnorr多重簽名要求秘密承諾輪次,會導(dǎo)致單個多重簽名兩次往返的問題,F(xiàn)BFT則采用了BLS(Boneh-Lynn- Shacham)多簽方案來優(yōu)化這個問題,實(shí)現(xiàn)只要求一次往返,由此,F(xiàn)BFT比普通采用Schonorr簽名機(jī)制的BFT要快50%。最后,Harmony還采用RaptorQ噴泉碼來加速區(qū)塊廣播過程。
需要注意的一點(diǎn)是,所有Harmony的共識驗(yàn)證者都是基于PoS機(jī)制選出來的。有更多投票份額的驗(yàn)證者比其他人有更多的選票,而不是一次簽名一票。這也意味者,領(lǐng)導(dǎo)者等待的不是2f+1的驗(yàn)證者簽名,而是2f+1的驗(yàn)證者的投票權(quán)份額。
融合VRF和VDF的隨機(jī)算法
對于區(qū)塊鏈來說,要快速要擴(kuò)展,比如上述的FBFT能夠?qū)崿F(xiàn)更快速的交易確認(rèn),但安全永遠(yuǎn)是最重要的。在驗(yàn)證區(qū)塊的過程中,保持隨機(jī)性是安全的重中之重。
好的隨機(jī)算法必須同時保證不可預(yù)測、可驗(yàn)證、一視同仁、以及可擴(kuò)展。有的協(xié)議可以實(shí)現(xiàn)不可預(yù)測、一視同仁和可驗(yàn)證,但擴(kuò)展性上較弱,例如RandHound協(xié)議。它們有各自的有點(diǎn)和缺點(diǎn)。
Harmony提出一種隨機(jī)生成的算法,它融合了VRF和VDF兩種技術(shù)。VRF是可驗(yàn)證隨機(jī)函數(shù)(Verifiable Random Function),VDF是可驗(yàn)證延遲函數(shù)(Verifiable Delay Function)。Algorand利用基于VRF(可驗(yàn)證隨機(jī)函數(shù))的加密分類來選擇共識驗(yàn)證組;以太坊2.0提出VDF(可驗(yàn)證延遲函數(shù))用于延遲實(shí)際隨機(jī)數(shù)的揭示,防止最后揭示者的攻擊。
由于有VDF,領(lǐng)導(dǎo)者在 pRnd提交到區(qū)塊鏈之前,無法知道實(shí)際的最終隨機(jī)數(shù)。由于使用VDF來計算Rnd,pRnd已經(jīng)在前一個區(qū)塊中提交,所以領(lǐng)導(dǎo)者就無法操縱它。如果領(lǐng)導(dǎo)者不提交pRnd 停止協(xié)議,F(xiàn)BFT有一個超時機(jī)制可以切換領(lǐng)導(dǎo)者并重新啟動協(xié)議。此外,Harmony所采用的DRG協(xié)議,其協(xié)議的復(fù)雜度是O(n) , 比有些項目在速度上至少快一個數(shù)量級。
基于PoS的分片
不管是PoW還是PoS都要預(yù)防女巫攻擊。PoW鏈通過算力來進(jìn)行身份證明,并由此獲得生產(chǎn)區(qū)塊的權(quán)利。而Harmony采用的是PoS機(jī)制,PoS使用驗(yàn)證者權(quán)益代幣質(zhì)押來進(jìn)行證明。要想成為Harmony的驗(yàn)證者,必須首先質(zhì)押一定的代幣。所質(zhì)押的代幣越多,所能獲得的驗(yàn)證者投票份額也就越多。每個投票份額對應(yīng)BFT共識的一票。
權(quán)益質(zhì)押者獲得跟其所質(zhì)押的代幣成正比的投票份額。該投票份額會隨機(jī)分配到分片。成為分片驗(yàn)證者的權(quán)益質(zhì)押人在分片中獲得相應(yīng)的投票權(quán)。
Harmony的共識和分片過程中,有一個周期(Epochs)的概念。周期是預(yù)定的時間間隔,在這個期間內(nèi),分片結(jié)構(gòu)是固定的,每個分片持續(xù)地與同一組驗(yàn)證者運(yùn)行共識。
每個周期的開始,會由DRG協(xié)議產(chǎn)生隨機(jī)數(shù),基于隨機(jī)數(shù)來確定分片結(jié)構(gòu)。驗(yàn)證者如果想要驗(yàn)證某個時期內(nèi)的交易,必須在前一時期質(zhì)押其代幣。權(quán)益質(zhì)押的截止時間是在隨機(jī)數(shù)原像 pRnd被提交到區(qū)塊鏈之前。
在每個新的驗(yàn)證周期開始,新驗(yàn)證者的投票份額都會隨機(jī)分給分片。新驗(yàn)證者加入分片,其中的投票份額會得到分配。分片的共識達(dá)成至少需要有2f+1的投票份額的區(qū)塊簽名。
為了保證單個分片的安全,Harmony采用了自適應(yīng)閥值PoS,它會以自適應(yīng)的方式來通過算法調(diào)整投票份額的價格,并把個體投票份額分配給分片,而不是單個驗(yàn)證者。
為了預(yù)防大規(guī)模質(zhì)押代幣攻擊,Harmony不是通過驗(yàn)證者進(jìn)行分片,而是通過投票份額進(jìn)行分片,防止大量持幣驗(yàn)證者攻占單一分片。如果單個驗(yàn)證者擁有分配到不同分片的投票份額,則它可以被分配到多個分片。分片的領(lǐng)導(dǎo)者被確定為在某組中擁有第一個投票份額的驗(yàn)證者。
同時投票份額較小,以至于惡意攻擊者無法在單個分片中聚集力量。Harmony經(jīng)過測算認(rèn)為,一旦超過600個投票份額,可以保證分片的高安全性。
從經(jīng)濟(jì)利益來考量,擁有更多質(zhì)押代幣的驗(yàn)證者有更多機(jī)會被選為領(lǐng)導(dǎo)者。如果發(fā)生惡意行為,質(zhì)押了代幣的驗(yàn)證者擔(dān)心其利益會被消減,也由此會保證網(wǎng)絡(luò)的安全。
除了以上的機(jī)制之外,Harmony還采用一種重新洗牌的分片方案來提高其安全性。因?yàn)槿绻制3纸Y(jié)構(gòu)固定,惡意攻擊者仍有機(jī)會實(shí)施攻擊。比如實(shí)施靜態(tài)循環(huán)攻擊、慢適應(yīng)攻擊或完全適應(yīng)攻擊等。Harmony采用基于Cuckoo規(guī)則的重新分片機(jī)制來解決這些問題。在一個驗(yàn)證周期結(jié)束,其中撤回質(zhì)押的驗(yàn)證者會被逐出該網(wǎng)絡(luò),保留質(zhì)押的人會留下來。
快速的狀態(tài)同步
一個周期的首個區(qū)塊包含上一個周期首個區(qū)塊的哈希鏈接。這允許新節(jié)點(diǎn)的狀態(tài)快速同步,其中它們可以依賴灰色區(qū)塊來快速驗(yàn)證當(dāng)前的狀態(tài)。
假如說要驗(yàn)證分片交易,需要下載整個區(qū)塊鏈歷史,那么時間上太過于漫長,如果你同步過以太坊區(qū)塊鏈歷史就知道了,可能需要好幾天的時間。而Harmony只須下載一個周期時間窗口內(nèi)的當(dāng)前狀態(tài)。
在Harmony,加入分片的新驗(yàn)證者首先下載該分片的當(dāng)前狀態(tài)tries。新節(jié)點(diǎn)下載歷史區(qū)塊頭,并通過檢查其簽名來驗(yàn)證區(qū)塊頭。只要有從當(dāng)前狀態(tài)返回到創(chuàng)世區(qū)塊的加密蹤跡,如哈希指針和簽名,該分片狀態(tài)就有效。
同時,為了減少簽名驗(yàn)證計算所帶來費(fèi)用和時間成本,Harmony的每個周期的首個區(qū)塊包含額外的哈希指針指向上個周期的首個區(qū)塊。通過這種方式,新節(jié)點(diǎn)在追蹤其到創(chuàng)世區(qū)塊的哈希指針時可以跳過一個周期內(nèi)的其他區(qū)塊,由此加快對當(dāng)前區(qū)塊鏈狀態(tài)的驗(yàn)證。最后,為了進(jìn)一步優(yōu)化狀態(tài)同步過程,Harmony將使區(qū)塊鏈狀態(tài)本身盡可能小。
Harmony的信標(biāo)鏈
Harmony的信標(biāo)鏈也是一種分片,不過它是特殊的分片鏈。除了處理交易之外,信標(biāo)鏈還有兩件事要做:一是生成隨機(jī)數(shù);二是接收權(quán)益質(zhì)押的代幣。這點(diǎn)跟以太坊的信標(biāo)鏈有類似之處。
信標(biāo)鏈會包括來自每個分片鏈的區(qū)塊頭。在新區(qū)塊提交到分片鏈后,它的區(qū)塊頭將被發(fā)送到信標(biāo)鏈。而信標(biāo)鏈會通過如下方式檢查其區(qū)塊頭的有效性:一是前一個區(qū)塊的哈希;二是區(qū)塊的多重簽名的簽名者必須是該分片的正確驗(yàn)證者。
之所以把分片鏈的區(qū)塊頭添加進(jìn)入信標(biāo)鏈,主要是從安全和可擴(kuò)展的角度來考慮。一是這樣可以增加攻擊單個分片的難度,因?yàn)楣粽弑仨毻瑫r破壞分片鏈和信標(biāo)鏈才能實(shí)施攻擊。二是這樣可以降低在分片中廣播區(qū)塊頭的網(wǎng)絡(luò)成本。如果讓每個分片都單獨(dú)廣播其區(qū)塊頭,將會有O(N^2 )網(wǎng)絡(luò)通信,而使用信標(biāo)鏈作為中繼,復(fù)雜性降低到O(N )。
最后,在信標(biāo)鏈上提交的區(qū)塊頭還會被廣播到整個網(wǎng)絡(luò)。每個分片會保留所有其他分片的有效的區(qū)塊頭。一是可用來檢查來自其他分片交易的有效性,二是也可以起到簡單的支付驗(yàn)證作用。最終是有利于增強(qiáng)分片鏈安全性和分片鏈狀態(tài)的一致性。
Harmony的狀態(tài)分片
有的區(qū)塊鏈分片項目只有網(wǎng)絡(luò)分片和交易分片,而Harmony還包括了區(qū)塊鏈的狀態(tài)分片。
Harmony的狀態(tài)分片采用于基于賬戶的數(shù)據(jù)模型(不同于UTXO數(shù)據(jù)模型)。每個分片鏈包含自己的賬戶狀態(tài),已有代幣在所有分片中分布。用戶賬戶可以在不同的分片中有多個余額,例如,777個代幣在分片A中,277個代幣在分片B中。用戶可以通過跨分片交易轉(zhuǎn)移其在不同分片中的代幣。
除了普通的用戶賬戶之外,還有智能合約賬戶。智能合約賬戶僅限于創(chuàng)建合約的特定分片。
假設(shè)分片A的吞吐量無法滿足某一個游戲類DApp的業(yè)務(wù)需求,該游戲應(yīng)用開發(fā)者可以在不同分片中實(shí)例化同一智能合約,可以實(shí)現(xiàn)每個實(shí)例處理部分需求。不過,同一智能合約的不同實(shí)例不共享相同狀態(tài),可以通過跨分片通信跟其他實(shí)例進(jìn)行通信。
基于Kademlia的路由方案
區(qū)塊鏈的性能提升,還要面臨一個重要的受限因素就是現(xiàn)實(shí)世界的網(wǎng)絡(luò)通信。
Harmony采用Kademlia作為跨分片信息傳遞的路由機(jī)制,使用Kademlia路由協(xié)議可以減少網(wǎng)絡(luò)通信的復(fù)雜度。
Harmony網(wǎng)絡(luò)中的每個節(jié)點(diǎn)都維護(hù)一個包含來自不同分片的節(jié)點(diǎn)路由表。當(dāng)一個分片A的消息要發(fā)送到分片B,分片A的節(jié)點(diǎn)首先會查看路由表,然后把信息發(fā)給距離最近的分片ID的節(jié)點(diǎn)。
使用基于Kademlia路由,在抵達(dá)目標(biāo)分片之前消息僅穿過O(logN)節(jié)點(diǎn)。跟傳統(tǒng)的八卦網(wǎng)絡(luò)廣播相比,Kademlia路由機(jī)制可以大大減少分片區(qū)塊鏈的整體網(wǎng)絡(luò)負(fù)載。
此外,Harmony還使用糾刪碼進(jìn)行廣播,可以顯著減少發(fā)送者的網(wǎng)絡(luò)負(fù)載。在Harmony中,發(fā)送者首先用糾刪碼對消息進(jìn)行編碼,然后將編碼的消息塊發(fā)送給鄰居。這會讓發(fā)送者的網(wǎng)絡(luò)負(fù)載減少到O(M + e) ,其中e是糾刪碼的大小,它通常比原始消息M要小。
此外,Harmony想要通過用RaptorQ噴泉碼來替換原始的Reed-Solomon糾刪碼來提高IDA的穩(wěn)健性。
最后考慮到住宅節(jié)點(diǎn)和節(jié)點(diǎn)IP地址改變的現(xiàn)實(shí)問題,Harmony也作出應(yīng)對解決方案。住宅網(wǎng)絡(luò)的P2P節(jié)點(diǎn)會產(chǎn)生獨(dú)特問題:除非由其住宅互聯(lián)網(wǎng)路由器調(diào)解,否則它們無法從外部抵達(dá),需要用NAT(網(wǎng)絡(luò)地址轉(zhuǎn)換)的技術(shù)。這些路由器對進(jìn)入流量的支持還各不相同,需要開發(fā)不同的方法來支持不同類型的路由器。Harmony的P2P層試圖檢測節(jié)點(diǎn)運(yùn)行的NAT(網(wǎng)絡(luò)地址轉(zhuǎn)換)機(jī)制,并且采用對應(yīng)的解決機(jī)制,如STUN、TURN、IGDP等。
對于節(jié)點(diǎn)會改變他們的IP地址,比如筆記本電腦會經(jīng)常在不同的wifi網(wǎng)絡(luò)之間跳躍,IP地址每次都會改變。為了解決這個問題,Harmony的網(wǎng)絡(luò)層使用行業(yè)標(biāo)準(zhǔn)的HIPv2(Host Identity Protocol Version 2)引入了節(jié)點(diǎn)身份(節(jié)點(diǎn)擁有的加密密鑰對)和節(jié)點(diǎn)定位器(可以抵達(dá)節(jié)點(diǎn)的網(wǎng)絡(luò)/傳輸層定位器)之間的清晰分離。
Harmony的懲罰機(jī)制
Harmony是采用PoS的機(jī)制,除了在區(qū)塊成功生成之后,將新代幣獎勵給所有驗(yàn)證者之外,也有懲罰機(jī)制,防止惡意行為者的不當(dāng)行為。
Harmony對于權(quán)益質(zhì)押者的不當(dāng)行為,會有消減代幣的懲罰。例如,驗(yàn)證者簽名了不誠實(shí)的區(qū)塊,領(lǐng)導(dǎo)者沒能完成共識流程并觸發(fā)領(lǐng)導(dǎo)者更改流程等,這些行為都會被消減一定數(shù)量的質(zhì)押代幣。
不當(dāng)行為可以通過兩個簽名區(qū)塊的相互沖突發(fā)現(xiàn)。任何驗(yàn)證者都可以提交交易證明其他驗(yàn)證者的不當(dāng)行為,如果經(jīng)過驗(yàn)證,被消減的代幣會獎勵給證明人。
結(jié)語
擴(kuò)展問題是目前區(qū)塊鏈行業(yè)最受關(guān)注的問題之一。誰率先解決這個問題,誰將成為行業(yè)的引領(lǐng)者。當(dāng)然,這里的前提是在兼顧安全和去中心化兩個屬性的前提下,如果以犧牲這兩個關(guān)鍵屬性來實(shí)現(xiàn)突破,這只是低層級的突破,或者是走向了不同的發(fā)展路徑。
在兼顧安全和去中心化前提下,分片是區(qū)塊鏈擴(kuò)展的最重要的路徑之一。Harmony探索的重點(diǎn)就在于此,盡管目前有其他的分片區(qū)塊鏈項目,還有以太坊2.0,也有跨鏈的項目,Harmony如果能在分片的探索路上能夠比其他項目的工程落地更扎實(shí),那么它就有機(jī)會在競爭中獲得先機(jī)。
當(dāng)然,Harmony團(tuán)隊選擇的是一條難的路,需要很多的努力,也有非常強(qiáng)勁的競爭者。據(jù)Harmony團(tuán)隊向藍(lán)狐筆記介紹,項目已完成1800萬美元融資,投資人有來自硅谷、澳大利亞、香港、新加坡的基金,有了一個很好的開始。
從Harmony的白皮書可以看出,團(tuán)隊在技術(shù)思路上清晰,對于分片工程落地要面對的問題也有深入思考,團(tuán)隊以研發(fā)人員為主,主要來自于微軟、谷歌、蘋果公司的背景。期待Harmony在這場區(qū)塊鏈擴(kuò)展的探索路上能夠率先作出成績!
評論
查看更多