btcd 之 通信协议分析

btc的协议有很多,本文主要分析网络通信方面的协议

参考:protocol document 、btcd

一、Message

image.png

一次通信以message为单位,具体结构如上图:
即最终序列化的字节流,是上图所述格式

代码实现:

(1)通用接口

image.png

message 接口,定义通用方法,由具体的消息类型去实现

  • BtcDecode BtcEnode 将结构化的消息体序列化为字节流 (对应payload) 或者将字节流实例化为某种消息格式
  • Commd 返回具体消息的命令字符串,标识不同的命令
  • MaxPayloadLength 最大payload 长度

(2)通用header

image.png

message header 结构体,定义通用部分字段

(3)发送

image.png

由上图代码可知,发送message时,先发送header再发送payload

二、具体消息实现举例:MsgTx

image.png

message tx类型的具体实现

(1)Command()

image.png

(2)MaxPayloadLength

image.png

(3)BtcDecode BtcEnode 不再赘述,具体可参考 btcd

你可能感兴趣的:(btcd 之 通信协议分析)