Bitcoin Core 31.0 源码视角拆解 -i2psam:SAM 代理的出入站双角色、缺省端口 7656、入站接受开关与 listen=0 的联动降级,以及不支持 UNIX 套接字的值格式约束。
汇总与「P2P 网络」相关的文章,帮助你系统了解该主题。
Bitcoin Core 31.0 源码视角拆解 -i2psam:SAM 代理的出入站双角色、缺省端口 7656、入站接受开关与 listen=0 的联动降级,以及不支持 UNIX 套接字的值格式约束。
关闭节点网络活动但不停进程:Bitcoin Core 31.0 源码拆解 setnetworkactive 命令与 -networkactive 参数触发的三层连锁——拆散存量连接、拒收新来电、挂起 DNS 种子查询——以及它管不到的防火墙与持久化。
Bitcoin Core 的地址库空空如也时,出站连接线程会按十秒一拍的节奏向种子节点域名发起专门的 addrfetch 连接补货。本文基于 31.0 源码拆解这条冷启动通道:触发条件、队列与五兆位节流、专用连接类型与 v2 传输尝试,以及它与 feeler 探针的分工。
压缩区块传播依赖 sendcmpct 消息谈定的高带宽席位,而节点最多同时保留三个这样的对端。本文基于 Bitcoin Core 31.0 源码拆解 sendcmpct 的版本协商、三席轮换逻辑与保护出站席位的细节。
inv 与 getdata 是比特币节点之间最繁忙的清单类消息,而它们的清单长度并非没有边界。本文基于 Bitcoin Core 31.0 源码拆解 MAX_INV_SZ 五万条上限:接收侧超限即记过断连、发送侧达到上限自动分批,以及这个数字与四十兆消息总闸之间的账目关系。
新节点要一次性讨回一整份地址簿,靠的是 getaddr 消息。本文基于 Bitcoin Core 31.0 源码拆解 getaddr 的三道处理纪律:只为入站对端作答、每条连接只答一次、单次回复最多一千条,并解释背后防指纹追踪与防地址盖章的攻防考虑。
Bitcoin Core 会用对端上报的时间给自己的时钟体检:样本只收出站连接、上限五十条、够五条才取中位数、偏差超过十分钟才弹出时钟警告。本文基于 31.0 源码与 timeoffsets 模块拆解这条报警链路。
比特币节点主动连邻居时,TCP 连接最长等多久由 -timeout 说了算。本文基于 Bitcoin Core 31.0 源码拆解这五秒等待的发生位置、超时后的行为,以及它与 -peertimeout、RPC 等待的分工边界。
比特币 P2P 实现给单条 getdata 消息的条目数卡了硬上限,Bitcoin Core v31.0 里这个编译常量是 1000。本文按 v31.0 源码核对该上限在区块下载与交易下载两条路径上的生效方式、它防的是什么,以及为什么日志里会看到多条较短的 getdata。
GossipSub 把消息扩散拆成 mesh 内转发与心跳期 IHAVE 清单两件事。本文按 libp2p 规范拆解 D、Dlo、Dhi 三档度数、PRUNE 退避与 peer scoring 的信任边界。