mirror of
https://github.com/bitcoinbook/bitcoinbook
synced 2024-11-15 20:49:21 +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:
parent
da1f8ee2ba
commit
0ed5d4a199
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user