bloXroute 剛剛 宣佈 啓動首個 Layer 0 區塊鏈可擴展性解決方案 BDN V1,通過加速區塊和交易的傳播速度實現區塊鏈擴展,該版本現只支持以太坊和比特幣現金,並將與本體、Quorum、Conflux 和 Metadium 進行集成。本文由 bloXroute Labs 首席架構師 Aleksandar Kuzmanovic 詳細介紹了 BDN 如何從根本上提高吞吐量並大幅降低延遲。

原文標題:《引介 | 可驗證分發網絡:區塊鏈擴容終極解決方案》(Net Neutrality: Unexpected Solution to Blockchain Scaling)
作者:Aleksandar Kuzmanovic,初創公司 bloXroute Labs 聯合創始人兼首席架構師,美國西北大學計算機科學教授
翻譯與校對:石濤聲、阿劍

由於區塊鏈的去中心化特性(即沒有一個實體控制其運行),越來越多的人們期待,或者至少是希望,區塊鏈在更多領域發揮其顛覆性潛力。然而,去中心化是有代價的:區塊鏈無法擴展(scale),即無法及時處理大量甚至適量的交易。例如,(平均而言)比特幣每秒僅能處理三筆交易。

問題的根源,也是區塊鏈的瓶頸,在於區塊鏈乃是基於免信任(trustless)的對等網絡的。在這個模式下,信息在網絡中節點間的每一次傳輸中都必須先經過驗證。毫無疑問,雲分發網絡可以解決其他領域的類似性能挑戰(例如 Akamai 或 YouTube 解決 web 和視頻的傳輸性能),也可以用於解決區塊鏈的可擴展性問題。問題在於,像雲這樣如此龐大的中心化基礎設施擾亂了區塊鏈的去中心化特性,從而消除了區塊鏈的顛覆性潛力。由此,可以提出這樣一個問題:雲分發網絡能否在不破壞區塊鏈去中心化特性的前提下提高其可擴展性?

答案是肯定的,解決方案的關鍵是基於現有概念(網絡中立)提出一個改進後的高級版本:可驗證中立雲分發網絡。

由比特幣在 2008 年發起區塊鏈和密碼學貨幣革命正在蓬勃發展。主流密碼學貨幣的市值雖然劇烈波動,但仍有數千億美金的規模。區塊鏈的一個獨特特性是沒有中心化治理。區塊鏈只依賴於一個由驗證和認證所有交易的參與節點組成的全球點對點網絡。基於區塊鏈的純粹分佈式和去中心化設計,許多人認爲,這種系統在密碼學貨幣之外的其他領域具有顛覆性的潛力,包括醫療、政府、製造、零售、保險、物聯網、共享經濟等。許許多多大大小小的高科技公司都在密切關注區塊鏈領域,分析這項新技術將如何影響他們現有或未來的運營。

但區塊鏈的一個主要問題是可擴展性。區塊鏈系統吞吐量是用系統能夠支持的 TPS (每秒交易數)來度量的。比特幣目前的平均吞吐量爲 3 TPS,而 Visa 中心化系統的平均吞吐量爲 2000 TPS,每日峯值爲 4000 TPS,最大吞吐量爲 5.6 萬 TPS。沒有可擴展性,密碼學貨幣系統將很難成爲主流,區塊鏈也不太可能在任何其他領域實現其顛覆性潛力。

什麼是區塊鏈 ?

