Ipfs

libp2p、devp2p 和 RLPx 有什麼區別?

  • February 11, 2020

libp2p 和 devp2p 有什麼區別?他們指的是同一件事嗎?它們與 RLPx 有什麼關係?

在 2014 年 11 月發布的 libp2p 白皮書中,它們似乎是同一件事:

libp2p(aka ÐΞVp2p)旨在提供一個輕量級抽象層,在透明框架中提供這些低級算法、協議和服務,而無需預先確定協議的最終傳輸案例。

Devcon 2 展示文稿“libp2p ❤ devp2p”中

libp2p 是為 IPFS 提供支持的模組化安全網路套件……

devp2p 是為乙太坊提供支持的安全網路套件……

我猜第二個連結是最新的,並且隨著我輸入,整個事情都在不斷發展。也許 IPFS libp2p 誕生於上面連結的乙太坊(反之亦然)。誰能提供 libp2p 和 devp2p 的摘要,包括它們的來源、用途和主要區別是什麼,以及指向它們的官方規範的連結?

最後,RLPx 如何適應 devp2p?文件這樣描述它……

RLPx 是一種加密對等網路和協議套件,它為應用程序通過 p2p 網路進行通信提供通用傳輸和介面。RLPx 旨在滿足去中心化應用程序的要求,並被乙太坊使用。

…這聽起來像我想像的 devp2p 正在做的事情。是否有關於 libp2p、devp2p 和 RLPx 是什麼以及它們如何組合在一起的高級描述?

其他連結:

https://ethereum.gitbooks.io/frontier-guide/content/devp2p.html

https://github.com/libp2p/libp2p

https://github.com/ethereum/devp2p

RLP 版本(7 月 16 日)https://ethereum.stackexchange.com/a/7221/820

映射到 OSI 的乙太坊協議https://ethereum.stackexchange.com/a/9923/820

哪些底層協議用於在節點之間發送數據包,以及消息是如何加密的?

LIBP2P是一個協議實現工具集或庫,允許您為不同的 P2P 網路和場景建構軟體。

在乙太坊文件中, DEVP2P 和 RLPx是分開的,但實際上:

  • 如果您在談論協議,它們是同一回事
  • 如果您在談論消息格式,它們是不同的東西

命名和概念模型很混亂,溝通很差。在我看來,乙太坊的整個 P2P 層確實可以使用很多說明:

  • RLPx 有線協議要求每個“數據包”指定其“協議類型”a ushort(無符號短)。
  • 但是“協議類型”基於僅在對等握手完成後才建立的普遍同意的編號系統,並且用於建立編號系統的對等握手是使用“devp2p”進行的,設計者似乎打算將其作為超級-rlpx 傳輸協議。
  • 所以就協議而言,RLPx 和 DEVp2p 握手步驟可以被認為是一回事。如果沒有 DEVp2p 握手步驟,RLPx 協議將毫無意義。協議 RLPx+DEVp2p 是一回事,需要社區重新命名以表明情況確實如此。
  • DevP2P 消息的基本格式為“消息類型”+“有效負載”。消息類型是通用協議約定的空間內的數字。問題是,儘管 DEVP2P 打算支持多種協議,但它沒有“協議”ID。協議 id 留給 RLPx 子協議/傳輸。因此,如果沒有協作的傳輸,DEVP2P 就無法實現其設計目標。

簡而言之,最好將 DEVP2P 和 RLPx 視為一回事。

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