Protocol
devp2p 協議:支持數據壓縮?
我只是想知道用於節點到節點通信的devp2p協議是否支持數據壓縮?
我問這個,因為它可能對網路內更快的塊傳播有用。特別是當 tx 計數/塊在未來增加時。
到目前為止,我還沒有在以下位置找到提示:
是的 - 這是通過 EIP 706 ( https://github.com/ethereum/EIPs/pull/706 ) 進行的快速壓縮 - 通過https://github.com/ethereum/go-ethereum/pull/在 go-ethereum 中實現15106
我不得不四處尋找我很確定存在的暗示:-)
它在 Design Rationale 文件中,在Compression algorithm下。
有線協議和數據庫都使用自定義壓縮算法來儲存數據。該算法可以最好地描述為執行長度編碼零並保持其他值不變,除了一些特殊情況下的常見值,如 sha3(’’)。
相關程式碼
go-ethereum/p2p
在 GitHub 上的目錄中。我無法立即看到 Wire Protocol 程式碼如何呼叫我假設實現自定義壓縮的位置(要麼是要麼
common/bitutil/compress.go
?compression/rle/read_write.go
),實際上 RLP 程式碼中有一些對Snappy(Google 的壓縮庫)的呼叫。也許需要進一步調查才能確定……