區塊鏈是一個公開的分佈式賬本,它存儲所有過去的交易,本質上是一種類型的數據庫,由對等網絡中相互連接的多個(可能多達數萬個)節點創建和共享。爲了就數據庫的正確性達成共識,必須對寫入數據庫的某些規則加以規定。雖然規則可能有所不同,但一般包括以下內容:

  • 交易(通常是某個用戶發送一定數量的密碼學貨幣給另一個用戶)必須包含來自發起者的數字簽名,以便進行身份驗證。
  • 必須按順序添加交易。交易不會單個單個加入賬本,相反,它們是成批添加的,稱爲區塊。例如,比特幣區塊鏈要求每個新區塊都包含一個哈希 「難題」 的答案,而哈希 「難題」 的具體情形是由上一個區塊和當前嘗試上鍊的區塊的具體情形決定的(即每次添加區塊都是一次全新的嘗試)。
  • 添加區塊的過程非常昂貴,而且參與者需要相互競爭。想要向區塊鏈添加區塊的各個參與節點要麼投資密碼學貨幣,要麼投資算力,比如用於計算比特幣出塊所需哈希 「難題」 的計算設備。這樣的參與節點稱爲礦工,向區塊鏈添加新區塊的過程稱爲挖礦。
  • 最長的區塊鏈便是最新版本。這條規則與前面的規則相結合,便使得成功僞造區塊鏈的代價非常高。即使複製現有的區塊鏈並試圖修改最後幾個區塊,其代價也非常昂貴。一旦區塊在網絡上得到足夠的確認,刪除或修改區塊就變得極爲昂貴且無利可圖。因此,交易只能添加到區塊鏈,上鍊之後便永遠不會被刪除。
  • 獨立驗證。當節點檢查區塊鏈數據庫的副本時,它能夠獨立地驗證前面的所有規則是否已被遵守。如果每個用戶都能獨立驗證區塊鏈,那麼所有用戶就可以就正確的區塊鏈達成共識。
  • 在區塊鏈中添加區塊可以收穫報酬。因爲向區塊鏈寫入區塊比較困難,所以並不是所有節點都會參與這個過程。許多用戶會創建交易,然後要求將交易寫入網絡,用戶通常會支付一定的費用作爲礦工報酬。此外,只要礦工在一輪挖礦過程中獲勝,並有機會在區塊鏈中添加一個區塊,他們就可以將新產出的密碼學貨幣分發給自己。
  • 區塊鏈發生分叉,通過最長鏈規則解決。因爲區塊鏈運行在點對點網絡中,由於網絡延遲問題,可能出現同一個位置上挖出兩個區塊的情況(即某些節點還不知道新區塊已經挖出,因此在上一個區塊後繼續挖礦),這種情形我們稱之爲「分叉」。分叉實際上就是節點間就區塊鏈的最新版本產生了分歧。但只要節點始終選擇網絡上最長的區塊鏈,一段時間後就可以解決分叉,達成共識。

區塊鏈可擴展性問題

在解釋區塊鏈可擴展性問題之前,我們先看看區塊鏈系統的性能表現如何。圖 1 和圖 2 顯示了比特幣和以太坊這兩種主流密碼學貨幣的交易積壓情況。你可以看到,成千上萬的交易等待着被寫入區塊鏈。爲了增加被礦工選中 「上鍊」的可能性,用戶(自願)增加了交易費。因此,在交易擁堵期間,交易費可能會大幅增長。

剛剛上線的 BDN 是如何從 0 層提高區塊鏈可擴展性?看看 bloXroute 首席架構師解讀

剛剛上線的 BDN 是如何從 0 層提高區塊鏈可擴展性?看看 bloXroute 首席架構師解讀

爲了理解瓶頸在哪裏,我們先算一下區塊鏈的實際吞吐量。系統吞吐量直接取決於兩個參數:區塊大小 B (即,每個區塊中可以包含的交易數據量)和出塊間隔時間 T (即,系統挖出一個新區塊所需的平均時間)。在比特幣中,B = 1 MB,T ~ 600 秒,大約是 3TPS。由此,可以通過以下選項改進區塊鏈的吞吐量:增加 B,以包含更多交易;減少 T,以更快的速度出塊;或雙管齊下。問題是,這些參數都不能隨意更改(理由我們會在後文詳細解釋)。

顯然,正是區塊鏈的分佈式特性導致了這些問題。的確,只要區塊和交易能夠在節點之間瞬時傳播,就可以快速地挖出大量區塊,直到達到特定 CPU 和閃存陣列的性能上限。然而,實際上,區塊鏈節點——成千上萬甚至更多——分佈在世界各地。因此,網絡纔是瓶頸。

區塊鏈網絡中的節點以對等方式通信。不幸的是,這與以下高吞吐量、低延遲的目標背道而馳:

  • 信息從一個節點傳輸到另一個節點;因此,在整個網絡中傳播信息需要多跳(多個傳輸過程)。由於網絡中的每個節點都不信任其他節點,因此會在每一跳中獨立地驗證所傳播的信息。驗證過程通常需要執行密碼學運算,而這會增加延遲並影響吞吐量。
  • 區塊鏈網絡中節點的性能差異較大,這意味着關鍵路徑上的單個慢節點會使傳播時間膨脹。
  • 最後,對等網絡中的節點是隨機形成的;因此,它們無法保證組織起來的網絡可以達到最優傳播效果:數據往往會通過網絡中的次優路徑傳輸。

