Prysm 团队计划开发一个内部的 p2p 通信库,目标是摆脱对第三方 go-libp2p 库的依赖。该项目将选择 libp2p 中 Prysm 使用的必要组件进行重新实现,移除冗余组件,同时保持性能。项目包括需求分析、组件开发、集成测试以及性能优化,最终目标是在 Holesky 网络上进行性能分析,并与官方 libp2p 实现进行对比。
Prysm 客户端中 libp2p 协议必要部分的内部实现
该项目旨在开发一个内部的 P2P 通信库,并利用现有 go-libp2p 库中的一些核心组件。go-libP2P 库(及其它语言的变体)几乎被所有共识客户端用于信标链节点之间的 P2P 网络通信。该项目的范围使 Prysm 团队能够独立于任何第三方来构建集成组件。它还允许消除 go-libp2p 中未被主动使用的冗余组件,同时实现相同的性能。实施该项目还包括深入理解 libP2P 和网络层。
libP2P 协议有多个组件,例如:Noise、多路复用器、pubsub、ping 等。Prysm 并非使用所有这些组件,因此手头的主要任务或解决方案是:
我们将遵循 CL 规范 来开发这个新包。
Prysm 中使用的主要组件:
devp2p/discv5
(超出项目范围)tcp/quic
连接协议NOISE
协议协商,可以按原样使用multistream-select
mplex
yamux
gossipsub
ssz
编码第 1 个月:设计和初步开发
第 2 个月:持续开发
第 3 个月:测试和文档
第 4 个月:部署和性能调整
由于 libP2P 已经在多个共识客户端中使用,因此我们的一个关键挑战将是保持与 libP2P 提供的相同性能。此外,该项目涉及对网络和实现以及重构几个组件的深入理解,这可能并不容易。
相关代码库:
规范:
其他:
- 原文链接: github.com/eth-protocol-...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!