"

時間對於分佈式賬本技術的意義不言而喻,任何賬本都需要達到「有序」,而在時間和狀態分離的時鐘體系中,時間和狀態並非耦合綁定,鏈上交易的時間戳將會被編碼,交易像水一樣在網絡間流動。

Solana 將基於哈希的時間鏈與狀態更新進行分離,首先為其智能合約平臺提供一個免許可、全局可用、信任最小化時鐘體系,並在達成共識前優化網絡運行,Solana 把這個核心創新稱之為「歷史證明機制」(Proof of History, POH)。

撰文:小毛哥 Mao特別感謝 RockX 聯合創始人董心書博士的審讀及建議

「今天是 2019 年 8 月 16 日,起遲了,今天又是平淡的一天。」

幾年幾月幾日、早與遲、今天和明天,都是我們對時間的概念,時間可以來源於 iPhone 手機、玩具手錶、最精確的原子鐘等任何可信賴的第三方,重要的是,我們所說的「時間」好像是一個人類社會賦予的概念。愛因斯坦的廣義相對論嘗試從更科學的角度探索時間的真正定義,當然,人們還是以自己感覺最直觀的定義理解著自己的時間。

反直覺的是,在完全開放的分佈式系統中,因為失去了可以完全信賴的第三方,我們很難依賴幾年幾月、早與遲這些習以為常的時間概念來確定事件的順序。在分佈式系統中,我們所需要的「時間」不是我們習慣的時間粒度,而是需要的是一種機制,通過該機制我們可以驗證一個事件發生在另一個事件之前、之後或者同時發生。

為什麼時間是區塊鏈的根本問題?

時間戳的概念

試想一種情況:你在某日舉著《紐約時報》閱讀,被記者拍下一張照片,過了幾天之後,你發現你的這張照片被刊登在了新一期《紐約時報》。

"

時間對於分佈式賬本技術的意義不言而喻,任何賬本都需要達到「有序」,而在時間和狀態分離的時鐘體系中,時間和狀態並非耦合綁定,鏈上交易的時間戳將會被編碼,交易像水一樣在網絡間流動。

Solana 將基於哈希的時間鏈與狀態更新進行分離,首先為其智能合約平臺提供一個免許可、全局可用、信任最小化時鐘體系,並在達成共識前優化網絡運行,Solana 把這個核心創新稱之為「歷史證明機制」(Proof of History, POH)。

撰文:小毛哥 Mao特別感謝 RockX 聯合創始人董心書博士的審讀及建議

「今天是 2019 年 8 月 16 日,起遲了,今天又是平淡的一天。」

幾年幾月幾日、早與遲、今天和明天,都是我們對時間的概念,時間可以來源於 iPhone 手機、玩具手錶、最精確的原子鐘等任何可信賴的第三方,重要的是,我們所說的「時間」好像是一個人類社會賦予的概念。愛因斯坦的廣義相對論嘗試從更科學的角度探索時間的真正定義,當然,人們還是以自己感覺最直觀的定義理解著自己的時間。

反直覺的是,在完全開放的分佈式系統中,因為失去了可以完全信賴的第三方,我們很難依賴幾年幾月、早與遲這些習以為常的時間概念來確定事件的順序。在分佈式系統中,我們所需要的「時間」不是我們習慣的時間粒度,而是需要的是一種機制,通過該機制我們可以驗證一個事件發生在另一個事件之前、之後或者同時發生。

為什麼時間是區塊鏈的根本問題?

時間戳的概念

試想一種情況:你在某日舉著《紐約時報》閱讀,被記者拍下一張照片,過了幾天之後,你發現你的這張照片被刊登在了新一期《紐約時報》。

簡讀區塊鏈簡史

假設《紐約時報》信息是正確無誤的情況下,因為這個巧合,即使多年之後,雖然你忘記了被拍下照片的日期,但通過這份情報,你也可以準確地判定照片拍攝的日期:在 2014 年 10 月 12 日至 2014 年 10 月 14 日之間。

這個巧合實際構造出一種時間機制,我們建立了兩個可信的時間點,而案例中《紐約時報》提供的信息就是這個機制裡的時間戳。

正如上文我們所提到的,要確定事件的前後關係問題,需要的不是可信的物理時鐘,而是去建立擁有可信時間點的時間機制。根據愛因斯坦的相對論中觀點,全宇宙中位於不同空間的時間不是一致同步的。比特幣通過創建自己的時間概念來解決這個問題,證明實現分佈式賬本技術是可行的。

分佈式系統中的基本問題:時鐘問題

根據一份比特幣最初的源代碼,中本聰最初將比特幣的數據結構,即大家熟悉的「區塊鏈」(Blockchain)表述為「時間鏈」(Timechain)。