因此,將一個 1MB 的區塊傳播到比特幣網絡 90% 的節點平均需要 11.6 秒,這是 2017 年 3 月觀察到的平均傳播時間。不幸的是,這只是問題的一部分。在理論和實踐 中都表明,將區塊大小 B 增大 X 倍也會使區塊傳播所需的時間增大 X 倍。同樣地,將出塊間隔時間 T 縮減 X 倍也會產生完全對應的效果。這意味着區塊傳播時間會隨着這兩個參數的增加而成比例地增加。

例如,將區塊大小增加十倍也會使區塊傳播時間增加十倍,使它們的時間超過 100 秒。同樣,將區塊大小增加 100 倍將導致區塊傳播時間超過 1000 秒。這樣的傳播時間超過了出塊間隔,導致每次挖出一個新區塊時都會產生一個分叉。實際上,在這個場景中,無法通過繼續挖出後續區塊來解決分叉,相反,區塊鏈將分解爲「分叉」、「分叉的分叉」分和和「分叉的分叉的分叉」,直到節點和礦工不知道哪個分叉是「正確的」鏈——因此區塊鏈崩潰。這是由網絡瓶頸引起的區塊鏈可擴展性問題。

雲分發網絡(Cloud-Delivery Networks)

雲分發網絡在解決 Internet 上的性能問題方面非常成功。這樣的網絡通過一個巨大的基礎設施分發內容,這個基礎設施可以由全世界成千上萬的服務器組成(例如 Akamai)。此外,雲分發網絡執行廣泛的網絡和服務器測量,並使用這些測量結果將客戶重定向到附近的服務器。互聯網因此得以形成巨大的規模。舉個例子,單單 YouTube 就擁有超過 10 億的用戶,而北美晚上高峯時段高達 70% 的網絡流量來自 Netflix 和 YouTube 等流媒體視頻和音頻網站。如果沒有云分發網絡,這是不可能的。

這與區塊鏈的現狀形成了鮮明對比。實際上,正如前面所解釋的,通過區塊鏈網絡傳播一個 1 MB 的區塊是一項耗時的任務,並且增加區塊的大小可能會導致無法挽回的錯誤。然而,雲分發網絡每秒鐘能夠發送 TB 級的數據,而且大家也都覺得這是理所應當的。這樣的網絡可以用來擴展區塊鏈嗎?

毫無疑問,雲分發網絡可以提高區塊鏈的性能。但問題在於信任。在區塊鏈生態系統中,節點不信任它的直連對等節點,那麼它如何信任一個比任何單個節點都強大得多的雲分發網絡呢?雲分發網絡是可以審查區塊鏈網絡的交易、區塊或礦工的中心化系統。例如,雲分發網絡管理員可以根據自己的政策、業務利益或法律要求,拒絕包含未經授權交易者的區塊,或未經授權礦工的區塊。

因此,關鍵的問題是,是否有可能讓雲分發網絡變得免信任(trustless),這樣它們就可以被用來擴展區塊鏈網絡,而無需藉助本文前面提到的審查和其他權力。這個概念被稱爲可驗證網絡中立(provable net neutrality)。本文沒有深入討論其形式化定義,只是概述了與此概念相關的關鍵屬性。

首先,網絡不應該基於區塊的內容審查信息。其次,網絡不應該審查節點。第三,節點應該能夠連續地驗證上述兩個屬性,並且在網絡出現錯誤行爲時,可以放棄和替換網絡。如何在一個網絡中實現這些屬性呢 ?

一個可驗證的中立區塊鏈分發網絡

考慮一個雲分發網絡,它的目標是使區塊鏈系統(不一定只是密碼學貨幣)能夠擴展到每秒數千個上鍊交易。此外,它的另一個目標是同時爲衆多密碼學貨幣和區塊鏈提供可伸縮性,使用全球基礎設施以可驗證的中立方式支持分佈式區塊鏈系統。這就是所謂的區塊鏈分發網絡
BDNblockchain distribution network)。本節概述了系統的信任模型,然後描述了實現中立屬性所需的關鍵機制。

