1
0
mirror of https://github.com/bitcoinbook/bitcoinbook synced 2024-11-15 12:39:01 +00:00

CH10: edits to node roles sections

- Remove images: these are incorrect and (IMO) not very useful.  The
  first image is a legend.  The second image contains multiple errors or
  confusions, such as implying that a miner needs a full copy of the
  block chain or that a wallet is a routing node.  The third image is a
  very busy depiction of a network showing that clients connect to
  nodes, which I think is fine to just say in the text.

- Revise text to not reference images.

- Maintain distinction between nodes and peers by not using terms "full
  node client" or "SPV node"

- Update the count of reachable nodes

- Remove some dead full node implementations
This commit is contained in:
David A. Harding 2023-05-10 08:41:15 -10:00
parent da1f8ee2ba
commit 0ed5d4a199

View File

@ -38,78 +38,57 @@ network to nodes running other protocols. For example, Stratum servers
connect Stratum mining nodes via the Stratum protocol to the main
Bitcoin network and bridge the Stratum protocol to the Bitcoin P2P
protocol. We will describe some of the most commonly used of those
protocols in this chapter in addition to Bitcoin's P2P protocol.
protocols in this chapter in addition to the base Bitcoin P2P protocol.
=== Node Types and Roles
((("Bitcoin network", "node types and roles",
id="BNnode08")))((("Bitcoin nodes", "types and roles",
id="BNtype08")))Although nodes in the Bitcoin P2P network are equal,
id="BNtype08")))Although full nodes (peers) in the Bitcoin P2P network are equal to each other,
they may take on different roles depending on the functionality they are
supporting. A Bitcoin node is a collection of functions: routing, the
blockchain database, mining, and wallet services. A full node with all
four of these functions is shown in <<full_node_reference>>.
supporting. A Bitcoin node is a collection of several functions: validation,
routing, mining, and wallet services.
[[full_node_reference]]
[role="smallerfifty"]
.A Bitcoin network node with all four functions: wallet, miner, full blockchain database, and network routing
image::images/mbc2_0801.png["FullNodeReferenceClient_Small"]
All full nodes include the validation function and
might include other functionality.
All nodes include the routing function to participate in the network and
might include other functionality. All nodes validate and propagate
transactions and blocks, and discover and maintain connections to peers.
In the full-node example in <<full_node_reference>>, the routing
function is indicated by an orange circle named "Network Routing Node"
or with the letter "N."
((("full-node clients")))Some nodes, called full nodes, also maintain a
Some nodes, called _archival full nodes_, also maintain a
complete and up-to-date copy of the blockchain. Full nodes can
autonomously and authoritatively verify any transaction without external
reference. ((("simple-payment-verification (SPV)")))Some nodes maintain
reference. ((("simple-payment-verification (SPV)"))) Those nodes can
serve data to clients that stor
only a subset of the blockchain and verify transactions using a method
called _simplified payment verification_, or SPV. ((("lightweight
clients")))These nodes are known as SPV nodes or lightweight nodes. In
the full-node example in the figure, the full-node blockchain database
function is indicated by a circle called "Full Blockchain" or the letter
"B." In <<bitcoin_network>>, SPV nodes are drawn without the "B" circle,
showing that they do not have a full copy of the blockchain.
clients")))These nodes are known as lightweight clients.
((("Bitcoin nodes", "mining nodes")))((("mining and consensus", "mining
nodes")))((("Proof-of-Work algorithm")))((("mining and consensus",
"Proof-of-Work algorithm")))Mining nodes compete to create new blocks by
"Proof-of-Work algorithm")))Miners compete to create new blocks by
running specialized hardware to solve the Proof-of-Work algorithm. Some
mining nodes are also full nodes, maintaining a full copy of the
blockchain, while others are lightweight nodes participating in pool
mining and depending on a pool server to maintain a full node. The
mining function is shown in the full node as a black circle called
"Miner" or the letter "M."
miners operate full nodes, validating every block on the
blockchain, while others are clients participating in pool
mining and depending on a pool server to provide them with work.
User wallets might be part of a full node, as is usually the case with
desktop Bitcoin clients. Increasingly, many user wallets, especially
User wallets might connect to the user's own full node, as is sometimes the case with
desktop Bitcoin clients, but many user wallets, especially
those running on resource-constrained devices such as smartphones, are
SPV nodes. The wallet function is shown in <<full_node_reference>> as a
green circle called "Wallet" or the letter "W."
lightweight nodes.
In addition to the main node types on the Bitcoin P2P protocol, there
are servers and nodes running other protocols, such as specialized
mining pool protocols and lightweight client-access protocols.
<<node_type_ledgend>> shows the most common node types on the extended
Bitcoin network.
=== The Extended Bitcoin Network
=== The Bitcoin Network
((("", startref="BNnode08")))((("", startref="BNtype08")))((("Bitcoin
network", "extended network activities")))The main Bitcoin network,
running the Bitcoin P2P protocol, consists of between 5,000 and 8,000
listening nodes running various versions of the Bitcoin reference client
(Bitcoin Core) and a few hundred nodes running various other
implementations of the Bitcoin P2P protocol, such as Bitcoin Classic,
Bitcoin Unlimited, BitcoinJ, Libbitcoin, btcd, and bcoin. A small
network", "extended network activities")))As of this writing, the main Bitcoin network,
running the Bitcoin P2P protocol, consists of about 10,000
listening nodes running various versions of Bitcoin Core and a few
hundred nodes running various other implementations of the Bitcoin P2P
protocol such as BitcoinJ, Libbitcoin, btcd, and bcoin. A small
percentage of the nodes on the Bitcoin P2P network are also mining
nodes, competing in the mining process, validating transactions, and
creating new blocks. Various large companies interface with the Bitcoin
network by running full-node clients based on the Bitcoin Core client,
nodes. Various individuals and companies interface with the Bitcoin
network by running archival full nodes,
with full copies of the blockchain and a network node, but without
mining or wallet functions. These nodes act as network edge routers,
allowing various other services (exchanges, wallets, block explorers,
@ -123,18 +102,6 @@ protocols. These other protocol nodes are mostly pool mining nodes (see
<<mining>>) and lightweight wallet clients, which do not carry a full
copy of the blockchain.
<<bitcoin_network>> shows the extended Bitcoin network with the various
types of nodes, gateway servers, edge routers, and wallet clients and
the various protocols they use to connect to each other.
[[node_type_ledgend]]
.Different types of nodes on the extended Bitcoin network
image::images/mbc2_0802.png["BitcoinNodeTypes"]
[[bitcoin_network]]
.The extended Bitcoin network showing various node types, gateways, and protocols
image::images/mbc2_0803.png["BitcoinNetwork"]
=== Bitcoin Relay Networks
((("Bitcoin network", "Bitcoin Relay Networks")))((("relay