- Bitcoin & Blockchain/
- BCH Specification/
- Protocol Upgrades/
- P2P Network
- Connect Handshake
- Address
- Block
- BlockTXN
- CompactBlock
- DSProof
- FilterAdd
- FilterClear
- FilterFee
- FilterLoad
- Get Addrsses
- GetBlocks
- GetBlockTXN
- GetData
- GetHeaders
- Headers
- Inventory
- Mempool
- Merkleblock
- NotFound
- Ping
- Pong
- Reject
- Send Compact CTL
- SendHeaders
- SPV
- SPV Bloom Filter
- Strings Encoding
- TX
- VerAck
- Version
Bitcoin Cash Specification
Node Handshake
When nodes connect the issue a connection handshake in order to ensure compatibility between the two nodes. The handshake informs the peer of its:
- Network Protocol Version
- Block Height
- Supported Network Services
Neither Node should send any data other than a Version message to the peer until it has also received a Version message. Once a node has received (and sent) a Version message, it may send a Verack message. Once each Node has sent and received a Verack message, normal node operation may begin.
Sequence Diagram
When a local Node initiates a connection to a remote Node, the remote Node will remain silent it receives a version message.
1. Local sends Version Message to Remote containing Local's Version Number.
2. Remote sends Version Message containing Remote's Version Number.
3. If Local's Version Number is compatible, Remote uses the lower of the two Version Numbers and sends Verack Message.
4. If Remote's Version Number is compatible, Local uses the lower of the two Version Numbers and sends Verack Message.
sequenceDiagram
Local->>Remote: Version
Note Right of Remote: #35;1
Remote->>Local: Version
Note Left of Local: #35;2
Remote->>Local: Verack
Note Left of Local: #35;3
Local->>Remote: Verack
Note Right of Remote: #35;4
The Remote Node may send a Verack
message before it sends its own Version
messages.
A Node may only send a Version
message once.
Although a Node may connect to itself, it is usually undesired. Nodes typically check for a connection to itself by checking if the nonce
provided by a Version
message is a nonce it has used recently.