有人可以像我 5 歲一樣向我解釋 FIBER,為什麼它有用?
我閱讀了該網站,但它們暗示您已經知道為什麼這很有價值。有人可以在這個問題上照亮我嗎?
首先是“為什麼重要”:
光纖(快速網際網路比特幣中繼引擎)是一種協議,它試圖以盡可能接近物理極限的延遲在世界各地傳送比特幣塊。
這非常重要,因為比特幣挖礦旨在成為一種公平的彩票:如果你擁有 x% 的雜湊率,你應該平均找到 x% 的塊。但是,當需要時間來溝通區塊時,挖礦的行為更像是一場比賽而不是彩票:更大的礦工獲得了不公平的份額,從而產生了集中化的壓力。
這是因為當一個礦工製作一個區塊時,其他礦工在他們聽說之前無法繼續擴展它,在此期間他們可能會製作自己的區塊。如果您是一名小型礦工並製作了一個區塊,這對您不利,因為直到以後沒有人試圖探勘您的區塊的繼任者。如果一個更大的礦工開采了一個區塊,它也會對你不利,因為你已經落後了。
這種競爭行為與實現自私挖礦相同。
競爭效應還可以使試圖壓倒網路的攻擊者受益,因為他們不需要與失去陳舊塊的雜湊率競爭。
提高傳播速度可以減少競爭,使挖礦更加公平,降低中心化壓力,並提高網路安全性。
現在,“為什麼這麼難”:
世界很大,從舊金山到澳大利亞的往返時間通常超過 200 毫秒。這些延遲主要是由於光纖中的光速,雖然更好的路由可以在一定程度上改善它們,但如果沒有通過地球的中微子通信或科幻小說中的其他東西,它們就不會消失。
國際網際網路連結經常有丟包。如果您在 200 毫秒 RTT 路徑上發送消息,您將在 200 毫秒內聽不到任何失去的數據包,並且在另外 100 毫秒內他們無法獲得任何替換。當延遲很高時,尤其是在有任何損失的情況下,像 TCP 這樣的傳統傳輸協議在實現鏈路容量方面做得很差。
理論上這個問題會有所幫助,因為 99.9% 的塊數據是已知的,因為該塊主要包含已經廣播的交易,但不幸的是,發送塊的節點不知道到那時你會失去哪些交易他們的街區出現了,你告訴他們會因為上面提到的往返時間而花費太長時間。
Fiber 做了什麼來解決它:
Fiber 讓您可以有效地建構一個分佈式節點,在內部將一個塊在世界各地移動,非常接近組成它的電腦之間的最低單向通信延遲。
Fiber 的作者曾經在維護良好且任何人都可以連接的公共系統上執行一個這樣的節點。帶有 BIP152 的普通比特幣 P2P 協議用於最後一英里——因為這是 BIP152 的優化目標。
與 BIP152(與它共同開發)類似,Fiber 首先發送一個短塊草圖:一個短散列和長度列表,允許遠端使用其記憶體池將交易佈局到一個塊中,其中位置有孔交易失去或雜湊不明確。
然後光纖將塊分解成數據包並發送糾錯數據。糾錯讓接收者在接收到與失去塊一樣多的數據包後立即恢復塊,即使發送者不知道失去了什麼。糾錯編碼也用於初始草圖。這類似於 Raid 或 PAR 編碼的工作方式,但由於需要非常快,因此實現變得更加複雜。
所有這些通信都通過具有預程式傳輸速率的 UDP 進行,因此它不需要緩慢加速或等待失去的數據包。
發送方還向其每個光纖對等點發送不同的塊,這些對等點一旦獲得它們就會在彼此之間中繼這些塊,以利用所有可用的介面頻寬。當一個 Fiber 對等點足夠解碼他們所做的塊時,並開始發出新的塊。
這個過程避免了任何重複的數據被發送,並且對丟包以及鏈路和節點故障具有高度的強韌性,並實現了非常一致的延遲。
在每一步中,Fiber 都會以頻寬換取延遲,並且可以發送數倍於塊數據大小的數據,以便在它所經過的長途鏈路上實現最低延遲。
它的細節還有很多,可能足以回答兩打問題。
纖維從何而來?
Fiber 由 Matt Corallo 建構,是多年執行早期快速中繼網路經驗以及對快速塊傳播技術進行多年研究的產物。Matt 採用了許多計算速度太慢而無法實用的想法,解決了剩餘的工程挑戰,優化了它,然後將結果放到了一個精心策劃的公共系統上。良好的網路管理和系統管理員工作對於獲得低延遲幾乎與協議本身一樣重要。