From 2469e071afafcd07f51fc4d2364e6a4dec48a606 Mon Sep 17 00:00:00 2001 From: "Andreas M. Antonopoulos" Date: Sat, 2 Jan 2016 11:40:46 -0600 Subject: [PATCH] Correction for errata 153329 --- ch06.asciidoc | 6 +++--- images/NetworkHandshake-corrected_msbt_0604.png | Bin 0 -> 8964 bytes 2 files changed, 3 insertions(+), 3 deletions(-) create mode 100644 images/NetworkHandshake-corrected_msbt_0604.png diff --git a/ch06.asciidoc b/ch06.asciidoc index 10e04655..46db4615 100644 --- a/ch06.asciidoc +++ b/ch06.asciidoc @@ -51,7 +51,7 @@ image::images/msbt_0603.png["BitcoinNetwork"] ((("peer-to-peer networks","connections")))To connect to a known peer, nodes establish a TCP connection, usually to port 8333 (the port generally known as the one used by bitcoin), or an alternative port if one is provided. Upon establishing a connection, the node will start a "handshake" (see <>) by transmitting a((("version message"))) +version+ message, which contains basic identifying information, including: -+PROTOCOL_VERSION+:: A constant that defines the bitcoin P2P protocol version the client "speaks" (e.g., 70002) ++nVersion+:: The bitcoin P2P protocol version the client "speaks" (e.g., 70002) +nLocalServices+:: A list of local services supported by the node, currently just +NODE_NETWORK+ +nTime+:: The current time +addrYou+:: The IP address of the remote node as seen from this node @@ -61,7 +61,7 @@ image::images/msbt_0603.png["BitcoinNetwork"] (See http://bit.ly/1qlsC7w[GitHub] for an example of the +version+ network message.) -The peer node responds with +verack+ to acknowledge and establish a connection, and optionally sends its own +version+ message if it wishes to reciprocate the connection and connect back as a peer. +The +version+ message is always the first message sent by any peer to another peer. The local peer receiving a +version+ message will examine the remote peer's reported +nVersion+ and decide if the remote peer is compatible. If the remote peer is compatible, the local peer will acknowledge the +version+ message and establish a connection, by sending a +verack+. How does a new node find peers? The first method is to query DNS using a number of ((("nodes","seed")))((("DNS seed")))"DNS seeds," which are DNS servers that provide a list of IP addresses of bitcoin nodes. Some of those DNS seeds provide a static list of IP addresses of stable bitcoin listening nodes. Some of the DNS seeds are custom implementations of BIND (Berkeley Internet Name Daemon) that return a random subset from a list of bitcoin node addresses collected by a crawler or a long-running bitcoin node. The Bitcoin Core client contains the names of five different DNS seeds. The diversity of ownership and diversity of implementation of the different DNS seeds offers a high level or reliability for the initial bootstrapping process. In the Bitcoin Core client, the option to use the DNS seeds is controlled by the option switch +-dnsseed+ (set to 1 by default, to use the DNS seed). @@ -69,7 +69,7 @@ Alternatively, a bootstrapping node that knows nothing of the network must be gi [[network_handshake]] .The initial handshake between peers -image::images/msbt_0604.png["NetworkHandshake"] +image::images/NetworkHandshake-corrected_msbt_0604.png["NetworkHandshake"] Once one or more connections are established, the new node will send an((("addr message"))) +addr+ message containing its own IP address to its neighbors. The neighbors will, in turn, forward the +addr+ message to their neighbors, ensuring that the newly connected node becomes well known and better connected. Additionally, the newly connected node can send +getaddr+ to the neighbors, asking them to return a list of IP addresses of other peers. That way, a node can find peers to connect to and advertise its existence on the network for other nodes to find it. <> shows the address discovery protocol. diff --git a/images/NetworkHandshake-corrected_msbt_0604.png b/images/NetworkHandshake-corrected_msbt_0604.png new file mode 100644 index 0000000000000000000000000000000000000000..ef3337fcadf46b2718607ef213a73ddf00491e8f GIT binary patch literal 8964 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