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 [2020/05/19 17:20] char |
dido:public:ra:xapend:xapend.b_stds:defact:bitcoin:bips:bip_0037 [2021/08/05 10:59] (current) murphy |
||
|---|---|---|---|
| Line 1: | Line 1: | ||
| ==== BIP 0037 - Connection Bloom filtering ==== | ==== BIP 0037 - Connection Bloom filtering ==== | ||
| - | [[dido:public:ra:xapend.stds:defact:bitcoin:bips| return to the Bitcoin Improvement Proposals ]] | + | [[dido:public:ra:xapend:xapend.b_stds:defact:bitcoin:bips| return to the Bitcoin Improvement Proposals ]] |
| <table> | <table> | ||
| Line 14: | Line 14: | ||
| | Post History | | | | Post History | | | ||
| | Description | [[https://github.com/bitcoin/bips/blob/master/bip-0037.mediawiki]] | | | Description | [[https://github.com/bitcoin/bips/blob/master/bip-0037.mediawiki]] | | ||
| - | } License | PD | | + | |License | PD | |
| </table> | </table> | ||
| - | : **Note**: The following is an excerpt from the official Bitcoin site. It is provided here as a convenience and is not authoritative. Refer to the original document(s) as the authoritative reference. | + | : **Note**: The following is an excerpt from the official [[dido:public:ra:xapend:xapend.a_glossary:b:bitcoin|Bitcoin]] site. It is provided here as a convenience and is not authoritative. Refer to the original document(s) as the authoritative reference. |
| === 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 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 "Bitcoin Wallet" app which implements 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.// |