時間對於分佈式賬本技術的意義不言而喻,任何賬本都需要達到「有序」,人們不能花沒有收到的錢,也不能花已經花了的錢。區塊鏈技術本身必須在無需第三方的情況下,明確地對賬本進行排序。雖然區塊鏈中還有許多其他技術細節,但時間是至關重要的,沒有時間與順序,就沒有區塊鏈。

美國計算機科學家 Leslie Lamport 在 1978 年發佈的論文 《Time, Clocks, and the Ordering of Events in a Distributed System》首次將分佈式系統中的時序與相對論中的時間概念進行對比,並提出一種可用於「同步邏輯時鐘的系統,以對事件進行全局排序」的分佈式算法。他在 1982 年發表一篇關於可容錯的計算機系統的經典論文《The Byzantine Generals Problem》,也就是著名的拜占庭將軍問題的來源。

拜占庭將軍問題是分佈式系統發展中的殿堂級問題,而對於該類問題解決方案,背後的概念基本上是將可能引發不一致的並行操作進行串行化的排序。2008 年 11 月 13 日,中本聰在一份解釋比特幣的早期郵件開頭寫道,工作量證明機制是拜占庭將軍問題的解決方案之一。

如何確定事件的時間和順序,是分佈式系統的基本問題。引入全局時鐘是實現拜占庭將軍問題中線性一致性(Linearizability Consistency)的方法之一。全局時鐘可以讓讓許多互不信任的節點有全局同步的時間來源,再加上時間戳,就可能實現全局一致的有序交易。為了分佈式系統達到強弱不等的一致性結果,許多建立在此思路上的區塊鏈共識作為解決方案應運而生。

全局一致的時鐘 + 時間戳 = 有序的交易

理解時間和狀態 —— 解構區塊鏈時鐘

PoW 時鐘體系:工作量證明機制 + 時間鏈 / 區塊鏈

為了理解這個晦澀的密碼學問題,我們不妨將比特幣的 PoW 工作量證明機制想象成一個時鐘,反覆計算出符合條件的哈希值(即挖礦)相當於參與一個人人都可以參與並且會走到滿足結果那一刻的時鐘體系:

時間價值

時間對於工作量證明機制的意義在於通過持續消耗的動能來保護網絡的安全。我們可以使用「存量和流量」(stock & flow)描述基於時間的能量及價值累計現象,使用以下三個公式簡要概括 PoW 時鐘體系的時間價值:

時間流量 / 存量 = 已經消耗 / 將要消耗的動能時間存量價值(過去) = 挖礦已經消耗的動能(總賬本) + 挖礦硬件的庫存價值時間流量價值(未來)= 挖礦將消耗的動能(預期賬本) + 挖礦硬件的潛在盈利

狀態更新

狀態更新實際上是由出塊決定,每個新出的區塊反映出一個新的狀態。這一時間鏈結構被設計為平均每隔十分鐘出塊一次, 即 PoW 時鐘大約每 10 分鐘指針滴答轉動一次。同時,每一次指針轉動都意味著該時鐘完成一個不可回溯、無記憶性的全局狀態更新。

指針轉動,滴答一次 = 有序出塊,狀態更新滴答時間 = 出塊時間 (平均約 10 分鐘)轉速調整 = 挖礦難度調整最終狀態更新 = 最長鏈原則

時間與狀態:緊耦合

在工作量證明機制中,一個區塊產生之後,整條鏈會鎖定,此時沒有任何狀態更新,直到產生或接收到下一個有效的新區塊。每個新的區塊都包含前一個區塊的哈希,作為在該區塊有效的證據。總之,在 PoW 時間體系中,時間和狀態是耦合在一起的,總是相互綁定、一致行進。沒有狀態更新,時間就無法推進。

PoW 時鐘體系特點

PoW 時鐘體系是對解決分佈式系統中時間和狀態問題的開創性的解決方案,PoW 體系是一個安全、成熟、無許可的、全球共享的網絡設施,值得注意的是,PoW 時鐘體系成本透明公開,但時鐘性能、可拓展性不足,仍有改進空間。

PoS 時鐘體系:權益證明機制 + 時間鏈 / 區塊鏈

PoS 時鐘體系將共識機制跟加密經濟激勵結合,有時通過限制驗證人數以提高系統性能。本文以目前成果最佳的高性能、無須許可的 BFT 共識算法 Tendermint + BPoS (Bonded Proof of Stake) 為例來理解該時鐘體系。

時間價值

時間對於權益證明機制的意義是圍繞著 PoS 機制的核心行為 staking (質押)產生的, 我們可以將理解 PoW 時間價值體系的方式引申至該 PoS 時鐘體系。

時間的流量 / 存量 = 已經質押 / 即將質押的資金成本時間存量價值(過去) = 已參與質押資金的機會成本 + 質押累計收益時間流量價值(未來)= 長期持幣者的預期質押量 + 預期質押收益

狀態更新

PoS 時鐘體系狀態與 PoW 時鐘體系相似,

指針轉動,滴答一次 = 有序出塊,狀態更新滴答時間 = 出塊時間 (Tendermint 約 6 秒)

時間與狀態:鬆耦合

在權益證明機制中,時間和狀態依然是耦合綁定的。因此,該分佈式系統性能的改良思路依然是在時間和狀態之間做取捨,要麼增加區塊大小,要麼減少區塊時間,以增加時鐘的性能,即系統的吞吐量(TPS),用公式來表示:

吞吐量 (TPS])= 區塊大小(每區塊的 txs)/ 區塊時間 (區塊間隔時間)

如果 Tendermint 網絡達到 5 秒的出塊時間,5MB 的區塊大小,理論上可以達到 4000 TPS 的吞吐量。

PoS 時鐘體系特點

PoS 時鐘體系在解構分佈式系統時間和狀態的嘗試中邁出了重要的一步,在系統的吞吐量上獲得了巨大的提升,但同時也付出了巨大的成本,比如圍繞 staking 的質押時間的長短含有影響 PoS 體系安全性的不確定因素。

分片時鐘體系:狀態分片架構 + 時間鏈 / 區塊鏈

分片架構體系,雖然不同項目的解決方案存在差異,但基本架構基本包括信標鏈(Beacon Chain),為網絡的其餘部分提供時間源。該時鐘體系的改進性能思路很簡單,就是在時鐘體系下增加更多小的時鐘體系。

時間價值

分片時鐘體系擴展了單一區塊鏈的時間存量及流量,從而量化擴展了時間價值

狀態更新

信標鏈可以提供分片架構的全局時鐘,但每個分片僅是週期性地將其各自的獨立時鐘體系與信標鏈的時鐘體系同步,分片交互時需要狀態的週期性更新,更新所需的時間可能會帶來延遲。

時間與狀態:將耦合的時間和狀態同時分割

狀態分片架構將整個時鐘體系分割為一堆單獨的時鐘體系,將全局狀態分割為一堆較小的單獨分片,每個分片有自己的獨立時鐘體系,相互獨立但共同推進。

分片時鐘體系的特點

在理想狀態下,若分片之間跨分片交互最小,每個分片的性能維持不變,所有分片的累計吞吐量將會隨著分片數量的增加而線性增加。分片概念的設想顯著提升了系統性能,但可以預見是,由於每個單獨分片的時間和狀態依然是耦合的,同時還存在著分片安全、跨分片交易、網絡通信等技術問題,分片時鐘體系的現實情況依然會受到基礎區塊鏈,包括信標鏈及主鏈自身擴展性的限制。

跳脫時鐘框架體系:分離時間和狀態

讓我們回顧一下以上討論的時鐘體系,PoW 時鐘體系開創性地為比特幣創建了信任最小化的時鐘;PoS 時鐘體系中我們以 Tendermint + BPoS 共識為例,說明了如何減少驗證者人以改善時鐘體系性能;分片時鐘將整體的時鐘體系分割為一堆單獨的時鐘體系,顯著地提高了吞吐量。

值得注意的是,所有這些時鐘體系依然是建立在時間和狀態耦合的框架內,也必然會受到限制。看起來每一個時鐘體系都有獨到之處,但都不完美。讓我們繼續思考繼續優化區塊鏈時鐘體系的方法:

  1. 時間一定要和狀態綁定嗎?
  2. 如果我們能「證明歷史」且「編碼時間」,可以分離時間和狀態嗎?
  3. 如果技術上能做到分離時間和狀態,這個時鐘體系會是什麼樣?

首先,該時鐘體系依然需要一個全局可用、無需許可的時間來源,只有在全局可用的時鐘體系下,狀態更新可以持續且異步進行。其次,要改善節點之間的通信,需要快速、精準並保持信任最小化。在時間和狀態分離的時鐘體系中,時間和狀態並非耦合綁定,鏈上交易的時間戳將會被編碼,交易像水一樣在網絡間流動。

基於該思路,Solana 將基於哈希的時間鏈與狀態更新進行分離,首先為其智能合約平臺提供一個免許可、全局可用、信任最小化時鐘體系,並在達成共識前優化網絡運行。

Solana 把這個核心創新稱之為「歷史證明機制」(Proof of History, POH),PoH 歷史證明機制是在達到成共識前在網絡運行的優化解決方案,提供了一種全新的時鐘概念。POH 在達成共識之前充當一種特殊的時鐘,使得優化數據傳播到內存池管理等的各種獨特的時序假設在上層設計上產生。

這一核心創新打開了全面提升的設計空間。除了提供「編碼時間」的時間戳的時鐘之外,PoH 還使得 Solana 能夠優化網絡上可用的區塊時間(800 ms)、區塊傳播(log200(n))、吞吐量(50K-80KTPS)和分類帳存儲(petabytes)。