反向信任模型

區塊鏈分發網絡(BDN)的信任模型基於兩個觀察結果:首先,長時間的區塊傳播永遠不可能大幅度提高免信任(trustless)區塊鏈對等網絡(如比特幣)的可擴展性;其次,小型中心化系統可以很好地擴展,即通過信任一小部分參與節點並將區塊鏈打包交易的控制權交給它們(例如 Ripple 和 EOS)。

然而,這種中心化破壞了區塊鏈最顯著的一個方面:對交易(或交易打包權)的分佈式和去中心化控制。把區塊鏈交易打包權交給有限數量的參與節點,這樣就允許參與節點在用戶、節點和礦工之間串通、審查和區別對待(discrimination)。有限的參與節點還降低了惡意節點爲控制系統而不得不付出的節點數量代價。

可驗證網絡中立

簡而言之,區塊鏈分發網絡(BDN)只能將所有區塊公平地傳播給所有區塊鏈節點,而且,BDN 無法區別對待區塊(discrimination),因爲區塊鏈節點會經常測試 BDN 網絡,並且節點間仍然以點對點的方式連接。

加密區塊

爲了防止區塊鏈分發網絡(BDN)根據其內容阻止任何區塊的傳播,區塊在加密後進行傳播(圖 3 中的步驟 1)。BDN 的加密還改變了區塊大小,隱藏了交易的數量和它們的總大小。在區塊被傳播之後,接收方通過發送區塊的哈希通知發送方(圖 3 中的步驟 2)。最後,公佈一個區塊的加密密鑰,並直接在區塊鏈對等網絡上傳播(圖 3 中的步驟 3)。加密密鑰很小,只有幾個字節,允許它在對等網絡上直接快速傳播,且 BDN 不能阻止它。(校對注:此處使用的加密技術應該是對稱加密,即加密與解密用的是同一把密鑰)。

剛剛上線的 BDN 是如何從 0 層提高區塊鏈可擴展性?看看 bloXroute 首席架構師解讀

間接中繼

爲了確保區塊鏈分發網絡(BDN)不會阻止單個節點傳播它們的區塊,節點可以不將區塊直接傳播到 BDN。對於一個沒有被 BDN 傳播的區塊(圖 4 中的步驟 1),發送節點將把它(區塊)傳播到對等網絡上的一個對等節點(圖 4 中的步驟 2),這個對等節點將把它(區塊)轉發給 BDN (圖 4 中的步驟 3),對 BDN 混淆區塊的起源。例如,在中國挖出一個區塊的節點可以將其轉發給歐洲的一個節點,然後該節點通過 BDN 發送該區塊。除了間接地將區塊中繼到 BDN 之外,節點還可以請求它們的對等節點將來自 BDN 的傳入區塊中繼給它們。這確保 BDN 不能通過延遲分發區塊來區別對待節點,因爲節點不需要爲了從其服務中獲益而與 BDN 直接交互。

剛剛上線的 BDN 是如何從 0 層提高區塊鏈可擴展性?看看 bloXroute 首席架構師解讀

通過測試區塊進行審計

雖然區塊鏈分發網絡(BDN)不知道哪個節點挖到的區塊,但它可能試圖阻止或拖延來自某些節點的區塊,從而影響它們所中繼的所有區塊。爲了檢測和防止這種行爲,節點必須能夠持續監視 BDN 的服務。這種監視是通過允許節點將加密的無效區塊、測試區塊直接發送到 BDN (圖 5)並測量對等節點報告測試區塊到達所需的時間來實現的。 BDN 無法僅對有效區塊使用歧視性策略,並忠實地傳播測試區塊,因爲這兩個測試區塊在密鑰發佈之前是無法區分的。

剛剛上線的 BDN 是如何從 0 層提高區塊鏈可擴展性?看看 bloXroute 首席架構師解讀

因此,通過使用流量加密和間接流量中繼,以及顯式審計 BDN,區塊鏈節點能夠限制 BDN 的不端行爲,有效地將 BDN 管理員的權限與 BDN 基礎設施解耦。如果 BDN 完全停止分發區塊,或者只向一小部分節點分發區塊,區塊鏈節點可以放棄使用 BDN。

