尋夢新聞LINE@每日推播熱門推薦文章,趣聞不漏接❤️
文章目錄[ 隱藏 ]
- 反向信任模型
- 可驗證網路中立
- 交易緩存
- 直通路由
- Off-chain解決方案
- On-chain 解決方案
由比特幣在 2008 年 8發起區塊鏈和密碼學貨幣革命正在蓬勃發展。主流密碼學貨幣的市值雖然劇烈波動,但仍有數千億美金的規模。區塊鏈的一個獨特特性是沒有中心化治理。區塊鏈只依賴於一個由驗證和認證所有交易的參與節點組成的全球點對點網路。基於區塊鏈的純粹分布式和去中心化設計,許多人認為,這種系統在密碼學貨幣之外的其他領域具有顛覆性的潛力,包括醫療、政府、製造、零售、保險、物聯網、共享經濟等。許許多多大大小小的高科技公司都在密切關注區塊鏈領域,分析這項新技術將如何影響他們現有或未來的經營。
但區塊鏈的一個主要問題是可擴展性。區塊鏈系統吞吐量是用系統能夠支持的 TPS(每秒交易數)來度量的。比特幣目前的平均吞吐量為 3 TPS,而 Visa 中心化系統的平均吞吐量為 2000 TPS,每日峰值為 4000 TPS,最大吞吐量為 5.6 萬 TPS。沒有可擴展性,密碼學貨幣系統將很難成為主流,區塊鏈也不太可能在任何其他領域做到其顛覆性潛力。
什麼是區塊鏈?
區塊鏈是一個公開的分布式帳本,它存儲所有過去的交易,本質上是一種類型的數據庫,由對等網路中相互連接的多個(可能多達數萬個)節點創建和共享。為了就數據庫的正確性達成共識,必須對寫入數據庫的某些規則加以規定。雖然規則可能有所不同,但一般包括以下內容:
- 交易(通常是某個用戶發送一定數量的密碼學貨幣給另一個用戶)必須包含來自發起者的數字簽名,以便進行身份驗證。
- 必須按順序添加交易。交易不會單個單個加入帳本,相反,它們是成批添加的,稱為區塊。例如,比特幣區塊鏈要求每個新區塊都包含一個哈希 「難題」 的答案,而哈希 「難題」 的具體情形是由上一個區塊和當前嘗試上鏈的區塊的具體情形決定的(即每次添加區塊都是一次全新的嘗試)。
- 添加區塊的過程非常昂貴,而且參與者需要相互競爭。想要向區塊鏈添加區塊的各個參與節點要麼投資密碼學貨幣,要麼投資算力,比如用於計算比特幣出塊所需哈希 「難題」 的計算設備。這樣的參與節點稱為礦工,向區塊鏈添加新區塊的過程稱為挖礦。
- 最長的區塊鏈便是最新版本。這條規則與前面的規則相結合,便使得成功偽造區塊鏈的代價非常高。即使復制現有的區塊鏈並試圖修改最後幾個區塊,其代價也非常昂貴。一旦區塊在網路上得到足夠的確認,刪除或修改區塊就變得極為昂貴且無利可圖。因此,交易只能添加到區塊鏈,上鏈之後便永遠不會被刪除。
- 獨立驗證。當節點檢查區塊鏈數據庫的副本時,它能夠獨立地驗證前面的所有規則是否已被遵守。如果每個用戶都能獨立驗證區塊鏈,那麼所有用戶就可以就正確的區塊鏈達成共識。
- 在區塊鏈中添加區塊可以收獲報酬。因為向區塊鏈寫入區塊比較困難,所以並不是所有節點都會參與這個過程。許多用戶會創建交易,然後要求將交易寫入網路,用戶通常會支付一定的費用作為礦工報酬。此外,只要礦工在一輪挖礦過程中獲勝,並有機會在區塊鏈中添加一個區塊,他們就可以將新產出的密碼學貨幣分發給自己。
- 區塊鏈發生分叉,通過最長鏈規則解決。因為區塊鏈運行在點對點網路中,由於網路延遲問題,可能出現同一個位置上挖出兩個區塊的情況(即某些節點還不知道新區塊已經挖出,因此在上一個區塊後繼續挖礦),這種情形我們稱之為「分叉」。分叉實際上就是節點間就區塊鏈的最新版本產生了分歧。但只要節點始終選擇網路上最長的區塊鏈,一段時間後就可以解決分叉,達成共識。
區塊鏈可擴展性問題
在解釋區塊鏈可擴展性問題之前,我們先看看區塊鏈系統的性能表現如何。圖 1 和圖 2 顯示了比特幣和以太坊這兩種主流密碼學貨幣的交易積壓情況。你可以看到,成千上萬的交易等待著被寫入區塊鏈。為了增加被礦工選中 「上鏈” 的可能性,用戶(自願)增加了交易費。因此,在交易擁堵期間,交易費可能會大幅增長。
為了理解瓶頸在哪里,我們先算一下區塊鏈的實際吞吐量。系統吞吐量直接取決於兩個參數:區塊大小 B(即,每個區塊中可以包含的交易數據量)和出塊間隔時間 T(即,系統挖出一個新區塊所需的平均時間)。在比特幣中,B = 1 MB,T ~ 600 秒,大約是 3 TPS。由此,可以通過以下選項改進區塊鏈的吞吐量:增加 B,以包含更多交易;減少 T,以更快的速度出塊;或雙管齊下。問題是,這些參數都不能隨意更改(理由我們會在後文詳細解釋)。
顯然,正是區塊鏈的分布式特性導致了這些問題。的確,只要區塊和交易能夠在節點之間瞬時傳播,就可以快速地挖出大量區塊,直到達到特定 CPU 和閃存陣列的性能上限 4。然而,實際上,區塊鏈節點——成千上萬甚至更多——分布在世界各地。因此,網路才是瓶頸。
區塊鏈網路中的節點以對等方式通信。不幸的是,這與以下高吞吐量、低延遲的目標背道而馳:
- 信息從一個節點傳輸到另一個節點;因此,在整個網路中傳播信息需要多跳(多個傳輸過程)。由於網路中的每個節點都不信任其他節點,因此會在每一跳中獨立地驗證所傳播的信息。驗證過程通常需要執行密碼學運算,而這會增加延遲並影響吞吐量。
- 區塊鏈網路中節點的性能差異較大,這意味著關鍵路徑上的單個慢節點會使傳播時間膨脹。
- 最後,對等網路中的節點是隨機形成的;因此,它們無法保證組織起來的網路可以達到最優傳播效果:數據往往會通過網路中的次優路徑傳輸。
因此,將一個 1MB 的區塊傳播到比特幣網路 90% 的節點平均需要 11.6 秒,這是 2017 年 3 月觀察到的平均傳播時間 1。不幸的是,這只是問題的一部分。在理論7和實踐45中都表明,將區塊大小 B 增大 X 倍也會使區塊傳播所需的時間增大 X 倍。同樣地,將出塊間隔時間 T 縮減 X 倍也會產生完全對應的效果。這意味著區塊傳播時間會隨著這兩個參數的增加而成比例地增加。
例如,將區塊大小增加十倍也會使區塊傳播時間增加十倍,使它們的時間超過 100 秒。同樣,將區塊大小增加 100 倍將導致區塊傳播時間超過 1000 秒。這樣的傳播時間超過了出塊間隔,導致每次挖出一個新區塊時都會產生一個分叉。實際上,在這個場景中,無法通過繼續挖出後續區塊來解決分叉,相反,區塊鏈將分解為」分叉「、」分叉的分叉「和」分叉的分叉的分叉「,直到節點和礦工不知道哪個分叉是「正確的」鏈——因此區塊鏈崩潰。這是由網路瓶頸引起的區塊鏈可擴展性問題。
雲分發網路(Cloud-Delivery Networks)
雲分發網路在解決 Internet 上的性能問題方面非常成功。這樣的網路通過一個巨大的基礎設施分發內容,這個基礎設施可以由全世界成千上萬的服務器組成(例如Akamai)。此外,雲分發網路執行廣泛的網路和服務器測量,並使用這些測量結果將客戶重定向到附近的服務器。互聯網因此得以形成巨大的規模6。舉個例子,單單 YouTube 就擁有超過 10 億的用戶,而北美晚上高峰時段高達 70% 的網路流量來自 Netflix 和 YouTube 等流媒體視頻和音頻網站。如果沒有雲分發網路,這是不可能的。
這與區塊鏈的現狀形成了鮮明對比。實際上,正如前面所解釋的,通過區塊鏈網路傳播一個 1 MB 的區塊是一項耗時的任務,並且增加區塊的大小可能會導致無法挽回的錯誤。然而,雲分發網路每秒鐘能夠發送 TB 級的數據,而且大家也都覺得這是理所應當的。這樣的網路可以用來擴展區塊鏈嗎?
毫無疑問,雲分發網路可以提高區塊鏈的性能。但問題在於信任。在區塊鏈生態系統中,節點不信任它的直連對等節點,那麼它如何信任一個比任何單個節點都強大得多的雲分發網路呢?雲分發網路是可以審查區塊鏈網路的交易、區塊或礦工的中心化系統。例如,雲分發網路管理員可以根據自己的政策、業務利益或法律要求,拒絕包含未經授權交易者的區塊,或未經授權礦工的區塊。
因此,關鍵的問題是,是否有可能讓雲分發網路變得免信任(trustless),這樣它們就可以被用來擴展區塊鏈網路,而無需借助本文前面提到的審查和其他權力。這個概念被稱為可驗證網路中立(provable net neutrality)。本文沒有深入討論其形式化定義,只是概述了與此概念相關的關鍵屬性。
首先,網路不應該基於區塊的內容審查信息。其次,網路不應該審查節點。第三,節點應該能夠連續地驗證上述兩個屬性,並且在網路出現錯誤行為時,可以放棄和替換網路。如何在一個網路中做到這些屬性呢?
一個可驗證的中立區塊鏈分發網路
考慮一個雲分發網路,它的目標是使區塊鏈系統(不一定只是密碼學貨幣)能夠擴展到每秒數千個上鏈交易。此外,它的另一個目標是同時為眾多密碼學貨幣和區塊鏈提供可伸縮性,使用全球基礎設施以可驗證的中立方式支持分布式區塊鏈系統。這就是所謂的區塊鏈分發網路BDN(blockchain distribution network)。本節概述了系統的信任模型,然後描述了做到中立屬性所需的關鍵機制。
反向信任模型
區塊鏈分發網路(BDN)的信任模型基於兩個觀察結果:首先,長時間的區塊傳播永遠不可能大幅度提高免信任(trustless)區塊鏈對等網路(如比特幣)的可擴展性;其次,小型中心化系統可以很好地擴展,即通過信任一小部分參與節點並將區塊鏈打包交易的控制權交給它們(例如 Ripple 和 EOS)。
然而,這種中心化破壞了區塊鏈最顯著的一個方面:對交易(或交易打包權)的分布式和去中心化控制。把區塊鏈交易打包權交給有限數量的參與節點,這樣就允許參與節點在用戶、節點和礦工之間串通、審查和區別對待(discrimination)。有限的參與節點還降低了惡意節點為控制系統而不得不付出的節點數量代價。
可驗證網路中立
簡而言之,區塊鏈分發網路(BDN)只能將所有區塊公平地傳播給所有區塊鏈節點,而且,BDN 無法區別對待區塊(discrimination),因為區塊鏈節點會經常測試 BDN 網路,並且節點間仍然以點對點的方式連接。
加密區塊
為了防止區塊鏈分發網路(BDN)根據其內容阻止任何區塊的傳播,區塊在加密後進行傳播(圖 3 中的步驟 1)。BDN 的加密還改變了區塊大小,隱藏了交易的數量和它們的總大小。在區塊被傳播之後,接收方通過發送區塊的哈希通知發送方(圖 3 中的步驟 2)。最後,公布一個區塊的加密密鑰,並直接在區塊鏈對等網路上傳播(圖3中的步驟3)。加密密鑰很小,只有幾個字節,允許它在對等網路上直接快速傳播,且BDN不能阻止它。(校對註:此處使用的加密技術應該是對稱加密,即加密與解密用的是同一把密鑰)。
間接中繼
為了確保區塊鏈分發網路(BDN)不會阻止單個節點傳播它們的區塊,節點可以不將區塊直接傳播到 BDN。對於一個沒有被 BDN 傳播的區塊(圖 4 中的步驟 1),發送節點將把它(區塊)傳播到對等網路上的一個對等節點(圖 4 中的步驟 2),這個對等節點將把它(區塊)轉發給 BDN(圖 4 中的步驟 3),對 BDN 混淆區塊的起源。例如,在中國挖出一個區塊的節點可以將其轉發給歐洲的一個節點,然後該節點通過 BDN 發送該區塊。除了間接地將區塊中繼到 BDN 之外,節點還可以請求它們的對等節點將來自 BDN 的傳入區塊中繼給它們。這確保 BDN 不能通過延遲分發區塊來區別對待節點,因為節點不需要為了從其服務中獲益而與 BDN 直接交互。
通過測試區塊進行審計
雖然區塊鏈分發網路(BDN)不知道哪個節點挖到的區塊,但它可能試圖阻止或拖延來自某些節點的區塊,從而影響它們所中繼的所有區塊。為了檢測和防止這種行為,節點必須能夠持續監視 BDN 的服務。這種監視是通過允許節點將加密的無效區塊、測試區塊直接髮送到 BDN(圖5)並測量對等節點報告測試區塊到達所需的時間來做到的。 BDN 無法僅對有效區塊使用歧視性策略,並忠實地傳播測試區塊,因為這兩個測試區塊在密鑰發布之前是無法區分的。
因此,通過使用流量加密和間接流量中繼,以及顯式審計 BDN,區塊鏈節點能夠限制 BDN 的不端行為,有效地將 BDN 管理員的權限與 BDN 基礎設施解耦。如果 BDN 完全停止分發區塊,或者只向一小部分節點分發區塊,區塊鏈節點可以放棄使用 BDN。
因為節點經常使用測試區塊來推斷接收區塊的最佳來源,被 BDN 歧視的節點將只是從其對等節點接收區塊。因此,如果 BDN 惡意歧視許多或所有對等節點,對等節點將直接形成它們自己的對等網路,直到一個不同的系統取而代之。此外,如果歧視是由大規模的系統故障引起的,一旦故障得到解決,對等節點將返回使用 BDN。
性能
本質上,區塊鏈分發網路(BDN)部署了一種廣播原語(premitive),這意味著它可以有效地將數據從一個源節點傳輸到區塊鏈網路中的所有其他節點。與對等網路相反(在對等網路中,每個區塊鏈節點都連接到其他許多節點,這些節點通常分布在世界各地),區塊鏈節點將這種一對多的通信替換為一對一的通信。這是因為區塊鏈節點連接到單個 BDN 服務器。
對於較大的 TPS 速率,使用單個連接比使用多個連接更有助於提高可擴展性。為了有效地審計 BDN,必須在對等網路中連接區塊鏈節點。然而,大部分數據是在 BDN 之間來回傳輸的。以下是 BDN 幫助擴展區塊鏈的幾種方法。
交易緩存
在區塊鏈系統中,如比特幣或以太坊,每個節點都會重復收到同一筆交易的數據:第一次是廣播原始交易時,第二次是交易上鏈之時(交易數據是區塊數據的一部分)。BDN 可以有效地通過雲分發交易,並對它們進行索引,然後在傳輸區塊時利用索引(而不是原始交易)。這可以有效地將區塊大小壓縮 100 多倍,假設原始交易大約 500 字節,而索引可以是 4 字節或更少。
交易緩存是區塊鏈生態系統中已經存在的一種思想,它已經被某些項目採用 3,但一般只有少數節點部署這項技術,而沒有在網路協議中做到,因為純區塊鏈系統中並非所有交易都會到達所有節點,即使是輕微的異步也會導致區塊大小的顯著增加(並不是所有的交易都是 」壓縮後的「),性能會因此受到影響。相反,BDN 可以有效地傳輸和索引區塊鏈交易。
直通路由
與區塊鏈節點不同,BDN 不能檢查流經網路的區塊的有效性,因為區塊是加密的。這有助於通過網路快速傳輸數據塊。特別是,在一個 BDN 節點接收到一個區塊的所有比特之前,BDN 已經可以開始將接收到的區塊的比特傳輸到網路的其他部分。這就是所謂的直通路由,它已經在網路交換機中被廣泛採用了幾十年。對於區塊傳播,它仍然可以顯著加快數據傳輸速度,尤其是當數據塊很大的時候。
交易Incast問題
交易需要在區塊鏈網路中廣播。在沒有 BDN 的情況下,當 TPS 速率較高時,就會產生了所謂的交易 incast 問題:一個節點會同時從多個源以較高的速率接收相同的交易。這將顯著影響節點的資源,並影響整個區塊鏈的性能。BDN 消除了這個問題,因為大部分數據(包括交易)都是通過單個 BDN 服務器傳播的。
區塊鏈可擴展性的相關研究
下面描述了提高區塊鏈可擴展性的其他方法。
Off-chain解決方案
提高可擴展性的另一種方法是使用 off-chain 交易,例如,閃電網路,其目的是減少主鏈上的冗餘數據。一般來說,一個 off-chain 解決方案會在交易雙方之間打開一個支付通道,即讓買賣雙方交換資金,同時記錄中間結餘,然後在區塊鏈上進行交易結算。
BDN 與這些解決方案沒有相關,也不會相互衝突。作為一個 off-chain 擴展解決方案,本質上仍然需要上鏈功能。此外,潛在的擴展效益是倍增的。如果底層的區塊鏈能夠支持比以前多 1000 倍的交易數量,並且 off-chain 交易將吞吐量增加 1000 倍,那麼,區塊鏈的吞吐量可以倍增 6 個數量級。
On-chain 解決方案
On-chain 解決方案通常涉及以某種方式修改共識協議,以做到更高的吞吐量。其中一種方法,即分片技術(sharding),將區塊鏈分割成幾個較小的分片,一個全節點只需要追蹤一個分片,而不是完整的區塊鏈。這些分片相互交錯,精心維護,以便保留區塊鏈的原始安全屬性。在這個領域還有許多其他的想法2。雖然這些方法顯示出一些潛力,但是它們的健壯性、安全性和可用性在實踐中還有待觀察。
盡管如此,在更快的網路層中,所有的 on-chain 解決方案都將執行得更好,這也是 BDN 的用武之地。事實上,在分布式共識協議中,每個遵循協議的節點必須達成相同的決策。因此,每個這樣的對等節點都必須獨立於共識協議,獲取關於系統中每個交易的信息。BDN 只致力於解決這個問題(其實就是一個廣播問題),因為每個有效的信息片段都必須傳播到系統中的每個對等節點。因此,BDN 方案的有效性與共識協議無關,它能夠顯著提高任何區塊鏈的性能。
總結
可驗證中立雲無疑是提高區塊鏈可擴展性的可行解決方案。通過優化傳輸層,不僅可以從根本上提高吞吐量,而且可以顯著降低延遲。事實上,當今數據中心的延遲分布主體已經偏向於微秒級,毫秒級只存在於分布的尾部。BDN 入網點沒有理由不能做到類似的性能。
在這些 BDN 入網點之間添加專用的光纖基礎設施,將進一步減少吞吐量和延遲,從而建立高級 BDN 主幹網。然而,做到這一願景的關鍵在於通過區塊鏈生態系統在底層網路基礎設施中建立信任。而通過一個可驗證中立網路設計將管理權限與基礎設施解耦就是我們的答案。
註 2:Cachin, C., Vukolic, M. 2017. 區塊鏈共識協議雜談. arXiv; https://arxiv.org/pdf/1707.01873.pdf.
註 3:Clifford, A., Rizun, P. Suisani, A., Stone, A., Tschipper, P. 2016. 邁向大規模鏈上擴展方案:用 Xthin 展現我們的區塊廣播成果; https://medium.com/@peter_r/towards-massive-on-chain-scaling-presenting-our-block-propagation-results-with-xthin-da54e55dc0e4.
註 4:Croman, K., Decker, C., Eyal, I., Gencer, A. E., Juels, A., Kosba, A., Miller, A., Saxena, P., Shi, E., Sirer, E. G., Song, D., Wattenhofer, R. 2016. 論如何擴展去中心化的區塊鏈. In International Conference on Financial Cryptography and Data Security. Springer. 106-125.
註 5:Decker, C., Wattenhofer, R. 2013. 比特幣網路中的信息傳播. In the 13th IEEE International Conference on Peer-to-Peer Computing; https://ieeexplore.ieee.org/document/6688704.
註 7:Klarman, U., Basu, S., Kuzmanovic, A., Sirer, E. G. 2018. bloXroute: 一種可擴展的免信任區塊分發網路; https://bloxroute.com/wp-content/uploads/2018/03/bloXroute-whitepaper.pdf.
註 8:Nakamoto. S. 2008. Bitcoin: a peer-to-peer electronic cash system. Bitcoin.org; https://bitcoin.org/bitcoin.pdf.
原文鏈接:https://queue.acm.org/detail.cfm?id=3319534作者:Aleksandar Kuzmanovic翻譯&校對:石濤聲 & 阿劍
Aleksandar Kuzmanovic 是美國西北大學計算機科學教授。他最近的研究包括內容分發網路、網路中立性和區塊鏈。他是初創公司 bloXroute Labs 的聯合創始人,並在該公司擔任首席架構師。
本譯本在譯者的原稿基礎上修改而成。
(本文來源於以太坊愛好者 EthFans,未經作者許可嚴禁轉載,違者法律必究)