Thanks for getting this started. <div><br></div><div>With regards to the specific proposal, I don&#39;t believe it&#39;s the best option and still plan to eventually implement the original design outlined more than a year ago in this thread:</div>
<div><br></div><div>  <a href="https://bitcointalk.org/index.php?topic=7972.msg116285#msg116285">https://bitcointalk.org/index.php?topic=7972.msg116285#msg116285</a></div><div><br></div><div>Namely that you use a new protocol command to set a Bloom filter on a connection. Only transactions matching that filter will appear in relayed inventory. Blocks that are requested will arrive as a header plus transaction/merkle branch pairs. Clients are expected to maintain and track the block chain as per usual, but instead of downloading the whole chain and then dropping the irrelevant transactions, that filtering is done server side. By strengthening or weakening the Bloom filters you can choose your preferred point on the privacy/bandwidth-usage spectrum. It is a fairly simple change to the Satoshi and BitcoinJ codebases but still allows clients to gain confidence in their balance by examining the chain, and this is true even in the presence of a hijacked internet connection (you can&#39;t trust pending transactions that way, but you can still trust confirmed transactions).</div>
<div><br></div><div>The filters would be applied to each data block in each script rather than having a specific knowledge of addresses. In this way you can select for things like multisig outputs or outputs which don&#39;t use addresses / pubkeys to authenticate.</div>
<div><br></div><div>I could write a BIP for this alternative protocol if somebody else wants to implement it. I was going to wait until I had time to do both BIP and implementation, but I think some simple optimizations to BitcoinJ can keep its performance good enough for the short term.</div>