当添加一个新消息-“sendheaders”时,比起“inv”消息来,节点更喜欢经过 “headers” 消息来接收新块的广播。git
自 0.10 引入“headers-first”下载块以来,假设块不可以链接到(有效)头文件链,块将不会被处理。所以,块中继工做一般以下:github
然而,在创建提示且其中一个新的 block 被广播的状况下,对于一个新区块这一般是更加高效的,就是这个节点 N 只广播block-header而不是去广播 block-hash 以及保存其余节点生成和传输的 getheaders 消息(和所需的块定位符)。翻译
在 reorg 的状况下,其中 1 个或多个 blocks 被断开链接,节点当前只是为新提示发送“inv”。在请求这些块以前,须要等到中间块的 headers 被交付,此时其余节点能够当即请求新的提示。 经过广播 headers,其余节点能够当即请求从上一个fork点开始到块公告中的新提示出现全部中间块。code
pchCommand == “sendheaders”
version >= 70012
来启用功能发现因为对sendheaders的支持是可选的,因此实现这一点的软件也能够选择性地施加其余的约束,例如只在创建链接后才去遵照sendheaders消息。ip
在这种变化以后,老客户端仍然彻底兼容而且能够互操做。get
原文连接:sendheaders messageit
本文由 copernicus团队 冉小龙
翻译,转载无需受权。io
原文连接: mp.weixin.qq.com/s/rq3HTa2k4…ast