Minisketch:降低比特幣節點頻寬要求

買賣虛擬貨幣
最近,我和格萊布·諾門科(Gleb Naumenko)以及前同事格雷格·麥克斯韋爾(Greg Maxwell)推出了一個名為miniketch的軟體庫,用於在分散式系統的節點間同步資料時降低頻寬要求。
miniketch最初是作為一個專案的組成部分開發的,該專案研究使用set reconciliation在比特幣上的節點之間共享交易資料,即“set reconciliation Relay”或SRR。SRR的目標是顯著減少與執行比特幣全節點相關的頻寬。該團隊決定將miniketch與SRR分開發布,因為它預計將對比特幣領域內外的許多其他應用程式有用。為什麼是Minisketch ?傳統上,所有分散式系統都難以在節點之間同步資料——在集中式系統中,告訴節點應該擁有哪些資料,不應該擁有哪些資料要容易得多。
例如,分散式網路中節點間資料同步的一種方法是可逆Bloom查詢表(IBLT)。雖然IBLT的CPU需求相對較低,但這是以相對較高的頻寬需求為代價實現的,特別是在差異數量較小的情況下。miniketch使用了一種稱為PinSketch的頻寬效率更高的演算法。與CPISync和Pinsketch最初的實現等其他頻寬高效的集協調演算法相比,miniketch使用的計算能力要小得多。它比PinSketch快20到100倍,有時比CPISync快1000多倍。如何實現改進?Set reconciliation(由miniketch實現)比簡單地傳送整個資料列表的頻寬效率更高,因為它允許主節點生成其列表的數學“草圖”。然後,主節點將此訊息傳送給其他節點,以便與它們自己的列表進行比較。草圖的大小隻取決於節點之間的期望差異數量,而不取決於集合的總大小。儘管如此,它仍然允許主節點從其他節點中確定地區分它們需要哪些資料。如果我們把它簡化成一個差值,很容易看出它是如何工作的:假設我有一個集合{3,5,7,11},你有一個集合{3,5,7,9,11},那麼差值是{9}。我們都計算元素的和,得到3+5+7+11=26,你得到3+5+7+9+11=35。我把26這個和發給你,你從和中減去它;差是9。這是可行的,但僅限於找到單一的差異。miniketch透過傳送各種型別的資料“和”來概括這一點。結果是,對於N個不同的和,您可以找到N個差異……只要集之間的差異的數量不超過傳送的“和”的數量,miniketch總是能夠成功地找到所有的差異。比特幣上的Minisketch
比特幣網路的健壯性依賴於確保完整節點之間有足夠的連線,以阻止Sybiland分割槽攻擊。不幸的是,比特幣節點的大部分資料使用(通常在40%到70%之間)甚至都沒有花在交易資料上,而是花在相互宣佈新交易以找出要轉發哪些交易上。現在,增加節點之間的連線數量會相應地增加頻寬開銷。這限制了每個節點可以支援的連線數量。透過使用set reconciliation,可以有效地找出哪些事務尚未中繼,而不需要向每個對等方宣佈每個事務。查詢要中繼的事務的頻寬開銷。這種解決方案的美妙之處在於,它不需要對比特幣的網路共識規則進行任何修改。當雙方的軟體都支援SRR協議時,SRR將被啟用,不會對不支援SRR協議的節點操作人員產生負面影響。SRR協議仍處於研究的早期階段,可能要過很長時間才能在比特幣網路中得到採用,但像Minisketch這樣的進展代表著在改進比特幣完全節點的採用和可訪問性(以及最佳化其他分散式網路)方面的一個非常重要的進展。更多數字貨幣資訊:www.qukuaiwang.com.cn/news

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;