This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
|
dido:public:ra:xapend:xapend.b_stds:defact:bitcoin:bips:bip_0037 [2021/07/26 17:48] murphy |
dido:public:ra:xapend:xapend.b_stds:defact:bitcoin:bips:bip_0037 [2021/08/05 10:59] (current) murphy |
||
|---|---|---|---|
| Line 20: | Line 20: | ||
| === Abstract === | === Abstract === | ||
| - | : //This BIP adds new support to the peer-to-peer protocol that allows peers to reduce the amount of transaction data they are sent. Peers have the option of setting filters on each connection they make after the version handshake has completed. A filter is defined as a [[ http://en.wikipedia.org/wiki/Bloom_filter | Bloom filter]] on data derived from transactions. A Bloom filter is a probabilistic data structure which allows for testing set membership - they can have false positives but not false negatives.// | + | : //This BIP adds new support to the peer-to-peer protocol that allows peers to reduce the amount of transaction data they are sent. Peers have the option of setting filters on each connection they make after the version handshake has completed. A filter is defined as a [[ http://en.wikipedia.org/wiki/Bloom_filter | Bloom filter]] on data derived from transactions. A Bloom filter is a probabilistic [[dido:public:ra:xapend:xapend.a_glossary:d:datastructure|data structure]] which allows for testing set membership - they can have false positives but not false negatives.// |
| : //This document will not go into the details of how Bloom filters work and the reader is referred to Wikipedia for an introduction to the topic.// | : //This document will not go into the details of how Bloom filters work and the reader is referred to Wikipedia for an introduction to the topic.// | ||
| === Motivation === | === Motivation === | ||
| - | : //As Bitcoin grows in usage the amount of [[dido:public:ra:xapend:xapend.a_glossary:b:bandwidth|bandwidth]] needed to download blocks and transaction broadcasts increases. Clients implementing __simplified__ payment verification do not attempt to fully verify the block chain, instead just checking that block headers connect together correctly and trusting that the transactions in a chain of high difficulty are in fact valid. See the Bitcoin paper for more detail on this mode.// | + | : //As Bitcoin grows in usage the amount of [[dido:public:ra:xapend:xapend.a_glossary:b:bandwidth|bandwidth]] needed to download blocks and transaction broadcasts increases. Clients implementing __simplified__ payment verification do not attempt to fully verify the block chain, instead just checking that block headers connect together correctly and trusting that the transactions in a chain of high [[dido:public:ra:xapend:xapend.a_glossary:d:difficulty|difficulty]] are in fact valid. See the Bitcoin paper for more detail on this mode.// |
| : //Today, [[ https://bitcoin.org/en/developer-guide#simplified-payment-verification-spv | SPV]] clients have to download the entire contents of blocks and all broadcast transactions, only to throw away the vast majority of the transactions that are not relevant to their wallets. This slows down their synchronization process, wastes users bandwidth (which on phones is often metered) and increases memory usage. All three problems are triggering real user complaints for the Android "[[dido:public:ra:xapend:xapend.a_glossary:b:bitcoin_wallet|Bitcoin Wallet]]" app which implements [[dido:public:ra:xapend:xapend.a_glossary:s:spv]] mode. In order to make chain synchronization fast, cheap and able to run on older phones with limited memory we want to have remote peers throw away irrelevant transactions before sending them across the network.// | : //Today, [[ https://bitcoin.org/en/developer-guide#simplified-payment-verification-spv | SPV]] clients have to download the entire contents of blocks and all broadcast transactions, only to throw away the vast majority of the transactions that are not relevant to their wallets. This slows down their synchronization process, wastes users bandwidth (which on phones is often metered) and increases memory usage. All three problems are triggering real user complaints for the Android "[[dido:public:ra:xapend:xapend.a_glossary:b:bitcoin_wallet|Bitcoin Wallet]]" app which implements [[dido:public:ra:xapend:xapend.a_glossary:s:spv]] mode. In order to make chain synchronization fast, cheap and able to run on older phones with limited memory we want to have remote peers throw away irrelevant transactions before sending them across the network.// | ||