Pages:
Author

Topic: Next Steps and Testers wanted - page 2. (Read 14377 times)

full member
Activity: 165
Merit: 100
February 06, 2013, 02:52:34 PM
#5
Wow, thank you for the excellent explanation!  Shocked
legendary
Activity: 1526
Merit: 1129
February 06, 2013, 12:41:30 PM
#4
Here is a 10 second explanation.

Currently SPV (lightweight p2p) clients must download all transactions from the entire Bitcoin system, even though they do not verify them or check signatures. Instead they're downloaded, checked to see if they send money to or from your wallet, and if not the data is just thrown away.

This is wasteful, slow and doesn't scale because it means as more people use Bitcoin syncing the chain gets ever slower. Also, it pushes people towards clients like Electrum and BitcoinSpinner which use custom protocols which do all the work on dedicated servers.

Bloom filtering solves this. When it connects, the client creates a data structure (the filter) that represents the keys in the users wallet and sends it to the remote peers. They then only send the transactions that match the filter across the network.

The system we have chosen has desirable properties:

  • When transactions are sent to the client, they are accompanied by proofs that they were included in the block chain (merkle branches). Remote nodes cannot send you fake money unless they are willing to mine fake chains, which is hard. (note: they can try and omit transactions, but because you can use any Bitcoin node they are unlikely to get away with it)
  • The Bloom filters are probabilistic. They can have false positives, but no false negatives. That means the remote peer receives a noisy view of your wallet - it'll end up sending you transactions that aren't actually involving your keys (which get thrown away of course) and can't tell which are really yours and which are not. You can choose the false positive rate to trade off bandwidth vs privacy.

In this way, we can take a step closer to having Electrum/BCSpinner levels of performance but with strong privacy, no central points of failure and using Satoshis original vision of a purely peer to peer network.
hero member
Activity: 483
Merit: 501
February 06, 2013, 10:32:36 AM
#3
Are there any docs on how the bloom filter works?

The specification can be found here:
https://en.bitcoin.it/wiki/BIP_0037

And there is a general description of bloom filters here:
http://en.wikipedia.org/wiki/Bloom_filter
donator
Activity: 1218
Merit: 1063
Gerald Davis
February 06, 2013, 10:22:29 AM
#2
Are there any docs on how the bloom filter works?
hero member
Activity: 483
Merit: 501
February 06, 2013, 08:03:27 AM
#1
I thought I'd give you a quick update on the progress lately.

I'm working on the next version of Bitcoin Wallet which will not have a lot of user-facing features but rather focusses on much more efficient network usage.

For that to happen, Matt Corallo and Mike Hearn have implemented Bloom Filters into the soon to be released bitcoin-qt 0.8 and bitcoinj (will go into 0.7).

With Bloom Filters, only the data relevant to your wallet will be transferred, plus some more for anonymity purposes. This saves network, CPU resources and at the end of the day your battery will last longer.

You can help testing this. Get a preview from:

http://code.google.com/p/bitcoin-wallet/downloads/list

Use the trusted peer prefs for connecting to a Bloom enabled node. Since Bitcoin 0.8 is not released yet you either need to compile and run your own node or you can use Mike's riker.plan99.net.

I'd be especially interested in comments from people who suffered from high usage of their network data plan.
Pages:
Jump to: