我們都知道,區塊鏈是一個透過若干節點分批共享資料的網路,這些節點中儲存著不受信任的參與者,這些參與者透過協商共識演算法對相同的資料進行驗證。
當這些資訊到達節點時,通常稱為引導,當這種引導節點用於資料交換時,這種交換稱為塊傳播。
有幾種不同的方法來阻止傳播:
緊湊的塊:
這是一種經過BIP(區塊鏈改進協議)驗證的有效載荷降低方法。這種方法的工作原理是假設必要的資訊集已經傳送給對等節點,並且只需要與節點交換集合的差異。
影象源:高頻寬緊湊塊傳播
影象源:低頻寬緊湊塊傳播
該方法透過高、低頻寬提供了一個有效的中繼過程。它利用額外的頻寬來停止往返時間(RTT)。這種方法減少了有效載荷的大小。但這一方法有兩大缺點:· 需要“短id”來標識丟失的交易,這些交易需要更多的儲存空間。· 每當一個節點處理多個交易時,由於缺少對未知交易的最佳化,就會出現差異。Thinblocks (Xthin):由比特幣無限改進協議(BUIP)開發和提出,這種方法使用bloom過濾器來更有效地比較集合差異。它允許更有效地檢測未知交易,但它透過編碼成員資訊增加了傳播過程的開銷。存在安全問題,因為惡意節點可以傳送偽造的過濾器來建立衝突攻擊。影象來源:Xtremethin塊傳播
石墨烯:針對Xthin塊方法的不足,提出了一種新的改進方法。它重新傳輸塊來接收故障。它利用單個對等點作為關鍵點,節點一次性傳送所有資料,而不是多個節點共享部分資料。這些塊僅用於塊傳播,而不用於節點引導。分散式雜湊表(DHT):DHT t主要用於對等發現。將DHT作為“初始播種機”的系統——這是一個負責構建整個系統的單個節點,其中引導過程允許多個參與者共享公共DHT。該方法減少了上述三種方法中出現的問題,利用節點所擁有的部分資訊作為新的資源,緩解了未知交易檢測的瓶頸或差異。但也有兩個重要的缺點:· 由於工作量證明挖掘協議,企業參與是一個問題,它已經成為移動應用程式開發使用的障礙,涉及協議遵守和收入模型的問題。· 該系統需要一個通用的中心節點來引導發現,這本身就違反了區塊鏈的去中心化結構。透過噴泉速度編碼噴泉碼——通常被稱為無速率擦除碼,它提供了一種獨特的方式,將資訊編碼成片段,當片段數量達到閾值時,可以將這些片段重新組裝為原始資料。由於資料的重構是基於段而不是單獨的塊,因此與DHTs、相比,它能提供更健壯、更平滑的資料傳輸。雖然噴泉程式碼的概念在區塊鏈範例中非常有用,但它還沒有在區塊鏈領域中使用。對於區塊鏈應用程式,噴泉程式碼是理想的,它可以將單個資訊分割成大小相等的元素。然後這些元素被編碼成特定的“符號”。這些符號是特定於任務的,並傳輸到一個或多個源,由接收者聚合資訊。這個接收者為每個符號編碼一個演算法。但是解碼演算法的可能性幾乎為零。可以將Velocity與噴泉程式碼一起使用。Velocity使用這些噴泉碼的糾錯特性來允許來自多個源並具有同步廣播的塊傳播。透過噴泉程式碼逐步阻止傳播:1. 在實現新節點時,傳送方節點將Inv傳送到附近的節點。塊被編碼為預先確定大小的符號。2. 接收方接收Inv訊息,並使用get_sym請求所有節點的任何未知塊。3. 擁有所請求塊資訊的對等節點透過sym響應重複提供響應,在符號中對每個塊進行編碼。4. 接收器收集所有的符號,並使用塊標頭id提供的對映形成一類符號對。這個過程確保了塊的安全性,因為每個塊必須擁有一個頭來避免DOS攻擊。5. 接收機有一個預先確定的符號體積閾值,當這些符號達到閾值時,接收機開始重構塊。6. 在執行重構過程時,如果相同的操作失敗,則接收方嘗試檢測不符合的符號對。7. 如果重構過程成功,則將接收到的訊息傳送到傳送節點,以停止符號的傳輸。瞭解“Velocity”速度使用的收入點:
挖掘池通常使用歷史資料來確定收入模型塊的最佳大小。有時,交易費用並不能成為孤立塊的理由。為了緩解這些問題,並根據交易費用來決定塊的大小,我們可以使用兩個引數:
符號大小:
塊大小和符號大小的比例對於確定符號大小非常重要,因為我們希望在對等通訊中聚合符號。
孤立率:
這些是未被接受的孤立塊,因為在區塊鏈操作期間問題中的塊存在時間延遲。
結論:
使用Velocity可以最佳化塊傳播以獲得更好的收益,從而利用區塊鏈增強對企業和企業的財務激勵。這種方法當然可以改變區塊鏈程序以最佳化塊大小,幫助採礦者在更高的安全性下實現更流暢、更快的交易。