Blockchain

區塊鏈可擴展性瓶頸在哪裡?

  • June 10, 2019

有一段時間我仍然不了解區塊鏈。我從來沒有在 100% CPU 或網路負載下看到過乙太坊客戶端。那麼為什麼不能更快地處理交易呢?我假設礦機上 100% 的 GPU 負載不是瓶頸,因為塊大小是任意的。那麼,瓶頸究竟在哪裡呢?

謝謝!

兩種瓶頸類型

這裡有兩種類型的速度限制。這些是延遲和吞吐量。延遲是必須等待的時間量,直到交易被處理。另一個是吞吐量:在特定時間內可以處理的事務數。想像一下有 100 名顧客和 10 個收銀台的超市和有 5 名顧客和 1 個收銀台的雜貨店之間的區別。現在,想像一下每個收銀台每分鐘可以處理一位顧客。在第一種情況下,一般人要等 5 分鐘才能結賬。第二,每個人平均等待2.5分鐘。另一方面,超市每分鐘可以處理 10 倍的顧客。因此,繁忙的超市可能比小型雜貨店具有更高的吞吐量,但延遲可能更高。現在想像一下,兩家商店每天連續關閉 20 個小時,每天有 100 名顧客。從本質上講,您平均需要等待 10 個小時才能購買雜貨(結賬時間可以忽略不計)。您可以看到結帳櫃檯的使用率很低。

延遲瓶頸

在乙太坊中,區塊之間的最短時間目前平均約為 25 秒。因此,最小延遲平均約為 12.5 秒(即,如果您的交易被選擇用於下一個塊,您平均等待大約 12.5 秒以將其包含在內)。如果每分鐘只發送一個事務,這對平均延遲沒有影響,吞吐量將是每分鐘一個塊。處理塊的 CPU 使用率將保持非常低。出於技術原因,之前將塊之間的間隔設置為較低的值以使網路保持同步(即,以便節點可以達成共識)。從技術上講,這個數字可能會更低,而且曾經如此。由於乙太坊冰河時代/難度炸彈,平均出塊時間正在上升,這是一個非技術原因,用於為開發人員提供強有力的激勵,以在引入 PoS 機制時加快引入權益證明(PoS) 以取代工作量證明,並鼓勵節點升級其客戶端。由於大部分時間都花在等待資訊上,因此 CPU 使用率仍然很低。

吞吐量瓶頸

同時,在吞吐量方面存在技術限制。這些限制中的第一個是實用性:如果儲存區塊鏈所需的儲存容量每週增長 1TB,對於許多/大多數節點運營商來說,執行一個節點將非常困難,因為我猜沒有多少人執行(甚至不知道如何執行)能夠以該速率擴展其儲存的系統(如果有的話)。這也有一個經濟方面:即使人們知道如何做,對於試圖添加一個節點來驗證交易以跟上這種增長率的人來說,這將是昂貴的。

吞吐量的第二個技術限制是節點的處理和儲存速度受到限制,這意味著某些節點將無法足夠快地驗證塊以保持同步,而對每個塊中的交易所涉及的處理/處理沒有某種限制. 出於同樣的原因,這導致了對探勘節點可以包含在一個塊中的交易數量的限制。如果對每個區塊的處理/儲存沒有限制,將更難確定交易包含哪些費用以確保及時處理:每個區塊包含的交易數量可能會有很大差異,具體取決於哪個礦工處理一個區塊,以及網路經常會不同步。分片是繞過這個技術限制的一種方法。請注意,在等待磁碟返回數據時,CPU 正在轉動它的拇指,您會看到 CPU 使用率很低。即使區塊在某些挖礦節點上遇到處理限制,更快的節點也會花費更少的時間來驗證區塊的交易,並且不會看到 100% 的 CPU 使用率。

第三個限制來自上述吞吐量的技術限制:對塊中交易可以使用的處理/儲存量的人為限制以塊氣體限制的形式出現。我認為這樣做的原因之一是避免達到兩個技術限制中的任何一個。這使得執行節點變得更容易、更便宜。在這種情況下,吞吐量的技術限制與分片數量成比例地增加,並且塊氣體限制也可以通過這種方式提高。在實踐中,可能不希望直接與網路的技術吞吐量成比例地增加塊氣體限制:我認為任何節點都希望能夠驗證乙太坊網路是否按設計執行(即檢測作弊者);因此,節點可以隨機檢查分片’ 正確操作。發現作弊者的機會隨著分片數量的增加而降低。如果你需要一個節點來測試單個分片——為了跟上交易——那麼你可以使用生日悖論對您的優勢是保持驗證節點數量(相對於分片總數)的亞線性增長,從而以相當高的機率檢測作弊者。

結論

乙太坊中存在延遲和吞吐量瓶頸,並且正在研究解決方案來解決這兩個問題。目前的乙太坊瓶頸是人為的(冰河時代和區塊氣體限制),但有助於使相對便宜的乙太坊節點存在並為乙太坊網路的使用者提供更公平的競爭環境。

真的沒有像“延遲”和“吞吐量”這樣的兩種類型的瓶頸。這些被簡化為“硬體”瓶頸。

所以,再次:

有兩種類型的瓶頸。

1.The hardware bottleneck
2.The algorithm bottleneck

硬體瓶頸基本上是您執行區塊鏈的硬體的限制。如果乙太坊的所有節點都使用 10 個千兆乙太網卡,16 個核心處理器,他們將獲得更高的交易率。理論上,乙太坊每秒可以處理 1,000 筆交易。

現在,算法瓶頸。算法瓶頸在我的網站這篇文章中用非技術語言解釋:http ://www.afterether.org/blockchain-scalability-by-blockchain-clustering.html 但這裡只是一個總結:

  • 乙太坊網路一次僅由一台電腦執行,因此您可能擁有一個由 100 萬個節點組成的網路,只有 1 個節點會在區塊鏈中創建目前區塊。因此,基本上所有乙太坊 1000 萬賬戶人群都在使用一台電腦進行所有交易。可笑,我知道。
  • 區塊鏈算法是串列的(與並行算法相反)。它不能並行化,因此不能擴展。這是區塊鏈的巨大問題,它們只是沒有按設計擴展。你對此無能為力。

要解決瓶頸問題,您可以對硬體和軟體進行微調,或者將貨幣拆分到多個區塊鏈中。

引用自:https://ethereum.stackexchange.com/questions/25664