PoH 時鐘體系:分離時間和狀態的時間來源 + 時間鏈 / 區塊鏈

時間價值:

PoH 歷史證明機制中提供了一種全新的時間概念,同為時鐘體系提供了一個特殊時間來源,起到了時鐘體系「計時」和「定序」的作用,使得系統時間不再受限於狀態。

狀態更新:

PoH 歷史證明時鐘體系將時間和狀態分離,狀態更新不限於每次時針轉動。也就是說,該時鐘體系分離了時鐘轉動一次(時間)和滴答一次(狀態更新)。

時針轉動 ∈ 狀態更新滴答時間 = 區塊時間 ( Solana 測試網為 800 微秒)

時間與狀態:解耦 / 分離

時間維度:基於可驗證延遲函數 (VDF) 編碼時間戳可驗證延遲函數 (VDF) 是一類數學函數,能夠使得該函數的計算需要至少一段已知的時間。其他區塊鏈要求驗證人相互通信、同步信息以確認時間已經過去,可以進行下一步行動,而每個 Solana 驗證人可以通過將標準時間戳編碼為一個 SHA-256 序列哈希的可驗證延遲函數 (VDF) 進入區塊鏈中。Solana 使用 VDF 並不是為了隨機性,而是為了維護該時鐘體系的方法之一。

"

時間對於分佈式賬本技術的意義不言而喻,任何賬本都需要達到「有序」,而在時間和狀態分離的時鐘體系中,時間和狀態並非耦合綁定,鏈上交易的時間戳將會被編碼,交易像水一樣在網絡間流動。

Solana 將基於哈希的時間鏈與狀態更新進行分離,首先為其智能合約平臺提供一個免許可、全局可用、信任最小化時鐘體系,並在達成共識前優化網絡運行,Solana 把這個核心創新稱之為「歷史證明機制」(Proof of History, POH)。

撰文:小毛哥 Mao特別感謝 RockX 聯合創始人董心書博士的審讀及建議

「今天是 2019 年 8 月 16 日,起遲了,今天又是平淡的一天。」

幾年幾月幾日、早與遲、今天和明天,都是我們對時間的概念,時間可以來源於 iPhone 手機、玩具手錶、最精確的原子鐘等任何可信賴的第三方,重要的是,我們所說的「時間」好像是一個人類社會賦予的概念。愛因斯坦的廣義相對論嘗試從更科學的角度探索時間的真正定義,當然,人們還是以自己感覺最直觀的定義理解著自己的時間。

反直覺的是,在完全開放的分佈式系統中,因為失去了可以完全信賴的第三方,我們很難依賴幾年幾月、早與遲這些習以為常的時間概念來確定事件的順序。在分佈式系統中,我們所需要的「時間」不是我們習慣的時間粒度,而是需要的是一種機制,通過該機制我們可以驗證一個事件發生在另一個事件之前、之後或者同時發生。

為什麼時間是區塊鏈的根本問題?

時間戳的概念

試想一種情況:你在某日舉著《紐約時報》閱讀,被記者拍下一張照片,過了幾天之後,你發現你的這張照片被刊登在了新一期《紐約時報》。

簡讀區塊鏈簡史

假設《紐約時報》信息是正確無誤的情況下,因為這個巧合,即使多年之後,雖然你忘記了被拍下照片的日期,但通過這份情報,你也可以準確地判定照片拍攝的日期:在 2014 年 10 月 12 日至 2014 年 10 月 14 日之間。

這個巧合實際構造出一種時間機制,我們建立了兩個可信的時間點,而案例中《紐約時報》提供的信息就是這個機制裡的時間戳。

正如上文我們所提到的,要確定事件的前後關係問題,需要的不是可信的物理時鐘,而是去建立擁有可信時間點的時間機制。根據愛因斯坦的相對論中觀點,全宇宙中位於不同空間的時間不是一致同步的。比特幣通過創建自己的時間概念來解決這個問題,證明實現分佈式賬本技術是可行的。

分佈式系統中的基本問題:時鐘問題

根據一份比特幣最初的源代碼,中本聰最初將比特幣的數據結構,即大家熟悉的「區塊鏈」(Blockchain)表述為「時間鏈」(Timechain)。

時間對於分佈式賬本技術的意義不言而喻,任何賬本都需要達到「有序」,人們不能花沒有收到的錢,也不能花已經花了的錢。區塊鏈技術本身必須在無需第三方的情況下,明確地對賬本進行排序。雖然區塊鏈中還有許多其他技術細節,但時間是至關重要的,沒有時間與順序,就沒有區塊鏈。

美國計算機科學家 Leslie Lamport 在 1978 年發佈的論文 《Time, Clocks, and the Ordering of Events in a Distributed System》首次將分佈式系統中的時序與相對論中的時間概念進行對比,並提出一種可用於「同步邏輯時鐘的系統,以對事件進行全局排序」的分佈式算法。他在 1982 年發表一篇關於可容錯的計算機系統的經典論文《The Byzantine Generals Problem》,也就是著名的拜占庭將軍問題的來源。

拜占庭將軍問題是分佈式系統發展中的殿堂級問題,而對於該類問題解決方案,背後的概念基本上是將可能引發不一致的並行操作進行串行化的排序。2008 年 11 月 13 日,中本聰在一份解釋比特幣的早期郵件開頭寫道,工作量證明機制是拜占庭將軍問題的解決方案之一。

如何確定事件的時間和順序,是分佈式系統的基本問題。引入全局時鐘是實現拜占庭將軍問題中線性一致性(Linearizability Consistency)的方法之一。全局時鐘可以讓讓許多互不信任的節點有全局同步的時間來源,再加上時間戳,就可能實現全局一致的有序交易。為了分佈式系統達到強弱不等的一致性結果,許多建立在此思路上的區塊鏈共識作為解決方案應運而生。

全局一致的時鐘 + 時間戳 = 有序的交易

理解時間和狀態 —— 解構區塊鏈時鐘

PoW 時鐘體系:工作量證明機制 + 時間鏈 / 區塊鏈

為了理解這個晦澀的密碼學問題,我們不妨將比特幣的 PoW 工作量證明機制想象成一個時鐘,反覆計算出符合條件的哈希值(即挖礦)相當於參與一個人人都可以參與並且會走到滿足結果那一刻的時鐘體系:

時間價值

時間對於工作量證明機制的意義在於通過持續消耗的動能來保護網絡的安全。我們可以使用「存量和流量」(stock & flow)描述基於時間的能量及價值累計現象,使用以下三個公式簡要概括 PoW 時鐘體系的時間價值:

時間流量 / 存量 = 已經消耗 / 將要消耗的動能時間存量價值(過去) = 挖礦已經消耗的動能(總賬本) + 挖礦硬件的庫存價值時間流量價值(未來)= 挖礦將消耗的動能(預期賬本) + 挖礦硬件的潛在盈利

狀態更新

狀態更新實際上是由出塊決定,每個新出的區塊反映出一個新的狀態。這一時間鏈結構被設計為平均每隔十分鐘出塊一次, 即 PoW 時鐘大約每 10 分鐘指針滴答轉動一次。同時,每一次指針轉動都意味著該時鐘完成一個不可回溯、無記憶性的全局狀態更新。

指針轉動,滴答一次 = 有序出塊,狀態更新滴答時間 = 出塊時間 (平均約 10 分鐘)轉速調整 = 挖礦難度調整最終狀態更新 = 最長鏈原則

時間與狀態:緊耦合

在工作量證明機制中,一個區塊產生之後,整條鏈會鎖定,此時沒有任何狀態更新,直到產生或接收到下一個有效的新區塊。每個新的區塊都包含前一個區塊的哈希,作為在該區塊有效的證據。總之,在 PoW 時間體系中,時間和狀態是耦合在一起的,總是相互綁定、一致行進。沒有狀態更新,時間就無法推進。

PoW 時鐘體系特點

PoW 時鐘體系是對解決分佈式系統中時間和狀態問題的開創性的解決方案,PoW 體系是一個安全、成熟、無許可的、全球共享的網絡設施,值得注意的是,PoW 時鐘體系成本透明公開,但時鐘性能、可拓展性不足,仍有改進空間。

PoS 時鐘體系:權益證明機制 + 時間鏈 / 區塊鏈

PoS 時鐘體系將共識機制跟加密經濟激勵結合,有時通過限制驗證人數以提高系統性能。本文以目前成果最佳的高性能、無須許可的 BFT 共識算法 Tendermint + BPoS (Bonded Proof of Stake) 為例來理解該時鐘體系。

時間價值

時間對於權益證明機制的意義是圍繞著 PoS 機制的核心行為 staking (質押)產生的, 我們可以將理解 PoW 時間價值體系的方式引申至該 PoS 時鐘體系。

時間的流量 / 存量 = 已經質押 / 即將質押的資金成本時間存量價值(過去) = 已參與質押資金的機會成本 + 質押累計收益時間流量價值(未來)= 長期持幣者的預期質押量 + 預期質押收益

狀態更新

PoS 時鐘體系狀態與 PoW 時鐘體系相似,

指針轉動,滴答一次 = 有序出塊,狀態更新滴答時間 = 出塊時間 (Tendermint 約 6 秒)

時間與狀態:鬆耦合

在權益證明機制中,時間和狀態依然是耦合綁定的。因此,該分佈式系統性能的改良思路依然是在時間和狀態之間做取捨,要麼增加區塊大小,要麼減少區塊時間,以增加時鐘的性能,即系統的吞吐量(TPS),用公式來表示:

吞吐量 (TPS])= 區塊大小(每區塊的 txs)/ 區塊時間 (區塊間隔時間)

