libp2p、devp2p 和 RLPx 有什麼區別?
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 視為一回事。