CH10: s/bitcoin/Bitcoin/

develop
David A. Harding 1 year ago
parent e5dc7d86ab
commit 328c11c1ec

@ -17,7 +17,7 @@ networks are inherently resilient, decentralized, and open. A preeminent
example of a P2P network architecture was the early internet itself,
where nodes on the IP network were equal. Today's internet architecture
is more hierarchical, but the Internet Protocol still retains its
flat-topology essence. Beyond bitcoin, the largest and most successful
flat-topology essence. Beyond Bitcoin, the largest and most successful
application of P2P technologies is file sharing, with Napster as the
pioneer and BitTorrent as the most recent evolution of the architecture.
@ -29,16 +29,16 @@ that can only be achieved and maintained by a flat, decentralized P2P
consensus network.
((("Bitcoin network", "defined")))The term "Bitcoin network" refers to
the collection of nodes running the bitcoin P2P protocol. In addition to
the bitcoin P2P protocol, there are other protocols such as Stratum that
the collection of nodes running the Bitcoin P2P protocol. In addition to
the Bitcoin P2P protocol, there are other protocols such as Stratum that
are used for mining and lightweight or mobile wallets. These additional
protocols are provided by gateway routing servers that access the
Bitcoin network using the bitcoin P2P protocol and then extend that
Bitcoin network using the Bitcoin P2P protocol and then extend that
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
Bitcoin network and bridge the Stratum protocol to the Bitcoin P2P
protocol. We use the term "extended Bitcoin network" to refer to the
overall network that includes the bitcoin P2P protocol, pool-mining
overall network that includes the Bitcoin P2P protocol, pool-mining
protocols, the Stratum protocol, and any other related protocols
connecting the components of the Bitcoin system.
@ -46,7 +46,7 @@ connecting the components of the Bitcoin system.
((("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 nodes in the Bitcoin P2P network are equal,
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
@ -76,7 +76,7 @@ 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.
((("bitcoin nodes", "mining nodes")))((("mining and consensus", "mining
((("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
running specialized hardware to solve the Proof-of-Work algorithm. Some
@ -103,12 +103,12 @@ 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
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,
implementations of the Bitcoin P2P protocol, such as Bitcoin Classic,
Bitcoin Unlimited, BitcoinJ, Libbitcoin, btcd, and bcoin. A small
percentage of the nodes on the bitcoin P2P network are also mining
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,
@ -117,9 +117,9 @@ mining or wallet functions. These nodes act as network edge routers,
allowing various other services (exchanges, wallets, block explorers,
merchant payment processing) to be built on top.
The extended Bitcoin network includes the network running the bitcoin
The extended Bitcoin network includes the network running the Bitcoin
P2P protocol, described earlier, as well as nodes running specialized
protocols. Attached to the main bitcoin P2P network are a number of pool
protocols. Attached to the main Bitcoin P2P network are a number of pool
servers and protocol gateways that connect nodes running other
protocols. These other protocol nodes are mostly pool mining nodes (see
<<mining>>) and lightweight wallet clients, which do not carry a full
@ -140,14 +140,14 @@ image::images/mbc2_0803.png["BitcoinNetwork"]
=== Bitcoin Relay Networks
((("Bitcoin network", "Bitcoin Relay Networks")))((("relay
networks")))While the bitcoin P2P network serves the general needs of a
networks")))While the Bitcoin P2P network serves the general needs of a
broad variety of node types, it exhibits too high network latency for
the specialized needs of bitcoin mining nodes.
the specialized needs of Bitcoin mining nodes.
((("propagation", "relay networks and")))Bitcoin miners are engaged in a
time-sensitive competition to solve the Proof-of-Work problem and extend
the blockchain (see <<mining>>). While participating in this
competition, bitcoin miners must minimize the time between the
competition, Bitcoin miners must minimize the time between the
propagation of a winning block and the beginning of the next round of
competition. In mining, network latency is directly related to profit
margins.
@ -176,7 +176,7 @@ at Cornell University. Falcon uses "cut-through-routing" instead of
they are received rather than waiting until a complete block is
received.
Relay networks are not replacements for bitcoin's P2P network. Instead
Relay networks are not replacements for Bitcoin's P2P network. Instead
they are overlay networks that provide additional connectivity between
nodes with specialized needs. Like freeways are not replacements for
rural roads, but rather shortcuts between two points with heavy traffic,
@ -194,13 +194,13 @@ irrelevant; the Bitcoin network topology is not geographically defined.
Therefore, any existing Bitcoin nodes can be selected at random.
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
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 <<network_handshake>>) by
transmitting a +version+ message, which contains basic identifying
information, including:
+nVersion+:: 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
@ -223,7 +223,7 @@ 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
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 of reliability for the initial bootstrapping
@ -337,7 +337,7 @@ startref="BNextend08")))((("", startref="BNodiscover08")))
clients")))((("blockchain (the)", "full blockchain nodes")))Full nodes
are nodes that maintain a full blockchain with all transactions. More
accurately, they probably should be called "full blockchain nodes." In
the early years of bitcoin, all nodes were full nodes and currently the
the early years of Bitcoin, all nodes were full nodes and currently the
Bitcoin Core client is a full blockchain node. In the past two years,
however, new forms of Bitcoin clients have been introduced that do not
maintain a full blockchain but run as lightweight clients. We'll examine
@ -355,7 +355,7 @@ receive updates about new blocks of transactions, which it then verifies
and incorporates into its local copy of the blockchain.
((("Bitcoin nodes", "full nodes")))Running a full blockchain node gives
you the pure bitcoin experience: independent verification of all
you the pure Bitcoin experience: independent verification of all
transactions without the need to rely on, or trust, any other systems.
It's easy to tell if you're running a full node because it requires more
than one hundred gigabytes of persistent storage (disk space) to store
@ -534,7 +534,7 @@ user of that wallet, destroying the user's privacy.
.SPV node synchronizing the block headers
image::images/mbc2_0807.png["SPVSynchronization"]
Shortly after the introduction of SPV/lightweight nodes, bitcoin
Shortly after the introduction of SPV/lightweight nodes, Bitcoin
developers added a feature called _bloom filters_ to address the privacy
risks of SPV nodes. Bloom filters allow SPV nodes to receive a subset of
the transactions without revealing precisely which addresses they are
@ -747,12 +747,12 @@ client.
((("Bitcoin network", "encrypted
connections")))((("encryption")))((("authentication")))Most new users of
bitcoin assume that the network communications of a Bitcoin node are
Bitcoin assume that the network communications of a Bitcoin node are
encrypted. In fact, the original implementation of bitcoin communicates
entirely in the clear. While this is not a major privacy concern for
full nodes, it is a big problem for SPV nodes.
As a way to increase the privacy and security of the bitcoin P2P
As a way to increase the privacy and security of the Bitcoin P2P
network, there are two solutions that provide encryption of the
communications: _Tor Transport_ and _P2P Authentication and Encryption_
with BIP-150/151.
@ -814,7 +814,7 @@ privacy of the SPV client.
Additionally, authentication can be used to create networks of trusted
Bitcoin nodes and prevent Man-in-the-Middle attacks. Finally, P2P
encryption, if deployed broadly, would strengthen the resistance of
bitcoin to traffic analysis and privacy-eroding surveillance, especially
Bitcoin to traffic analysis and privacy-eroding surveillance, especially
in totalitarian countries where internet use is heavily controlled and
monitored.

Loading…
Cancel
Save