Harmony希望用區(qū)塊鏈以更安全和去中心化的方式去取代現(xiàn)有經(jīng)濟(jì)體系
如今,區(qū)塊鏈革命正與誕生于20世紀(jì)90年代的互聯(lián)網(wǎng)展開較量。Harmony公司的工程師們投入了數(shù)千個(gè)小時(shí)在區(qū)塊鏈研究和開發(fā)上,終極目標(biāo)就是以更安全和去中心化的方式取代現(xiàn)有經(jīng)濟(jì)體系。
然而,盡管區(qū)塊鏈技術(shù)擁有著堪稱巨大的潛力,但比特幣、以太坊和其他大多數(shù)傳統(tǒng)的分布式區(qū)塊鏈網(wǎng)絡(luò)仍受到擴(kuò)容這一根本問題的困擾。
區(qū)塊鏈擴(kuò)容問題決定這一嶄新的技術(shù)世界能否真正變成現(xiàn)實(shí),但可擴(kuò)容本身又的確存在著難以突破的技術(shù)瓶頸,這一瓶頸包括技術(shù)自身的局限性,區(qū)塊大小,響應(yīng)時(shí)間以及費(fèi)用等等。
比特幣的擴(kuò)容問題與它本身技術(shù)的局限性有關(guān)。當(dāng)處理一個(gè)新交易時(shí),每個(gè)節(jié)點(diǎn)都會在賬本記下相應(yīng)信息。如此一來,隨著支付歷史信息的增多,區(qū)塊鏈體積也隨之增加,導(dǎo)致小節(jié)點(diǎn)無法正常運(yùn)行。
另一擴(kuò)容問題則是區(qū)塊的體積。最初,比特幣區(qū)塊鏈中每個(gè)區(qū)塊的容量為1Mb,每個(gè)區(qū)塊大約能存儲2020筆交易信息。隨著比特幣熱度的增加,近年來比特幣的交易數(shù)也成倍增加,導(dǎo)致比特幣網(wǎng)絡(luò)需要10分鐘才能確認(rèn)一個(gè)區(qū)塊,為了驗(yàn)證一筆未確認(rèn)交易,通常需要等待很久。
另外,由于挖礦所需算力的日益增長,交易費(fèi)用自然也水漲船高。
目前,許多新的區(qū)塊鏈項(xiàng)目正試圖提高交易處理速度(吞吐量),但像EOS和TRON中的dPoS,Quarkchain中的Rootchain等新解決方案都必須犧牲部分關(guān)鍵要素,譬如去中心化和安全性,才能顯著提升性能。
這樣的系統(tǒng)盡管運(yùn)行過程十分迅速,但只能算是半中心化的系統(tǒng),喪失了區(qū)塊鏈的核心理念——去中心化。
分片作為區(qū)塊鏈擴(kuò)容的解決方案,可顯著提升網(wǎng)絡(luò)性能且不損失安全性和去中心化。
Harmony通過在區(qū)塊鏈中引入狀態(tài)分片來解決區(qū)塊鏈擴(kuò)容問題——由于每個(gè)節(jié)點(diǎn)只需運(yùn)行和存儲一部分區(qū)塊鏈數(shù)據(jù)就可以完成交易,交易處理工作量被分?jǐn)偅纱舜蟠筇岣吡藚^(qū)塊本身的可擴(kuò)展性。
什么是狀態(tài)分片?假設(shè)有三個(gè)節(jié)點(diǎn)A、B、C和一個(gè)有待驗(yàn)證的數(shù)據(jù)T,相比A、B、C每個(gè)節(jié)點(diǎn)都需要存儲和驗(yàn)證整份數(shù)據(jù)T,狀態(tài)分片則將數(shù)據(jù)T分為三個(gè)部分:T1,T2和T3。之后,A,B和C將分別存儲和驗(yàn)證一個(gè)部分。不難想象,這樣的網(wǎng)絡(luò)運(yùn)行效率會成倍增長。
一個(gè)更簡單的解釋是——如果將美國劃分為不同的州, 雖然每個(gè)州(也就是分片)是美國(Harmony網(wǎng)絡(luò))的一部分,但它們都有自己的特定法律,邊界和人口子集,只是通用一種語言和文化,是整個(gè)國家的一部分。
舉以太坊為例,以太坊網(wǎng)絡(luò)中的所有節(jié)點(diǎn)存儲著區(qū)塊鏈的所有狀態(tài),包括賬戶余額,數(shù)據(jù)和智能合約代碼。然而隨著網(wǎng)絡(luò)規(guī)模不斷增加,gas費(fèi)用越來越高,交易確認(rèn)時(shí)間也越來越長,導(dǎo)致以太坊的實(shí)用價(jià)值大打折扣。
以太坊的性能上限是一臺計(jì)算機(jī)的處理速度
以太坊的性能無法隨著節(jié)點(diǎn)數(shù)量的增加而增加,相反,甚至還略有降低。分片則提供了突破這一技術(shù)瓶頸的捷徑:將子節(jié)點(diǎn)組成分片,每個(gè)分片分別處理不同交易,這樣系統(tǒng)就能同時(shí)處理許多交易,吞吐量自然顯著提高。
Zilliqa采用了網(wǎng)絡(luò)分片的方案,這一方案允許將網(wǎng)絡(luò)劃分為更小的節(jié)點(diǎn)群,每個(gè)節(jié)點(diǎn)群都可稱之為分片。簡單來說,假設(shè)一個(gè)有1000個(gè)節(jié)點(diǎn)的網(wǎng)絡(luò),將網(wǎng)絡(luò)劃分為10個(gè)分片,每個(gè)分片由100個(gè)節(jié)點(diǎn)組成,如果每個(gè)分片每秒能處理10筆交易,那么所有分片加在一起可以每秒處理100筆交易。
但在Zilliqa中,每個(gè)節(jié)點(diǎn)必須保存整個(gè)區(qū)塊鏈的狀態(tài)才能成功處理交易,當(dāng)區(qū)塊鏈體積逐漸增大,要保存完整的賬本會變得越來越困難,對節(jié)點(diǎn)設(shè)備的要求會快速提高,交易成本也隨之增加。
因此,Harmony使用的狀態(tài)分片無疑提供了一個(gè)更好的選擇——每個(gè)分片保存一部分區(qū)塊狀態(tài)。
Harmony如何避免1%攻擊:
雖然分片技術(shù)顯著地減少了交易完成時(shí)間,提高了交易處理量,但現(xiàn)階段,分片技術(shù)落地的最大障礙仍然是其潛在的安全問題,即“1%攻擊”。
在采用PoW的區(qū)塊鏈中,例如比特幣,當(dāng)攻擊者擁有網(wǎng)絡(luò)的大部分哈希算力時(shí),“51%攻擊”就有可能發(fā)生。一旦發(fā)生,攻擊者就可以“雙花”、索取所有獎(jiǎng)勵(lì),阻止交易等。
只是,想要擁有整個(gè)網(wǎng)絡(luò)的51%或者更多的哈希算力就需要大量的電力和設(shè)備。目前,在比特幣網(wǎng)絡(luò)上實(shí)施51%攻擊的成本是80億美元,每天電費(fèi)則是1280萬美元。
假設(shè)一個(gè)區(qū)塊鏈網(wǎng)絡(luò)被分成一百份,也就是一百個(gè)分片,每個(gè)分片擁有1%的哈希算力。那么,本質(zhì)上攻擊者只需要將他的哈希算力集中在某一單個(gè)分片上,就可以實(shí)現(xiàn)對該分片的控制,這無疑會影響到整體網(wǎng)絡(luò)的安全性。而同樣的問題也適用于PoS系統(tǒng)。
防止此類攻擊發(fā)生的一種有效方式是阻止攻擊者將他們的哈希算力或代幣權(quán)益集中在某一片分片上。
通過對PoS代幣權(quán)益進(jìn)行切分和隨機(jī)抽樣分片,Harmony就能有效地消解攻擊者對某一分片所集中的權(quán)益,從而消除1%攻擊的可能性。
Harmony采用了全新的權(quán)益證明(PoS)方式去選擇驗(yàn)證者
目前基于分片的區(qū)塊鏈項(xiàng)目比如Zilliqa或Quarkchain,使用了PoW來防止Sybil攻擊,但它們依然容易受到1%攻擊。相比之下,Harmony則在選擇一組共識驗(yàn)證者組成一個(gè)分片時(shí),通過可驗(yàn)證隨機(jī)函數(shù)(VRF)和可驗(yàn)證延遲函數(shù)(VDF)的雙重安全算法隨機(jī)選中驗(yàn)證者(即節(jié)點(diǎn)),并均勻分配到每個(gè)分片中。這樣某個(gè)攻擊者就很難集中資源攻擊單一分片,即實(shí)施1%攻擊。
在Harmony的PoS設(shè)計(jì)中,區(qū)塊驗(yàn)證者需要抵押一定數(shù)量的代幣,抵押的代幣數(shù)量將決定它會得到投票權(quán)數(shù)量。
驗(yàn)證者投票權(quán)會被隨機(jī)分配到某一個(gè)或多個(gè)分片中,在預(yù)設(shè)好的一個(gè)周期(假設(shè)為一天)內(nèi),驗(yàn)證者可參與這一個(gè)或多個(gè)分片的共識,每個(gè)周期結(jié)束后,投票權(quán)將重新計(jì)算并分配。這個(gè)重新洗牌的過程能夠極大增大安全性,防止惡意攻擊者逐漸瓦解和賄賂單一分片內(nèi)的節(jié)點(diǎn)。
Harmony的PoS機(jī)制能夠確保:
– 攻擊者無法選擇自己想要加入的分片
– 攻擊者無法提前知道他們會被分配到哪片分片
如果每隔一段時(shí)間就重新洗牌,一個(gè)節(jié)點(diǎn)把分片的狀態(tài)下載下來需要多長時(shí)間?
當(dāng)一個(gè)驗(yàn)證者加入一個(gè)新的分片時(shí),他們需要快速同步分片的數(shù)據(jù)才能驗(yàn)證新的交易。
傳統(tǒng)下載區(qū)塊歷史記錄的過程,需要許多天去完全同步所有的歷史信息,而在Harmony的快速同步算法中,節(jié)點(diǎn)只需要下載此分片的區(qū)塊頭和上一周期的區(qū)塊數(shù)據(jù)即可開始驗(yàn)證新交易,因此,節(jié)點(diǎn)會在驗(yàn)證者重新分配的過程中迅速做好準(zhǔn)備。
Harmony的跨片通信
當(dāng)交易被分配在不同的分片中時(shí),分片之間的高效溝通變得至關(guān)重要。如果分片間的溝通困難,如同一座座孤島,那整個(gè)分片系統(tǒng)就將失去意義。
舉個(gè)例子,假設(shè)要在一個(gè)分片協(xié)議網(wǎng)絡(luò)中預(yù)定一張火車車票和一家酒店,火車票交易在一個(gè)分片里,酒店交易則在另一個(gè)分片里,對于用戶來說,想要的結(jié)果是車票和酒店同時(shí)預(yù)訂成功,而不是一個(gè)成功,另一個(gè)失敗。
Harmony支持跨分片交易,分片之間不僅可以相互通信,還能同步執(zhí)行垮分片操作。
當(dāng)每個(gè)新區(qū)塊被創(chuàng)建時(shí),通過一個(gè)Kademlia路由協(xié)議將區(qū)塊鏈頭發(fā)送到信標(biāo)鏈。在這種方式中,Harmony網(wǎng)絡(luò)中的每個(gè)節(jié)點(diǎn)都保存了一張包含所有節(jié)點(diǎn)距離的路由表。
當(dāng)一個(gè)來自分片A的消息要發(fā)送到分片B時(shí),分片A中的節(jié)點(diǎn)將查閱路由表,并將消息發(fā)送往距離最近的節(jié)點(diǎn), 這種方法可以確保信息只經(jīng)過最短路徑傳遞,并以最快的方式抵達(dá)目標(biāo)分片。
與Zilliqa和Hashgraph等項(xiàng)目所使用的普通“Gossip廣播”相比,Kademlia路由協(xié)議從底層機(jī)制上減少了整體網(wǎng)絡(luò)負(fù)載。例如在Kademila設(shè)置中,擁有10,000,000個(gè)節(jié)點(diǎn)的網(wǎng)絡(luò)內(nèi),任何子節(jié)點(diǎn)之間的通信,最多只需要大約20個(gè)傳播跌點(diǎn)(hops)。
Harmony與其他分片項(xiàng)目對比
注:Harmony使用的是拜占庭系列的共識算法,這種算法假定誠實(shí)節(jié)點(diǎn)的數(shù)量要達(dá)到2/3,才能保證系統(tǒng)的正確性。在PBFT(實(shí)用拜占庭容錯(cuò))的基礎(chǔ)上,Harmony調(diào)整了消息廣播方式,使其比PBFT更快更有效,并將這種算法命名為快速拜占庭容錯(cuò)(FBFT)。
作為早期分片項(xiàng)目,Zilliqa的分片方案僅限于網(wǎng)絡(luò)和交易的分片。每個(gè)節(jié)點(diǎn)需要存儲所有區(qū)塊鏈數(shù)據(jù)的需求也讓Zilliqa對小節(jié)點(diǎn)并不友好。此外,基于PoW的簡單分片方案也讓Zilliqa更容易受到1%攻擊。
相比之下,Hamony協(xié)議里則采用了在研究和實(shí)踐中都被驗(yàn)證過的技術(shù)突破,基于PoS的安全節(jié)點(diǎn)分配和狀態(tài)分片技術(shù),讓整個(gè)區(qū)塊鏈系統(tǒng)更安全的同時(shí),也實(shí)現(xiàn)了真正的去中心化。