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:
parent
94c9bd7c6e
commit
b7387220da
@ -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).((("",
|
||||
|
Loading…
Reference in New Issue
Block a user