如果 Tendermint 網絡達到 5 秒的出塊時間,5MB 的區塊大小,理論上可以達到 4000 TPS 的吞吐量。

PoS 時鐘體系特點

PoS 時鐘體系在解構分佈式系統時間和狀態的嘗試中邁出了重要的一步,在系統的吞吐量上獲得了巨大的提升,但同時也付出了巨大的成本,比如圍繞 staking 的質押時間的長短含有影響 PoS 體系安全性的不確定因素。

分片時鐘體系:狀態分片架構 + 時間鏈 / 區塊鏈

分片架構體系,雖然不同項目的解決方案存在差異,但基本架構基本包括信標鏈(Beacon Chain),為網絡的其餘部分提供時間源。該時鐘體系的改進性能思路很簡單,就是在時鐘體系下增加更多小的時鐘體系。

時間價值

分片時鐘體系擴展了單一區塊鏈的時間存量及流量,從而量化擴展了時間價值

狀態更新

信標鏈可以提供分片架構的全局時鐘,但每個分片僅是週期性地將其各自的獨立時鐘體系與信標鏈的時鐘體系同步,分片交互時需要狀態的週期性更新,更新所需的時間可能會帶來延遲。

時間與狀態:將耦合的時間和狀態同時分割

狀態分片架構將整個時鐘體系分割為一堆單獨的時鐘體系,將全局狀態分割為一堆較小的單獨分片,每個分片有自己的獨立時鐘體系,相互獨立但共同推進。

分片時鐘體系的特點

在理想狀態下,若分片之間跨分片交互最小,每個分片的性能維持不變,所有分片的累計吞吐量將會隨著分片數量的增加而線性增加。分片概念的設想顯著提升了系統性能,但可以預見是,由於每個單獨分片的時間和狀態依然是耦合的,同時還存在著分片安全、跨分片交易、網絡通信等技術問題,分片時鐘體系的現實情況依然會受到基礎區塊鏈,包括信標鏈及主鏈自身擴展性的限制。

跳脫時鐘框架體系:分離時間和狀態

讓我們回顧一下以上討論的時鐘體系,PoW 時鐘體系開創性地為比特幣創建了信任最小化的時鐘;PoS 時鐘體系中我們以 Tendermint + BPoS 共識為例,說明了如何減少驗證者人以改善時鐘體系性能;分片時鐘將整體的時鐘體系分割為一堆單獨的時鐘體系,顯著地提高了吞吐量。

值得注意的是,所有這些時鐘體系依然是建立在時間和狀態耦合的框架內,也必然會受到限制。看起來每一個時鐘體系都有獨到之處,但都不完美。讓我們繼續思考繼續優化區塊鏈時鐘體系的方法:

  1. 時間一定要和狀態綁定嗎?
  2. 如果我們能「證明歷史」且「編碼時間」,可以分離時間和狀態嗎?
  3. 如果技術上能做到分離時間和狀態,這個時鐘體系會是什麼樣?

首先,該時鐘體系依然需要一個全局可用、無需許可的時間來源,只有在全局可用的時鐘體系下,狀態更新可以持續且異步進行。其次,要改善節點之間的通信,需要快速、精準並保持信任最小化。在時間和狀態分離的時鐘體系中,時間和狀態並非耦合綁定,鏈上交易的時間戳將會被編碼,交易像水一樣在網絡間流動。

基於該思路,Solana 將基於哈希的時間鏈與狀態更新進行分離,首先為其智能合約平臺提供一個免許可、全局可用、信任最小化時鐘體系,並在達成共識前優化網絡運行。

Solana 把這個核心創新稱之為「歷史證明機制」(Proof of History, POH),PoH 歷史證明機制是在達到成共識前在網絡運行的優化解決方案,提供了一種全新的時鐘概念。POH 在達成共識之前充當一種特殊的時鐘,使得優化數據傳播到內存池管理等的各種獨特的時序假設在上層設計上產生。

這一核心創新打開了全面提升的設計空間。除了提供「編碼時間」的時間戳的時鐘之外,PoH 還使得 Solana 能夠優化網絡上可用的區塊時間(800 ms)、區塊傳播(log200(n))、吞吐量(50K-80KTPS)和分類帳存儲(petabytes)。

PoH 時鐘體系:分離時間和狀態的時間來源 + 時間鏈 / 區塊鏈

時間價值:

PoH 歷史證明機制中提供了一種全新的時間概念,同為時鐘體系提供了一個特殊時間來源,起到了時鐘體系「計時」和「定序」的作用,使得系統時間不再受限於狀態。

狀態更新:

PoH 歷史證明時鐘體系將時間和狀態分離,狀態更新不限於每次時針轉動。也就是說,該時鐘體系分離了時鐘轉動一次(時間)和滴答一次(狀態更新)。

