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

CH11: s/SPV node/SPV client/

This commit is contained in:
David A. Harding 2023-05-19 08:40:37 -10:00
parent 94c9bd7c6e
commit b7387220da

View File

@ -488,33 +488,33 @@ bytes. With merkle trees, a node can download just the block headers (80
bytes per block) and still be able to identify a transaction's inclusion
in a block by retrieving a small merkle path from a full node, without
storing or transmitting the vast majority of the blockchain, which might
be several gigabytes in size. Nodes that do not maintain a full
blockchain, called simplified payment verification (SPV) nodes, use
be several gigabytes in size. Clients that do not maintain a full
blockchain, called simplified payment verification (SPV) client, use
merkle paths to verify transactions without downloading full blocks.
=== Merkle Trees and Simplified Payment Verification (SPV)
((("simple-payment-verification (SPV)")))((("bitcoin nodes", "SPV
nodes")))Merkle trees are used extensively by SPV nodes. SPV nodes don't
clients")))Merkle trees are used extensively by SPV clients. SPV clients don't
have all transactions and do not download full blocks, just block
headers. In order to verify that a transaction is included in a block,
without having to download all the transactions in the block, they use
an authentication path, or merkle path.
Consider, for example, an SPV node that is interested in incoming
payments to an address contained in its wallet. The SPV node will
Consider, for example, an SPV client that is interested in incoming
payments to an address contained in its wallet. The SPV client will
establish a bloom filter (see <<bloom_filters>>) on its connections to
peers to limit the transactions received to only those containing
addresses of interest. When a peer sees a transaction that matches the
bloom filter, it will send that block using a +merkleblock+ message. The
+merkleblock+ message contains the block header as well as a merkle path
that links the transaction of interest to the merkle root in the block.
The SPV node can use this merkle path to connect the transaction to the
The SPV client can use this merkle path to connect the transaction to the
block and verify that the transaction is included in the block. The SPV
node also uses the block header to link the block to the rest of the
client also uses the block header to link the block to the rest of the
blockchain. The combination of these two links, between the transaction
and block, and between the block and blockchain, proves that the
transaction is recorded in the blockchain. All in all, the SPV node will
transaction is recorded in the blockchain. All in all, the SPV client will
have received less than a kilobyte of data for the block header and
merkle path, an amount of data that is more than a thousand times less
than a full block (about 1 megabyte currently).((("",