因爲節點經常使用測試區塊來推斷接收區塊的最佳來源,被 BDN 歧視的節點將只是從其對等節點接收區塊。因此,如果 BDN 惡意歧視許多或所有對等節點,對等節點將直接形成它們自己的對等網絡,直到一個不同的系統取而代之。此外,如果歧視是由大規模的系統故障引起的,一旦故障得到解決,對等節點將返回使用
BDN。

性能

本質上,區塊鏈分發網絡(BDN)部署了一種廣播原語(premitive),這意味着它可以有效地將數據從一個源節點傳輸到區塊鏈網絡中的所有其他節點。與對等網絡相反(在對等網絡中,每個區塊鏈節點都連接到其他許多節點,這些節點通常分佈在世界各地),區塊鏈節點將這種一對多的通信替換爲一對一的通信。這是因爲區塊鏈節點連接到單個 BDN 服務器。

對於較大的 TPS 速率,使用單個連接比使用多個連接更有助於提高可擴展性。爲了有效地審計 BDN,必須在對等網絡中連接區塊鏈節點。然而,大部分數據是在 BDN 之間來回傳輸的。以下是 BDN 幫助擴展區塊鏈的幾種方法。

交易緩存

在區塊鏈系統中,如比特幣或以太坊,每個節點都會重複收到同一筆交易的數據:第一次是廣播原始交易時,第二次是交易上鍊之時(交易數據是區塊數據的一部分)。BDN 可以有效地通過雲分發交易,並對它們進行索引,然後在傳輸區塊時利用索引(而不是原始交易)。這可以有效地將區塊大小壓縮 100 多倍,假設原始交易大約 500 字節,而索引可以是 4 字節或更少。

交易緩存是區塊鏈生態系統中已經存在的一種思想,它已經被某些項目採用,但一般只有少數節點部署這項技術,而沒有在網絡協議中實現,因爲純區塊鏈系統中並非所有交易都會到達所有節點,即使是輕微的異步也會導致區塊大小的顯著增加(並不是所有的交易都是「壓縮後的」),性能會因此受到影響。相反,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),將區塊鏈分割成幾個較小的分片,一個全節點只需要追蹤一個分片,而不是完整的區塊鏈。這些分片相互交錯,精心維護,以便保留區塊鏈的原始安全屬性。在這個領域還有許多其他的想法。雖然這些方法顯示出一些潛力,但是它們的健壯性、安全性和可用性在實踐中還有待觀察。

儘管如此,在更快的網絡層中,所有的 on-chain 解決方案都將執行得更好,這也是 BDN 的用武之地。事實上,在分佈式共識協議中,每個遵循協議的節點必須達成相同的決策。因此,每個這樣的對等節點都必須獨立於共識協議,獲取關於系統中每個交易的信息。BDN 只致力於解決這個問題(其實就是一個廣播問題),因爲每個有效的信息片段都必須傳播到系統中的每個對等節點。因此,BDN 方案的有效性與共識協議無關,它能夠顯著提高任何區塊鏈的性能。

總結

可驗證中立雲無疑是提高區塊鏈可擴展性的可行解決方案。通過優化傳輸層,不僅可以從根本上提高吞吐量,而且可以顯著降低延遲。事實上,當今數據中心的延遲分佈主體已經偏向於微秒級,毫秒級只存在於分佈的尾部。BDN 入網點沒有理由不能實現類似的性能。

在這些 BDN 入網點之間添加專用的光纖基礎設施,將進一步減少吞吐量和延遲,從而建立高級 BDN 主幹網。然而,實現這一願景的關鍵在於通過區塊鏈生態系統在底層網絡基礎設施中建立信任。而通過一個可驗證中立網絡設計將管理權限與基礎設施解耦就是我們的答案。

Aleksandar Kuzmanovic 是美國西北大學計算機科學教授。他最近的研究包括內容分發網絡、網絡中立性和區塊鏈。他是初創公司 bloXroute Labs 的聯合創始人,並在該公司擔任首席架構師。本譯本在譯者的原稿基礎上修改而成。

來源鏈接:queue.acm.org