時針轉動 ∈ 狀態更新滴答時間 = 區塊時間 ( Solana 測試網為 800 微秒)

時間與狀態:解耦 / 分離

時間維度:基於可驗證延遲函數 (VDF) 編碼時間戳可驗證延遲函數 (VDF) 是一類數學函數,能夠使得該函數的計算需要至少一段已知的時間。其他區塊鏈要求驗證人相互通信、同步信息以確認時間已經過去,可以進行下一步行動,而每個 Solana 驗證人可以通過將標準時間戳編碼為一個 SHA-256 序列哈希的可驗證延遲函數 (VDF) 進入區塊鏈中。Solana 使用 VDF 並不是為了隨機性,而是為了維護該時鐘體系的方法之一。

簡讀區塊鏈簡史

Solana 如何將標準時間戳編碼至區塊鏈中

狀態維度:先選擇領導者(Leader),後進行完整的紀元(epoch)因為每個驗證人都需要維護自己的時鐘,所以選擇領導者 (leader)在先,進行一個完整的紀元(epoch)在後。如同 Tendermint 機制,一個紀元的時間表可以持續數千個區塊。然而,與 Tendermint 不同的是,Solana 網絡從不等待驗證失敗的節點。每個驗證人運行 VDF 以證明它已經獲得了傳輸區塊和驗證人的區塊時段 (Slot),同時可獲得獎勵。

PoH 時鐘體系的特點

1. 縮短節點通信間隔時間其他區塊鏈要求驗證人相互通信、同步信息以確認時間已過去、狀態可更新,而 Solana 的節點在持續不斷接收最新交易時,每個交易都有發送者附加的已簽名 PoH 時間戳哈希,並將其轉發給其他節點,節點可以立即通過 PoH 時間戳哈希對直接對交易進行排序,而縮短了等待對應節點確認的通信時間。

2. 無需等待領導者(Leader)的輪換在 POH 歷史證明機制下,領導者(Leader)的輪換不會影響網絡狀況。網絡可以在沒有任何驗證人相互通信的情況下決定領導(Leader)的輪換,網絡會作為一個整體,持續不斷地處理交易,領導者的輪換決策是異步調用的。

3. 新節點只需要數據結構便可驗證區塊鏈完整性PoS 機制受到常見的批評之一在於其不是完全客觀的,而是弱主觀的。但由於 POH 對 Solana 的改進,Solana 變得客觀。因為隨著時間的推移,時間也被編碼到區塊本身中。同時由於驗證人通過並行驗證 POH 的速度可以比 POH 的初始速度快 1000 倍,所以一個新的節點可以在沒有外在信息的情況下,只需要賬本的數據結構即可驗證區塊鏈從創世到當前的完整性。

如何基於歷史共識繼續優化 PoH 時鐘體系?

Tower BFT:充分利用 PoH 時鐘體系時間來源,優化 PBFT 共識

PBFT 實用拜占庭容錯的瓶頸

說明什麼是 Tower BFT 之前,我們首先來說明一下實用拜占庭容錯(Practical Byzantine Fault Tolerance,PBFT),PBFT 誕生於比特幣出世之前,至今已逾二十年,源於解決分佈式系統的著名共識問題:拜占庭將軍問題。

一群拜占庭將軍圍攻一座城市,他們必須達成同時進攻或同時撤退的共識,且各將軍只能透過信使將自己的決定通知其他人。然而,這群將軍中有叛徒,發出相反的訊息,或者只通知一部分的將軍。在已知有叛徒存在的情況下,該如何達成正確可用的共識?

在分佈式系統中,我們可以將:

  • 將軍 看作 節點
  • 信使 看作 節點間的通訊
  • 進攻 / 撤退的決策 看作 需達到的共識
  • 將軍的隨機行為 稱為 拜占庭錯誤(Byzantine Fault)
  • 在叛徒節點存在的情形下仍能達成共識的特性 稱為 拜占庭容錯(Byzantine Fault Tolerance)

從結果來說,一個正確可用的共識必須確保拜占庭將軍(即節點)一定會達成唯一的共識(即一致性),且共識終究會形成(活躍性)。

PBFT 實用拜占庭容錯是一個基於選出領導者、基於通訊、傾向於一致性的共識解決方案,由於 PBFT 含有驗證者需要把其投票廣播給其他驗證人的通訊機制,大大增加了通信複雜度和通訊量,導致難以擴展的瓶頸。

基於 PoH 歷史證明的改良版共識算法

在 PoH 歷史證明的基礎上,Solana 改良運行 Tower BFT,這是一種類似 PBFT 的共識算法。Tower BFT 在達成共識之前利用 Solana 的 PoH 時鐘已經同步的時間來源,減少了通訊複雜度和通訊延遲。

