區(qū)塊鏈如何在拜占庭環(huán)境下應(yīng)對時(shí)鐘問題
前言:關(guān)于區(qū)塊鏈的可擴(kuò)展性,我們有各種共識機(jī)制的優(yōu)化,比如Tendermint,也有分片模式等,而新的方案將時(shí)間和狀態(tài)更新進(jìn)行解藕,提出了異步處理的交易的解決方案,它能重新定義區(qū)塊鏈的可擴(kuò)展性嗎?讓我們看看未來會發(fā)生什么吧。
未來的一兩年,會有很多智能合約平臺面市(ETH2.0、波卡、Dfinity、Near、Algrorand、Kadena、Spacemesh、Solana)每個(gè)團(tuán)隊(duì)都在尋求與眾不同的擴(kuò)展性策略。
不過,這些方法中的大多數(shù)都沒有解決拜占庭環(huán)境中分布式計(jì)算系統(tǒng)的一個(gè)基本問題:時(shí)鐘問題。為了取得共識,網(wǎng)絡(luò)中至少51%的機(jī)器必須以相同的時(shí)間和相同順序執(zhí)行同一交易。為實(shí)現(xiàn)這一點(diǎn),機(jī)器需要就全局一致的時(shí)鐘達(dá)成一致。
讓許多互不信任的機(jī)器在拜占庭環(huán)境下就全局時(shí)鐘達(dá)成一致,“時(shí)鐘問題”是面臨挑戰(zhàn)的。一旦所有人就全局時(shí)鐘達(dá)成一致,交易排序就會變得簡單很多,因?yàn)槊總€(gè)交易都使用相同的全局時(shí)鐘加上時(shí)間戳。
在現(xiàn)代加密時(shí)代之前,在其他大規(guī)模網(wǎng)絡(luò)中,時(shí)鐘問題已經(jīng)凸顯出來,尤其是在無線通信領(lǐng)域。手機(jī)信號塔必須同時(shí)支持?jǐn)?shù)以萬計(jì)的手機(jī)。這導(dǎo)致沒有足夠的帶寬來讓每部手機(jī)都按自己的無線電頻率進(jìn)行傳輸。因此,電信公司需要“多重接入技術(shù)”,以在同一頻率上可以撥打多個(gè)電話。
二戰(zhàn)時(shí)期發(fā)明了碼分多址的技術(shù),也就是CDMA。為了解決時(shí)鐘問題,CDMA要求每部電話用唯一密鑰對其數(shù)據(jù)進(jìn)行加密,并與其他電話同時(shí)在幾個(gè)頻率上傳輸數(shù)據(jù),依靠發(fā)射塔將組合信號分為單獨(dú)的呼叫。這種模式效率的優(yōu)化與加密模式的復(fù)雜性同步。對于要實(shí)現(xiàn)大規(guī)模采用的網(wǎng)絡(luò)來說,它必須支持廉價(jià)低端設(shè)備,而這種優(yōu)化的速度顯得緩慢而穩(wěn)定。
從2G網(wǎng)絡(luò)誕生以來,通過實(shí)施時(shí)分多址(TDMA)技術(shù),電信公司已經(jīng)實(shí)現(xiàn)更快的效率提升,TDMA已經(jīng)成為處理時(shí)鐘問題的標(biāo)準(zhǔn)解決方案。TDMA指定這些發(fā)射塔,將每個(gè)無線電頻率劃分為時(shí)間段,并把這些時(shí)間段分配給每個(gè)電話呼叫。
以此,發(fā)射塔為網(wǎng)絡(luò)提供全局可用的時(shí)鐘。通過讓每個(gè)頻率支持多個(gè)同時(shí)進(jìn)行的數(shù)據(jù)信道,并減少同一時(shí)間在相同頻率上多個(gè)電話廣播的干擾,這在有限的帶寬上大規(guī)模提升了可擴(kuò)展性。
最后,我將論證,構(gòu)建出最有效時(shí)鐘的區(qū)塊鏈將能成功分離時(shí)間和狀態(tài),并能在安全和去中心化的方式下實(shí)現(xiàn)擴(kuò)展,以支持?jǐn)?shù)百萬計(jì)用戶。
有時(shí)鐘的去中心化共識
Google的Spanner數(shù)據(jù)庫是全世界性能最好的全球分布式數(shù)據(jù)庫之一,有18個(gè)實(shí)例,其所有交易處理都同步。它支持50,000+TPS,最終性在1秒以內(nèi)。Spanner利用了Paxos共識算法,該算法首次發(fā)布于1989年。Spanner是一個(gè)需要許可的可信數(shù)據(jù)庫。Paxos允許Spanner在面臨停電、服務(wù)器故障、惡意錯(cuò)誤以及無數(shù)其他故障時(shí),依然可以運(yùn)行。
當(dāng)如今吞吐量最高的區(qū)塊鏈僅有21個(gè)實(shí)例,還在掙扎著實(shí)現(xiàn)5,000+TPS時(shí),Paxos是如何實(shí)現(xiàn)這樣的性能的?Google有全職的工程師維護(hù),定期到每個(gè)數(shù)據(jù)中心同步原子時(shí)鐘,達(dá)到很高的精度。
提供全局可用的可信時(shí)鐘允許對交易加上時(shí)間戳,這樣,每個(gè)實(shí)例可以不用按順序接收交易,但卻能以正確的順序來處理它們。這就是對時(shí)間和狀態(tài)進(jìn)行了分離。因?yàn)槊總€(gè)實(shí)例都會更新狀態(tài),而無須檢查其對等節(jié)點(diǎn)以確保它們以相同的順序處理相同的操作。
可以從Spanner中學(xué)到什么?如果在非拜占庭環(huán)境下有全局可用的時(shí)鐘,那么達(dá)成共識是很容易的。
不幸地是,當(dāng)今的智能合約平臺還有兩個(gè)額外的限制是Spanner所沒有的:
1.為保證平臺有抗審查能力,成為驗(yàn)證者是無須許可的
2.即使多達(dá)1/3的節(jié)點(diǎn)是惡意的,區(qū)塊鏈也必須保證用戶的資金安全
如果任何人都可以在全球的任何地方啟動(dòng)驗(yàn)證者實(shí)例,那么,共識算法的設(shè)計(jì)必須能夠包容不同的硬件和網(wǎng)絡(luò)配置,以及必須管理惡意節(jié)點(diǎn)。此外,為了真正具有抗審查能力,不能信任帶外信息(也就是Oracle問題)。
在Paxos發(fā)明20年之后,有人想出了在無須許可的計(jì)算網(wǎng)絡(luò)中如何就規(guī)范的交易順序達(dá)成共識。這個(gè)人就是中本聰,而解決的方案就是PoW共識。
PoW+時(shí)間鏈=時(shí)鐘
值得注意的是,中本聰?shù)念A(yù)發(fā)布比特幣代碼實(shí)際上將大家熟悉的區(qū)塊鏈數(shù)據(jù)結(jié)構(gòu)稱為“時(shí)間鏈”。這一時(shí)間鏈設(shè)計(jì)為平均每10分鐘滴答一次(通過巧妙地將PoW、難度調(diào)整和最長鏈規(guī)則結(jié)合在一起),其中每次滴答都以更新全局狀態(tài)的交易區(qū)塊的形式出現(xiàn)。
在節(jié)點(diǎn)執(zhí)行一個(gè)交易區(qū)塊之后,它會鎖定,不做任何狀態(tài)更新,直到它產(chǎn)生自己的有效新區(qū)塊,或接收到來自網(wǎng)絡(luò)的有效新區(qū)塊。在PoW中,時(shí)間和狀態(tài)耦合在一起,總是一致行進(jìn)。沒有狀態(tài)更新,時(shí)間就無法推進(jìn)。
關(guān)于什么讓區(qū)塊“有效”是一個(gè)爭論激烈的話題。交易格式和區(qū)塊大小在需要考慮的多個(gè)方面中只是其中的二個(gè)而已。然而,一個(gè)方面沒有爭議,有效區(qū)塊必須包含前一個(gè)區(qū)塊的哈希,便于網(wǎng)絡(luò)知道將它放在時(shí)間鏈中的前一個(gè)區(qū)塊之后。
時(shí)間鏈的目的是解決上面提到的要求:成為驗(yàn)證者是無須許可的。驗(yàn)證比特幣網(wǎng)絡(luò)當(dāng)前狀態(tài)是否有效的唯一方法是從創(chuàng)世區(qū)塊的狀態(tài)開始,執(zhí)行從創(chuàng)世區(qū)塊到當(dāng)前狀態(tài)的每個(gè)交易。時(shí)間鏈為新驗(yàn)證者提供審計(jì)軌跡,它是通過證明區(qū)塊高度12中的交易發(fā)生并必須在區(qū)塊高度11的區(qū)塊交易之后執(zhí)行來提供的。
因?yàn)閰^(qū)塊12必須包含區(qū)塊11的哈希,區(qū)塊12只能在區(qū)塊11之后才能被創(chuàng)建。哈希的時(shí)間鏈產(chǎn)生邏輯的、單調(diào)的、雖然不規(guī)則且不是非常精細(xì)的時(shí)鐘,網(wǎng)絡(luò)中的任何驗(yàn)證者都可以獨(dú)立地驗(yàn)證而無須任何帶外信息。
在開放、無須許可的環(huán)境中,生產(chǎn)這種全局可用且可信的時(shí)鐘,是中本聰最偉大的創(chuàng)新。因?yàn)槿譅顟B(tài)被鎖定,直到全局時(shí)鐘滴答一下,產(chǎn)生新塊。因此,可擴(kuò)展性的數(shù)學(xué)很簡單:
吞吐量 [TPS] = 區(qū)塊大小[每區(qū)塊的txs ] / 區(qū)塊時(shí)間 [每區(qū)塊秒]
為了提高吞吐量,協(xié)議要么增加區(qū)塊大小,要么減少區(qū)塊時(shí)間。增加區(qū)塊大小不利于區(qū)塊生產(chǎn)者的去中心化,減少區(qū)塊時(shí)間會增加鏈分叉概率。
這是因?yàn)闀r(shí)間和狀態(tài)是耦合的,所以沒有辦法解決這個(gè)問題。
回到無線通信的例子,可以將這個(gè)問題跟CDMA進(jìn)行比較。CDMA中,無線電塔有可以監(jiān)聽的固定頻率帶寬,這類似于區(qū)塊生產(chǎn)者具有能處理的固定的區(qū)塊大小。
增加CDMA的可擴(kuò)展性意味著創(chuàng)建更多復(fù)雜的編碼方案,以在有限的帶寬內(nèi)容納更多的電話呼叫。這類似于Segwit隔離驗(yàn)證,閃電網(wǎng)絡(luò),Schnorr簽名,它們是更復(fù)雜的編碼方案,可以提高性能。
比特幣有1MB的區(qū)塊,區(qū)塊時(shí)間為600秒,最小的交易大小為250B,理論上最大的吞吐量為7TPS。(藍(lán)狐筆記注:1024*1024/250/600=6.99,約等于7)
與Spanner相比,這意味著,比特幣的吞吐量降低了7000多倍,比TTF慢了3600多倍(因?yàn)樗枰ㄙM(fèi)6個(gè)區(qū)塊的時(shí)間來達(dá)成概率上不可逆轉(zhuǎn)的最終性)。
顯然,比特幣還有改進(jìn)空間。
PoS+時(shí)間鏈=更快的時(shí)鐘
比特幣的增長帶來了共識算法研究的復(fù)興。CAP定理告訴我們,在網(wǎng)絡(luò)分區(qū)的情況下,分布式數(shù)據(jù)庫系統(tǒng)必須在一致性(網(wǎng)絡(luò)停止)或可用性(網(wǎng)絡(luò)分叉)之間做選擇。中本聰?shù)乃惴ㄊ堑谝粋€(gè)無須許可、BFT共識算法,所有這些算法選擇可用性優(yōu)先于一致性。在中本聰家族中有很多共識算法。
Leslie Lamport的Paxos算法是經(jīng)典共識算法家族的第一個(gè),它更青睞一致性而不是可用性。
在Paxos和來自經(jīng)典共識算法家族的很多其他算法中,參與共識的每個(gè)節(jié)點(diǎn)必須與網(wǎng)絡(luò)中的每個(gè)其他驗(yàn)證節(jié)點(diǎn)就每個(gè)狀態(tài)更新同步溝通。這使得通信復(fù)雜度為O(n^2)(其中n是驗(yàn)證者數(shù)),這意味著每個(gè)狀態(tài)更新之間所需的時(shí)間會隨著驗(yàn)證者的增加而呈指數(shù)級增長。
Jae Kwon和Ethan Buchman是最早從事20年經(jīng)典共識研究的人,并將它跟加密經(jīng)濟(jì)激勵(lì)結(jié)構(gòu)結(jié)合,稱之為Bonded Proof of Stake,以安全地限制驗(yàn)證者數(shù)。他們的工作成果是經(jīng)典共識家族中第一個(gè)高性能、無須許可的BFT共識算法:Tendermint。
Tendermint跟中本聰共識一樣,它捆綁了時(shí)間和狀態(tài)更新,因此,要么增加區(qū)塊大小,要么減少區(qū)塊時(shí)間,吞吐量才會增加。比特幣在2009年誕生時(shí),大約10分鐘的區(qū)塊時(shí)間是合理的。不過,從那時(shí)到現(xiàn)在,帶寬已經(jīng)實(shí)現(xiàn)指數(shù)級增長,這讓Tendermint可以實(shí)現(xiàn)將區(qū)塊時(shí)間縮短到幾秒鐘。
由于Tendermint更青睞一致性,分叉是不可能的。區(qū)塊時(shí)間可以減少,直到某個(gè)給定驗(yàn)證者數(shù)的網(wǎng)絡(luò)吞吐量達(dá)到系統(tǒng)性能瓶頸的極限。如今,Tendermint允許網(wǎng)絡(luò)安全地將其驗(yàn)證者數(shù)限制為100,這樣就可以過濾掉那些帶寬差的節(jié)點(diǎn),并允許有更大的區(qū)塊。
Tendermint正在運(yùn)行中。Cosmos Hub是第一個(gè)上線的Tendermint實(shí)例,它的區(qū)塊時(shí)間為6秒,區(qū)塊大小為150kb,允許最大的吞吐量為100TPS(假定單個(gè)交易250字節(jié))。然而,它才幾個(gè)月的歷史,它會迅速走向成熟。
一個(gè)Tendermint網(wǎng)絡(luò),如果5秒的出塊時(shí)間,5MB的區(qū)塊大小,它理論上可以達(dá)到4,000TPS(藍(lán)狐筆記注:(5*1024*1024)/250/5=4194.4,大約在4,000TPS),同時(shí)跟比特幣比較,在抗審查和無須許可方面犧牲最小,尤其是考慮到它有570倍的吞吐量增長,和720倍TTF的減少。
不幸的是,由于經(jīng)典共識算法的同步屬性,匹配的Spanner會對系統(tǒng)的抗審查屬性和無須許可屬性產(chǎn)生不利的影響。更大的區(qū)塊將不可避免地花費(fèi)更長的時(shí)間在網(wǎng)絡(luò)內(nèi)進(jìn)行傳播,并且驗(yàn)證者也需要更長時(shí)間來進(jìn)行驗(yàn)證,這樣一來,出塊時(shí)間就設(shè)定了一個(gè)下限。
為提高時(shí)鐘速度,驗(yàn)證者數(shù)量需要大幅減少,并且它們都需要直接連接到同一光纖網(wǎng)絡(luò)。這將增加驗(yàn)證者共謀的可能性,也增加了新驗(yàn)證者的進(jìn)入門檻,并使得光纖網(wǎng)絡(luò)的運(yùn)營商成為一個(gè)中心點(diǎn)。
區(qū)塊鏈共識的下一代演化為時(shí)間和狀態(tài)的解藕邁出了重要的一步,在吞吐量上獲得了巨大的提升,但同時(shí)也付出了巨大的成本。
分片+時(shí)間鏈=獨(dú)立時(shí)鐘
有了BPoS,Tendermint將抗審查性和驗(yàn)證者數(shù)進(jìn)行了解綁,這允許網(wǎng)絡(luò)時(shí)鐘滴答一次的時(shí)間從600秒變?yōu)?秒,從而大大提升了性能。不過,在時(shí)鐘滴答之間,整個(gè)全局狀仍然是鎖定的,以維持全局一致的狀態(tài)。
緩解此問題的一種方法是將全局狀態(tài)分為一堆較小的片段,每個(gè)片段有自己的獨(dú)立時(shí)鐘,可以相互獨(dú)立推進(jìn)交易。(藍(lán)狐筆記注:也就是分片)只要這些分片不需要彼此之間進(jìn)行交互,每個(gè)分片的性能維持不變,并且所有分片的累計(jì)吞吐量會隨著分片數(shù)量的增加而線性增加。
Cosmos設(shè)想并行存在很多獨(dú)立的區(qū)塊鏈網(wǎng)絡(luò),它們之間能相互傳遞價(jià)值,但大多數(shù)交易在自己系統(tǒng)內(nèi)進(jìn)行。如果每個(gè)網(wǎng)絡(luò)可以處理4,000TPS,有13個(gè)獨(dú)立的網(wǎng)絡(luò),系統(tǒng)整體就可以超越Spanner的性能,達(dá)到52,000TPS。然而,這種方式存在兩個(gè)問題:
1.PoS區(qū)塊鏈的安全性是通過獲得33%的質(zhì)押代幣和批準(zhǔn)無效交易的成本來衡量的。如果不是單個(gè)代幣供應(yīng),有13個(gè)單獨(dú)的網(wǎng)絡(luò),那么獲取給定網(wǎng)絡(luò)的33%質(zhì)押代幣的成本將大大降低。這不僅遠(yuǎn)算不上安全,而且還嚴(yán)重?fù)p害了區(qū)塊鏈的價(jià)值主張,其中安全性是網(wǎng)絡(luò)價(jià)值的屬性。
2.與網(wǎng)絡(luò)內(nèi)傳輸相比,用于網(wǎng)絡(luò)間傳輸?shù)腡TF增加至少4倍。網(wǎng)絡(luò)必須來回通信以同步它們的時(shí)鐘,并且保證如果Alice在給Bob發(fā)送代幣,那么,Alice的代幣在她的網(wǎng)絡(luò)上被燒毀之前,Bob成功地在他的網(wǎng)絡(luò)中收到價(jià)值。
雖然Cosmos構(gòu)想了一個(gè)有很多獨(dú)立網(wǎng)絡(luò)的世界,這些網(wǎng)絡(luò)管理自身安全,但,以太坊2.0、波卡、Algorand等正在構(gòu)建系統(tǒng)以解決上面提到的共享安全問題。(藍(lán)狐筆記注:Harmony的分片也在解決分片的安全問題,有自己獨(dú)有方案。)
每個(gè)團(tuán)隊(duì)的解決方案都存在細(xì)微差異,但基本架構(gòu)涉及單個(gè)信標(biāo)鏈,它為網(wǎng)絡(luò)的其余部分提供時(shí)鐘,同時(shí),在跨分片間安全地對驗(yàn)證者進(jìn)行重新洗牌,由此,它們可以共享一個(gè)共同的安全池。跟Cosmos類似,增加吞吐量很容易:只需要增加更多分片。
不幸的是,第二個(gè)問題,也就是網(wǎng)絡(luò)間傳輸?shù)母逿TF問題,仍然存在。即使信標(biāo)鏈可以提供全局時(shí)鐘,每個(gè)分片僅是周期性地將本地時(shí)鐘與信標(biāo)鏈同步。為了讓Alice從分片A發(fā)送代幣給分片B的Bob,分片A的驗(yàn)證者必須證明,在分片B中的驗(yàn)證者挖出同等數(shù)量的代幣給到Bob之前,他們已經(jīng)燒毀了Alice發(fā)給Bob的代幣。按照以太坊2.0的當(dāng)前設(shè)計(jì),該過程將花費(fèi)6分鐘,是跨分片區(qū)塊時(shí)間的60倍。
雖然分片能有所幫助,但基本的擴(kuò)展性限制依然是可預(yù)見的,因?yàn)槊總€(gè)分片的時(shí)間和狀態(tài)更新是耦合的。考慮到區(qū)塊大小和區(qū)塊時(shí)間,每個(gè)分片依然受制于Tendermint所面臨的相同的限制。
分片類似于TDMA的某些元素;狀態(tài)被劃分進(jìn)入有自己獨(dú)立時(shí)鐘的單獨(dú)分片,其方式跟發(fā)射塔將其帶寬劃分為獨(dú)立無線電頻率和時(shí)間段的方式相當(dāng)。這種做法好處明顯,但并沒有充分利用,比如跨分片存在延遲也能證明這一點(diǎn)。
但是,如果在一個(gè)無須許可的環(huán)境中將時(shí)間和狀態(tài)更新完全解藕呢?
將時(shí)間和狀態(tài)分離
迄今為止,我們討論了中本聰如何創(chuàng)建時(shí)間鏈數(shù)據(jù)結(jié)構(gòu),為比特幣網(wǎng)絡(luò)提供一個(gè)去信任(trustless)的時(shí)鐘;討論了Kwon和Buchman如何將BPoS應(yīng)用到Paxos共識算法,以安全地減少驗(yàn)證者數(shù)并加速Tendermint的網(wǎng)絡(luò)時(shí)鐘;也討論了將網(wǎng)絡(luò)劃分為多個(gè)具有獨(dú)立時(shí)鐘的分片,這可以極大提高吞吐量(只要跨分片交易最小化)。
然而,這些進(jìn)展的每一個(gè),它們的狀態(tài)更新和時(shí)間仍然是耦合的,狀態(tài)更新僅與其網(wǎng)絡(luò)時(shí)鐘的滴答一起發(fā)生,并且這對如下方面產(chǎn)生了根本限制:吞吐量、用于抗審查的最終性時(shí)間、無須許可的計(jì)算網(wǎng)絡(luò)。
將時(shí)間和狀態(tài)分離需要全局可用的時(shí)鐘,它要快速、精確以及信任最小化。有了這樣的全局時(shí)鐘,狀態(tài)更新可以持續(xù)且異步進(jìn)行,正如在Spanner做的那樣。只要每個(gè)人都同意全局時(shí)鐘,并且交易加上時(shí)間戳,交易就可以在網(wǎng)絡(luò)間持續(xù)流動(dòng)。
Solana通過將基于哈希的時(shí)間鏈與狀態(tài)更新進(jìn)行分離,為其智能合約平臺構(gòu)建信任最小化時(shí)鐘。它不是將每個(gè)區(qū)塊的哈希鏈接在一起,而是其網(wǎng)絡(luò)中的驗(yàn)證者持續(xù)在區(qū)塊內(nèi)對這些哈希本身進(jìn)行哈希。這種機(jī)制,稱為PoH(Proof of History),它為網(wǎng)絡(luò)中的所有節(jié)點(diǎn)產(chǎn)生全局可用、信任最小化的時(shí)間鏈。
獨(dú)立時(shí)間鏈的存在允許領(lǐng)導(dǎo)者在收到時(shí)間戳交易時(shí)盡快地廣播給委員會。時(shí)間戳提供規(guī)范順序,而不是由區(qū)塊生產(chǎn)者任意確定的順序。雙花問題現(xiàn)在很容易解決,因?yàn)檎麄€(gè)網(wǎng)絡(luò)能夠就交易先后順序達(dá)成一致。
這改變了一切。
為驗(yàn)證時(shí)間推移,不是強(qiáng)迫驗(yàn)證者每6-600秒達(dá)成共識,Solana中的驗(yàn)證者能夠?qū)崟r(shí)向它們的對等節(jié)點(diǎn)持續(xù)發(fā)送狀態(tài)更新。
不是需要等待收聽來自其他每個(gè)節(jié)點(diǎn)的確認(rèn)(其他的區(qū)塊鏈都是如此),Solana可以使用新型的扇出(fan-out)機(jī)制來保持通信的復(fù)雜度為O(log(n)) 而不是O(n^2),它被稱為Turbine,也是受BitTorrent的啟發(fā)。這使得Solana能夠在單一全局狀態(tài)下處理超過50,000TPS,同時(shí)具有快速的最終性,還也無須分片。
這意味著,驗(yàn)證者池大小跟Tendermint相當(dāng),數(shù)量級為100-1000個(gè),但是允許鏈分叉。需要積極的分叉管理政策,以確保只要鏈分叉出現(xiàn)系統(tǒng)就會快速合并到單一鏈上,這是異步進(jìn)程和持續(xù)可用性的必要權(quán)衡。
將無線通信類比為完整的循環(huán),PoH對于區(qū)塊鏈的意義,就好比TDMA對蜂窩網(wǎng)絡(luò)的意義。將Solana的1000個(gè)驗(yàn)證者看作為無線電發(fā)射塔,利用它們的同步時(shí)鐘來將其帶寬細(xì)分為各個(gè)時(shí)間段。
他們持續(xù)不斷地收到最新的交易,每個(gè)交易都有發(fā)送者附加的簽名過的PoH哈希,并將其轉(zhuǎn)發(fā)給鄰居節(jié)點(diǎn),它們可以立即使用這些PoH哈希對這些交易進(jìn)行排序。
由于領(lǐng)導(dǎo)者的輪換是基于全局時(shí)鐘的,每個(gè)領(lǐng)導(dǎo)者選擇一組有序的交易來執(zhí)行,并將“entry條目”八卦給網(wǎng)絡(luò)。驗(yàn)證者返回他們對每個(gè)“條目”的投票,當(dāng)他們看到2/3的多數(shù)驗(yàn)證者贊同時(shí),確認(rèn)交易的最終性。
網(wǎng)絡(luò)作為一個(gè)整體,持續(xù)不斷地處理交易,且以很高的容量處理相同順序的交易。但是,每個(gè)驗(yàn)證者都是獨(dú)立處理的。相比于其他區(qū)塊鏈,這是一個(gè)微妙而深刻的改變。在Solana,驗(yàn)證者永遠(yuǎn)不會停止處理交易,且不管其網(wǎng)絡(luò)條件和共識如何。
還有其他不是很重要的相關(guān)問題,例如快速鏈增長、新的編程模型、時(shí)間鏈的不偏性、并行性等,這個(gè)新設(shè)計(jì)還有很多超出本文范圍的問題,這些在Solana文檔中都有解答。當(dāng)前Solana在5個(gè)大洲的200個(gè)驗(yàn)證者構(gòu)成的測試網(wǎng)絡(luò)上,處理交易超過50,000TPS,平均TTF為1.5秒。這基本上可以媲美Spanner,不過,它更有實(shí)質(zhì)意義的去中心化。
在一個(gè)信任最小化、無須許可的世界計(jì)算機(jī)中達(dá)到這種水平的性能是可能的,這是因?yàn)镾olana將時(shí)間和狀態(tài)分離。
Solana網(wǎng)絡(luò)的全局可用時(shí)鐘允許每個(gè)節(jié)點(diǎn)更新狀態(tài)時(shí)無須跟其他任何節(jié)點(diǎn)通信,就像Spanner一樣。
重塑可擴(kuò)展性
盡管加密社區(qū)寫了不少關(guān)于可擴(kuò)展性和共識模型的內(nèi)容,但還沒有人專門探討分布式時(shí)鐘問題。經(jīng)過多年的PoS研究,最終將Tendermint+BPoS作為最佳成果,并且很多分片方案基本上圍繞信標(biāo)鏈+狀態(tài)分片架構(gòu),而允許異步狀態(tài)更新的有顆粒度的時(shí)間鏈將為非分片系統(tǒng)提供最好的性能,相對于一致性,這些系統(tǒng)更青睞可用性。
提供全局可用時(shí)鐘允許Solana團(tuán)隊(duì)能夠利用40多年的分布式系統(tǒng)研究,否則這些研究將無法應(yīng)用。像OCC(OptimisTIc Concurrency Control,樂觀并發(fā)控制。藍(lán)狐筆記注:又名樂觀鎖)這樣的概念,是在1981年發(fā)明的,多年來一直應(yīng)用于大型計(jì)算項(xiàng)目,但當(dāng)時(shí)間和狀態(tài)必須同時(shí)推進(jìn)時(shí)它就無法被應(yīng)用。
從1995年以來,用GPU的并行處理一直存在。但直到Nvidia于2007年發(fā)布CUDA開發(fā)環(huán)境之前,它基本上僅限于顯卡。然而,無法被區(qū)塊鏈系統(tǒng)充分利用,區(qū)塊鏈系統(tǒng)悲觀地鎖定所有狀態(tài),只有正在處理交易的賬戶除外。
理解時(shí)間的流逝對于理解許可的和無須許可環(huán)境下的分布式系統(tǒng)的性能至關(guān)重要。時(shí)間就是一切,通過PoH(Proof of History)的形式來編碼時(shí)間流逝的新方法,無須許可的系統(tǒng)能夠媲美經(jīng)過驗(yàn)證的中心化的云計(jì)算提供的性能。