public inbox for bitcoindev@googlegroups.com
 help / color / mirror / Atom feed
From: Mike Hearn <mike@plan99•net>
To: Matt Corallo <bitcoin-list@bluematt•me>
Cc: Bitcoin Dev <bitcoin-development@lists•sourceforge.net>
Subject: Re: [Bitcoin-development] Draft BIP for Bloom filtering
Date: Fri, 18 Jan 2013 17:38:45 +0100	[thread overview]
Message-ID: <CANEZrP3FMbCZzT0Lfajv7T=F=Sjv1pNW-f3JVyrZLH5tQxYfmw@mail.gmail.com> (raw)
In-Reply-To: <1358348447.1048.0.camel@localhost.localdomain>

I'm thinking we should actually make the change we talked about before
and have the filtered block sent before the transaction data.

For one, it's not intuitive (API wise) that you'd get a callback
saying "new pending tx" immediately before another callback saying "tx
was confirmed", but that's what the current setup makes most natural.
To fix it we'd have to notice that a tx message wasn't requested by
us, buffer it, and wait for the corresponding filteredblock message.
It seems cleaner to receive a filteredblock and then for any tx that
matches it, attach it to the FilteredBlock object and wait until it is
full up, then pass it to the wallet code all at once.

Another issue is that to risk analyze unconfirmed transactions you
really have to download all dependencies. That has to be triggered by
seeing an unconfirmed transaction. It's dumb to start this process for
a tx that is actually in the chain, so you need to have some notion of
whether it came from a filtered block anyway. I only realized this
today.

I think when we discussed this before, the justification for having it
work the current way was that it was simpler to integrate with the SPV
client code if it was done this way around. But I don't think it's
really simpler. There are enough odd side effects of doing it this
way, that I feel it'd be better to tweak the protocol now whilst we
have the chance.

On Wed, Jan 16, 2013 at 4:00 PM, Matt Corallo <bitcoin-list@bluematt•me> wrote:
> Actually, there is one more minor algorithmic change I would like to
> make to the way the hash function is computed really quick before it
> gets merged, I'll have that finished up by the end of today.
>
> Matt
>
> On Wed, 2013-01-16 at 11:43 +0100, Mike Hearn wrote:
>> Matts latest code has been tested by Andreas and seems to work
>> correctly. He had to extend the client a bit to refresh the filter
>> every 25k blocks because even with the extra flag, eventually the
>> filter degrades into uselessness, but it did still improve the
>> situation quite a bit.
>>
>> Because it's unit tested, been reviewed by me several times, has an
>> interoperable implementation that has also been tested by Andreas in a
>> build of his smartphone app,  I'm going to ACK the current code and
>> request that it be merged in to 0.8. What do you say Gavin?
>>
>> The next step after that would be profiling. It's a big performance
>> improvement for SPV clients already, but not as much as I anticipated.
>> I suspect there's a simple bottleneck or missed optimization
>> somewhere. But that can obviously come post-0.8
>
>



  reply	other threads:[~2013-01-18 16:38 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-10-24 15:56 Mike Hearn
2012-10-24 16:22 ` Pieter Wuille
2012-10-24 16:35   ` Mike Hearn
2012-10-24 17:11     ` Pieter Wuille
2012-10-24 18:54       ` Gavin Andresen
2012-10-24 19:00         ` Matt Corallo
2012-10-24 19:10         ` Mike Hearn
2012-10-24 20:29           ` Gavin Andresen
2012-10-24 20:58             ` Mike Hearn
2012-10-24 21:55             ` Jeff Garzik
2012-10-25 16:56 ` Gregory Maxwell
2012-10-25 17:01   ` Gregory Maxwell
2012-10-26 14:01   ` Mike Hearn
2012-10-26 14:17     ` Gregory Maxwell
2012-10-26 14:21       ` Mike Hearn
2012-10-26 14:34         ` Gregory Maxwell
2012-11-06 19:14     ` Pieter Wuille
2012-11-21 15:15 ` Pieter Wuille
2012-11-21 18:38   ` Matt Corallo
2012-11-27 21:10     ` Pieter Wuille
2013-01-10 15:21       ` Mike Hearn
2013-01-11  3:59         ` Matt Corallo
2013-01-11  5:02           ` Jeff Garzik
2013-01-11 14:11             ` Mike Hearn
2013-01-11 14:13               ` Mike Hearn
2013-01-16 10:43                 ` Mike Hearn
2013-01-16 15:00                   ` Matt Corallo
2013-01-18 16:38                     ` Mike Hearn [this message]
2013-01-19  9:51                       ` Andreas Schildbach
2013-01-30 11:09                     ` Mike Hearn
2013-01-30 11:13                       ` Mike Hearn
2013-02-06 16:33                         ` Mike Hearn
2013-02-06 16:45                           ` Gregory Maxwell
2013-02-20 12:44                             ` Mike Hearn

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CANEZrP3FMbCZzT0Lfajv7T=F=Sjv1pNW-f3JVyrZLH5tQxYfmw@mail.gmail.com' \
    --to=mike@plan99$(echo .)net \
    --cc=bitcoin-development@lists$(echo .)sourceforge.net \
    --cc=bitcoin-list@bluematt$(echo .)me \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox