bitcoin网络协议交互

sendheaders

直接请求块头的公告。
收到该消息后,节点被允许通过headers命令去通告新区块(而不是INV命令)。
这个消息类型在协议版本 >= 70012 或 比特币版本 >= 0.12.0 支持。
详细信息在BIP 130 中。
这个消息不携带额外的 信息。

getaddr

getaddr消息向节点发送请求,询问有关已知活动节点的信息,以帮助查找网络中的潜在节点。 接收该消息的响应是来自活跃节点的数据库 一个或多个 活跃节点的 addr消息与。 典型的推测是,如果一个节点在最近三个小时内发送了一条消息,那么该节点可能是活跃的。

此消息不会传输额外的数据

headers

Description Data type Comments
count var_int 区块头数量
headers block_header[] 所有的区块头

该命令用来回复 getheaders请求,内容为区块头信息。
payload:

Description Data type Comments
count var_int 区块头数量
headers block_header[] 所有的区块头

OnHeaders 消息

OnHeaders : 接收到块头信息,将它连接到本地的块头信息上; 到达检查点后,向网络中请求这些区块的数据()。

getblocks(请求)

Filed Size Description Data Type Comments
4 version uint32_t 协议版本
1+ 哈希数量 var_int 定位器中包含的哈希数量
32+ 定位器中的哈希 char[32] 块的定位器,(最远回到创世块)
32 停止哈希 char[32] 截止区块的哈希。设置为全0,标识希望获取尽可能多的哈希。

该消息中包含一个定位器对象,定位器对象中是一系列区块头哈希.(从当前Tip开始,最多至创世块;还有一个截止哈希。)
该消息获取的返回信息是:当前激活链从定位器开始至结束哈希/最多500个 的区块。
这些定位器的哈希,被接收节点以在收到的信息中出现的顺序进行处理。如果一个块哈希在接收节点的主链中含有,它的一系列后代区块则通过INV信息,传输给发送节点,无论是否达到请求的限制,剩下的定位器会被忽略。
为了再次接收接下来的块,一个节点需要使用新的定位器再次发送getblocks 信息. 记住:如果这个定位器中包含的块哈希出现在他们的无效的分支上,一些客户端可能会提供一些无效的区块。
该消息的payload:

Filed Size Description Data Type Comments
4 version uint32_t 协议版本
1+ 哈希数量 var_int 定位器中包含的哈希数量
32+ 定位器中的哈希 char[32] 块的定位器,(最远回到创世块)
32 停止哈希 char[32] 截止区块的哈希。设置为全0,标识希望获取尽可能多的哈希。

创建一个块定位器对象,从当前主链的Tip一直递推到创世块。从Tip递推10个区块后,接下来的步数就按照两倍的步数开始起跳。
注意:这个消息允许定位器包含最少一个哈希。然而,块定位器的目的是在调用者的激活链上检测一个错误的分支。如果接收节点检测到你偏离了主链,它将发送比你已知的更早块哈希。所以如果你仅发送最后一个块哈希,并且这个块偏离了主链,则对等节点只能从1号块给你发送区块了。

INV消息(InvTypeBlock类型;getblocks的应答)

当一个节点收到getblocks 请求后,对这个消息作出的应答。
getblocks请求中,会包含一个区块定位器和一个stophash.

这个应答信息包含两种情况

  1. 定位器对象中包含的某个区块在当前节点的主链中找到,且stophash也在当前主链中找到,则返回 查找到的哈希的下一个区块至stophash 的所有区块哈希;
  2. 定位器对象中包含的某个区块在当前节点的主链中找到,但stophash 没有在当前主链中找到,则允许返回 查找到的区块后 最后最大的区块哈希数量/或至当前主链的Tip块。(软件系统中,硬编码为500)
  3. 如果找不到stophash,且没有提供定位器,则什么也不返回。

OnVersion 放在syncmanager 来处理;
全局时间戳,放在哪里。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 230,002评论 6 542
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 99,400评论 3 429
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 178,136评论 0 383
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 63,714评论 1 317
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 72,452评论 6 412
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 55,818评论 1 328
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 43,812评论 3 446
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 42,997评论 0 290
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 49,552评论 1 335
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 41,292评论 3 358
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 43,510评论 1 374
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 39,035评论 5 363
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 44,721评论 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 35,121评论 0 28
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 36,429评论 1 294
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 52,235评论 3 398
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 48,480评论 2 379

推荐阅读更多精彩内容