You've already forked specification
Node Handshake Content
Collected data from bitcoin.it, bitcoin.org, and bitcoinbook.git.
This commit is contained in:
@@ -19,8 +19,12 @@ The node connection is not considered established until both nodes have sent and
|
|||||||
| block height | 4 bytes | unsigned integer<sup>[(LE)](/protocol/misc/endian/little)</sup> | The height of the block with the highest height known to the sending node. |
|
| block height | 4 bytes | unsigned integer<sup>[(LE)](/protocol/misc/endian/little)</sup> | The height of the block with the highest height known to the sending node. |
|
||||||
| relay flag | 1 byte | boolean | Indicates whether the sending node would like all broadcasted transactions relayed to it. See [BIP-37](/protocol/forks/bip-0037). This flag is sometimes referred to as "fRelay". |
|
| relay flag | 1 byte | boolean | Indicates whether the sending node would like all broadcasted transactions relayed to it. See [BIP-37](/protocol/forks/bip-0037). This flag is sometimes referred to as "fRelay". |
|
||||||
|
|
||||||
Note: appending extra data after the `relay flag` is ignored.
|
Note: Protocol version `70001` introduced the optional `relay flag`.
|
||||||
Historically, extra data after the `relay flag` would sometimes result in the connection being banned, although this is no longer standard behavior.
|
Transmitting the `relay flag` byte to Nodes with a version less than `70001` may result in incompatibility with versions that validate the Version message for a specific byte count.
|
||||||
|
|
||||||
|
Note: Historically, transmitting extra data after the `relay flag` would result in the connection being banned by some Nodes.
|
||||||
|
Modern Nodes ignore extra data after the `relay flag`.
|
||||||
|
|
||||||
|
|
||||||
## Version Number
|
## Version Number
|
||||||
|
|
||||||
|
|||||||
@@ -1 +1,33 @@
|
|||||||
# Node Handshake
|
# 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](/protocol/network/messages/version#services-bitmask)
|
||||||
|
|
||||||
|
Either Node may then decide to disconnect from the peer.
|
||||||
|
|
||||||
|
Neither Node should send any data other than a [Version](/protocol/network/messages/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](/protocol/network/messages/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.
|
||||||
|
|
||||||
|
```
|
||||||
|
# SequenceDiagram
|
||||||
|
|
||||||
|
title Node Handshake
|
||||||
|
|
||||||
|
Local->>Remote: Sends Version Message
|
||||||
|
note right of Remote: Version Message contains Local's Version Number.
|
||||||
|
Remote->>Local: Sends Version Message
|
||||||
|
note left of Local: Version Message contains Remote's Version Number.
|
||||||
|
Remote->>Local: Sends Verack Message
|
||||||
|
note left of Local: Local uses the lower of the two Version Numbers, if compatible.
|
||||||
|
Local->>Remote: Sends Verack Message
|
||||||
|
note right of Remote: Remote uses the lower of the two Version Numbers, if compatible.
|
||||||
|
```
|
||||||
Reference in New Issue
Block a user