以太坊系列之六: p2p模块--以太坊源码学习

简介: p2p模块p2p模块对外暴露了Server关键结构,帮助上层管理复杂的p2p网路,使其集中于Protocol的实现,只关注于数据的传输.Server使用discover模块,在指定的UDP端口管理网络中结点的发现以及维护,discover模块能够直接和临近结点交换各自已知结点信息,从而不断的更新结点网络.

p2p模块

p2p模块对外暴露了Server关键结构,帮助上层管理复杂的p2p网路,使其集中于Protocol的实现,只关注于数据的传输.

Server使用discover模块,在指定的UDP端口管理网络中结点的发现以及维护,discover模块能够直接和临近结点交换各自已知结点信息,从而不断的更新结点网络.

Server还是用nat模块来进行TCP端口映射,而nat主要是利用upnp和pmp两个协议,如果没有,那就只能认为指定的ip就是公网ip了.

Server要同时在udp和tcp的30303端口和p2p网络进行数据交换,前者是用来维护P2p网络,后者则是各种应用协议真正交换数据的地方.他们使用的格式是Msg,具体见 p2p_server.

关于Server以及Protocol如何使用可以见 Peer-to-Peer 虽然不是很详细,但是已经基本上说明了Server以及Protocol如何使用,感兴趣可以基于这个p2p网络实现自己的协议,可以完全与以太坊应用没关系.

目录
相关文章
|
Java Spring
spring 定时任务@Scheduled注解(代码超详细)和串并行配置
spring 定时任务@Scheduled注解(代码超详细)和串并行配置
713 0
spring 定时任务@Scheduled注解(代码超详细)和串并行配置
|
编解码 Shell Android开发
『移动端测试必备』ADB常用命令和使用
『移动端测试必备』ADB常用命令和使用
584 2
|
搜索推荐 UED
Web Accessibility(Web A11y):构建包容性网络的关键步骤
Web无障碍性(Web Accessibility,简称Web A11y)是一项旨在确保网站和应用程序能够让所有人,包括残障人士,都能轻松访问和使用的关键实践。本博客将深入探讨Web无障碍性的概念、重要性以及如何在您的项目中实施无障碍设计的关键步骤。
258 0
mitt.js:小型事件发布订阅库
mitt.js:小型事件发布订阅库
1778 0
|
前端开发 小程序 Java
基于SpringBoot+Vue在线考试报名系统设计和实现(源码+LW+调试文档+讲解等)
基于SpringBoot+Vue在线考试报名系统设计和实现(源码+LW+调试文档+讲解等)
|
UED
服务架构中的数据驱动设计
【5月更文挑战第13天】数据驱动设计是依据用户数据进行网页设计的方法,旨在通过测试了解用户需求并优化体验,从而增加流量和转化率。设计师应避免主观感受影响设计,因个人偏好可能与用户需求不符。数据驱动设计能减少偏见,提高转化率和销售额,是一个迭代过程,不断实验和优化。虽然有些人担忧可能限制创造力,但其实它仍需要创新和妥协。随着业务、用户和技术变化,数据驱动设计提供持续改进的解决方案。
143 0
服务架构中的数据驱动设计
|
开发框架 数据可视化 Java
探索Python的跨平台性:技术深度与实践
探索Python的跨平台性:技术深度与实践
557 0
|
缓存 前端开发 API
【亮剑】在React中实现鼠标悬停显示文本,可以通过状态管理实现。
【4月更文挑战第30天】在React中实现鼠标悬停显示文本,可以通过状态管理实现。基础方法包括使用本地状态(useState)或结合Context和Reducer。在组件中,利用onMouseEnter和onMouseLeave事件改变状态以触发条件渲染。性能优化应注意避免不必要的渲染、正确设置依赖项数组、使用Memoization以及注意事件绑定。实战案例展示了在博客平台中,悬停文章标题显示摘要,提升用户体验。关注性能优化,避免过度渲染,使React应用保持快速响应。
420 0
|
XML 数据格式 Python
【超详细!】Python微信公众号开发(2)
【超详细!】Python微信公众号开发(2)
371 0
|
XML Java Android开发
[Android]CheckBox复选框
[Android]CheckBox复选框
302 0