與 PBFT 不同的是,Tower Consensus 傾向於活躍性而非一致性。與 PBFT 相同的是,節點會成倍增加超時時間(Time-outs)以達成協議,但由於該時鐘體系的賬本結構本身也是一個免信任的時間源,節點可以觀察和檢查網絡中所有其他驗證人的超時時間。我們可以通過一個例子讓方便大家更好地理解這一點:

想象你置身在一個孤島上,一個瓶子漂了過來,裡頭裝著一個 U 盤。在 U 盤裡存著一個 Solana 賬本。如果你只查看賬本本身,你將看到每個節點都可以計算當前驗證人的數量、每個驗證人的狀態 —— 以及最為重要的一點,每個驗證人向網絡中的任何區塊提交的超時時間。僅僅是根據數據結構,不需要任何點對點的對等信息,驗證人就可以做出投票決定,網絡可以達成共識。

驗證人和複製器(Replicators):雙節點分工生成輕量級證明,優化數據儲存

目前區塊鏈網絡以 1 GB 每秒的速度,每年將為賬本生成 4 PB 的數據。按照這樣的速度,區塊鏈數據的存儲將很快成為主要的中心化向量,這與區塊鏈實現的去中心化願景背道而馳。

Solana 利用兩種類型的節點分工生成輕量級證明,使其有 PoS 網絡更有效地運行。

  • 驗證人節點:負責驗證網絡數據,但 PoH 歷史證明和 Tower PBFT 幫助其提高驗證速度。
  • 複製器節點:從驗證人節點中獲取計算權重,以極小的硬件要求進行操作。

複製器節點(Replicators)對硬件的要求不高,我們日常所有的筆記本電腦就可以執行。但是複製器節點在網絡中的作用卻很重要,能夠優化分佈式數據存儲系統,旨在解決處理數兆字節級 (pb) 數據的數據可用性問題。

Solana 的複製器節點不需要參與共識並存儲整個數據歷史,而是利用多個複製器節點分別儲存數據歷史的小片段,以生成輕量級證明並執行糾刪碼功能,從而將整個狀態歷史被分割成許多部分。每隔一段時間,網絡就會要求複製器證明它們正在存儲其應該存儲的數據。

Solana 使用的複製證明 (PoRep)理念主要借鑑自 Filecoin,並利用 PoH 共識提供的時序來源優化複製證明(PoRep)的創建方式。複製器節點將在不參與共識的情況下,使用 PoH 歷史證明生成輕量級的證明,這種證明可以複製賬本的各個部分,而且允許驗證人能夠跨 GPU 批量驗證。

結語

理解「編碼時間」的意義,重塑區塊鏈 Layer 1 可拓展性

Solana 通過將時間與狀態分離,證明在一個信任最小化、無須許可世界計算機是可能會被實現的。本文我們探討了三個 Solana 的創新點:

  • 歷史證明 (Proof of History, PoH):Solana 其他獨特的架構都是建立在 PoH 的基礎上,PoH 提供共識之前的時間源,起到了計時和定序的作用,是解決時鐘問題和重塑區塊鏈可拓展性的一個深刻而巧妙的解決方案。
  • Tower BFT:充分利用 PoH 時鐘體系的時間來源,優化 PBFT 共識。
  • 複製器 (Replicators):使用 PoH 歷史證明生成輕量級證明,優化分佈式數據儲存。

從「時間維度」理解分佈式系統的性能至關重要,時間就是一切,通過 PoH 歷史證明「編碼時間」的全新思維,無許可的分佈式系統甚至可以媲美經過驗證的中心化的雲計算提供的性能。

當前 Solana 在 5 個大洲的 200 個驗證者構成的測試網絡上,吞吐量超過 50000 TPS,平均 TTF 為 1.5 秒。這基本上可以媲美目前最好的全球分佈式的數據庫 Spanner,但 Solana 更有實質意義的去中心化。

同時,邏輯簡單、信任最小化的可拓展 Layer 1 底層網絡實際上在邏輯上抽象了複雜性,使得往後的開發人員能將精力集中在應用程序邏輯上。將期待留給 Layer 2 的可拓展解決方案和優化應用場景,實際上增加了用戶、開發人員和服務商的複雜性和摩擦。

Vitalik 於 2014 年 1 月在向世人揭開以太坊的面紗時,他所強調的正是這一點:世界計算機的意義在於抽象所有不特定於應用程序的東西。隨著時間的推移,在 2019 年 8 月 21 日,Vitalik 又在推特上發文稱,對於 layer 2 鏈下擴容方案感到悲觀,因為對於激勵要做很多應用層處理,並且很難大規模應用。

對於絕大多數用例,構建在 Solana 區塊鏈之上的開發人員根本不需要考慮可拓展性,因為 Solana layer 1 的意義就在於抽象複雜性,在此基礎優化上層 layer 2 的設計,筆者會再下一篇文章詳細論述這層邏輯。

參考文章

"

相關推薦

推薦中...