go ethereum之p2p
简介p2p是以太坊节点网络层的骨架夹在底层 TCP/UDP 和应用协议eth、snap、les之间管三件事节点发现谁在线、连接管理怎么连上、怎么断、消息多路复用连上了跑什么协议重要结构主要有ServerPeer表示一个连接Server结构定义为typeServerstruct{// Config fields may not be modified while the server is running.Config// Hooks for testing. These are useful because we can inhibit// the whole protocol stack.newTransportfunc(net.Conn,*ecdsa.PublicKey)transport newPeerHookfunc(*Peer)listenFuncfunc(network,addrstring)(net.Listener,error)lock sync.Mutex// protects runningrunningboollistener net.Listener ourHandshake*protoHandshake loopWG sync.WaitGroup// loop, listenLooppeerFeed event.Feed log log.Logger nodedb*enode.DB localnode*enode.LocalNode discv4*discover.UDPv4 discv5*discover.UDPv5 discmix*enode.FairMix dialsched*dialScheduler// This is read by the NAT port mapping loop.portMappingRegisterchan*portMapping// Channels into the run loop.quitchanstruct{}addtrustedchan*enode.Node removetrustedchan*enode.Node peerOpchanpeerOpFunc peerOpDonechanstruct{}delpeerchanpeerDrop checkpointPostHandshakechan*conn checkpointAddPeerchan*conn// State of run loop and listenLoop.inboundHistory expHeap}Configp2p服务端配置listener监听器接受连接discv4,discv5,discmix节点发现dialsched向外连接peerOp对接操作localnode结点的ENRPeer结构定义为typePeerstruct{rw*conn runningmap[string]*protoRW log log.Logger created mclock.AbsTime wg sync.WaitGroup protoErrchanerrorclosedchanstruct{}pingRecvchanstruct{}discchanDiscReason// events receives message send / receive events if setevents*event.Feed testPipe*MsgPipeRW// for testing}启动通过Start启动p2p,主要作以下事项setupLocalNode创建dev2p handshake和localnodesetupPortMapping开启端口映射循环根据NAT配置执行不同的协程setupListening开启监听协程listenLoop处理外部连接setupDiscovery开启节点发现根据配置开启发现服务discv4,discv5setupDialScheduler开启拨号调度器dialScheduler开启两个协程readNodes和loopsrv.run()处理通道事件如新连接等

相关新闻

中餐厅摆台 点击UI图片拖拽预制体到桌面并 实现预制体拖拽

中餐厅摆台 点击UI图片拖拽预制体到桌面并 实现预制体拖拽

1、准备桌面 和 酒杯先在Scene窗口中调好相对位置,然后将酒杯拖拽到project目录中生成预制体。需要给预制体增加一个脚本就是 using UnityEngine; public class ItemHeight : MonoBehaviour {// 在预制体Inspector手动填好:这个物品放在桌面需要的世界Yp…

2026/7/1 1:46:56阅读更多 →
— 一款针对 IT 团队开发的文档管理系统,基于 Golang 开发,内置项目管理,用户管理,权限管理等功能,可以用来储存日常接口文档,数据库字典,手册说明等文档。功能特色:

— 一款针对 IT 团队开发的文档管理系统,基于 Golang 开发,内置项目管理,用户管理,权限管理等功能,可以用来储存日常接口文档,数据库字典,手册说明等文档。功能特色:

色:项目空间划分:支持创建多个项目空间,每个空间可独立管理文档,适合多团队或多产品线并行管理性化项目设置:支持配置项目名称、描述、评论权限、自动发布、下载权限等,适配不同项目需求多编辑器支持&#…

2026/7/1 1:46:56阅读更多 →
TensorRT 推理加速:从 ONNX 到优化引擎的编译与部署全链路

TensorRT 推理加速:从 ONNX 到优化引擎的编译与部署全链路

TensorRT 推理加速:从 ONNX 到优化引擎的编译与部署全链路 一、GPU 推理的延迟鸿沟:为什么 PyTorch 模型跑不到理论算力 在模型部署阶段,一个常见的困惑是:GPU 的理论算力(如 A100 的 312 TFLOPS FP16)与实…

2026/7/1 1:41:55阅读更多 →
Windows 11本地部署GLM-5.2大模型:集成Claw工具调用与Agent知识库实战

Windows 11本地部署GLM-5.2大模型:集成Claw工具调用与Agent知识库实战

最近在尝试本地部署大语言模型时,发现很多教程都要求使用Linux系统,或者配置过程极其复杂,劝退了不少想在Windows上体验的开发者。特别是对于智谱GLM-5.2这样性能强劲的模型,以及像Claw、Agent知识库这类前沿应用,很多…

2026/7/1 2:47:04阅读更多 →
效率够高吗?8款AI论文网站排行榜,毕业季救星!

效率够高吗?8款AI论文网站排行榜,毕业季救星!

论文写到一半卡壳?文献找了一堆却无从下手?格式调整反复修改,查重结果还总不理想? 别担心!AI论文工具正在成为高校学生的高效帮手。本文将基于学术严谨性、资料检索能力、格式自动生成和查重优化效果四大维度&#xf…

2026/7/1 2:47:04阅读更多 →
写论文如何又快又好?资深导师力荐这几个AI写作辅助网站

写论文如何又快又好?资深导师力荐这几个AI写作辅助网站

写论文又快又好,关键在于用对 AI 工具、走对流程——资深教授普遍推荐:千笔AI(中文全流程首选) 豆包学术版(轻量高效) DeepSeek 学术版(理工 / 长文本) Grammarly Academic&#xff…

2026/7/1 2:47:04阅读更多 →
【精通】RustMark v2.5:国际化与无障碍 — Unicode/ICU4X/AccessKit 实战

【精通】RustMark v2.5:国际化与无障碍 — Unicode/ICU4X/AccessKit 实战

【精通】RustMark v2.5:国际化与无障碍 — Unicode/ICU4X/AccessKit 实战 目录 前言 技术背景与演进逻辑 1.1 国际化与无障碍:被忽视的工程基础设施 1.2 从"事后翻译"到"架构内建"的范式迁移 1.3 传统方案的三大崩塌点 1.4 RustMark v2.5 的国际化与无障…

2026/7/1 2:47:04阅读更多 →
从零构建AI工作流与智能体:以视频摘要生成为例的实践指南

从零构建AI工作流与智能体:以视频摘要生成为例的实践指南

在实际 AI 项目开发中,我们常常面临一个困境:单个 AI 模型或工具能力有限,而复杂的业务需求往往需要串联多个步骤,例如从文本生成视频脚本,再生成语音,最后剪辑成片。这个过程如果手动操作,不仅…

2026/7/1 2:47:04阅读更多 →
Java毕设选题推荐:基于 SpringBoot 的农户农产品展销助农平台的设计与实现 基于 SpringBoot 的智慧农商便民服务平台【附源码、mysql、文档、调试+代码讲解+全bao等】

Java毕设选题推荐:基于 SpringBoot 的农户农产品展销助农平台的设计与实现 基于 SpringBoot 的智慧农商便民服务平台【附源码、mysql、文档、调试+代码讲解+全bao等】

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/7/1 2:42:04阅读更多 →
AI Coding 六个月真实ROI账本:产品经理的血泪教训,研发的冷静忠告

AI Coding 六个月真实ROI账本:产品经理的血泪教训,研发的冷静忠告

6个月前的2025年12月,Boris Cherny 公开宣布自己卸载了 IDE。一时间,Vibe Coding 成了全行业最热的话题。6个月后,当我们回过头来拉一份真实账本,发现事情远没有"一句话生成一个App"那么浪漫。本文从产品经理和研发两个…

2026/6/30 4:03:30阅读更多 →
审计来了,数据权限全开——审计走了,怎么确保权限全部关掉?

审计来了,数据权限全开——审计走了,怎么确保权限全部关掉?

引言:审计结束三个月了,审计员的权限还没关某城商行每年按照监管要求开展至少一次数据安全审计。审计期间,内审部门需要抽样检查各类业务数据——交易流水、客户信息、员工操作日志、权限配置记录。这些数据分布在不同系统中,审计…

2026/6/30 4:36:27阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/1 0:01:44阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/1 0:01:44阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/1 0:01:44阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/1 0:01:44阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/1 0:01:44阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/1 0:01:44阅读更多 →