On Thu, Apr 10, 2014 at 1:37 PM, Mike Hearn <mike@plan99.net> wrote:
Chain pruning is probably a separate thread, changing subject.
 
Reason is that the actual blocks available are likely to change frequently (if
you keep the last week of blocks

I doubt anyone would specify blocks to keep in terms of time. More likely it'd be in terms of megabytes, as that's the actual resource constraint on nodes.

Well with bitcoin, (average) time, number of blocks and (maximum) size are all related to each other so it doesn't matter how it is specified, it's always possible to give estimates of all three.

As for implementation it indeed makes most sense to work with block ranges.
 
Given a block size average it's easy to go from megabytes to num_blocks, so I had imagined it'd be a new addr field that specifies how many blocks from the chain head are stored. Then you'd connect to some nodes and if they indicate their chain head - num_blocks_stored is higher than your current chain height, you'd do a getaddr and go looking for nodes that are storing far enough back.

This assumes that nodes will always be storing the latest blocks. For dynamic nodes that take part in the consensus this makes sense.

Just wondering: Would there be a use for a [static] node that, say, always serves only the first 100000 blocks? Or, even, a static range like block 100000 - 200000?

Wladimir