Subject: Re: [Bitcoin-development] Ultimate Blockchain Compression w/ trust-free lite nodes

From: Peter Todd <[email-masked]>
Date: Sun, 17 Jun 2012 15:05:11 -0400

On Sun, Jun 17, 2012 at 02:39:28PM -0400, Alan Reiner wrote:
> All,
> 
> With the flurry of discussion about blockchain compression, I
> thought it was time to put forward my final, most-advanced idea,
> into a single, well-thought-out, *illustrated*, forum post.
> Please check it out: https://bitcointalk.org/index.php?topic=88208.0
> 
> This is a huge undertaking, but it has some pretty huge benefits.
> And it's actually feasible because it can be implemented without
> disrupting the main network.  I'm sure there's lots of issues with
> it, but I'm putting it out there to see how it might be improved and
> actually executed.
> 
> ----
> *Summary:
> 
> */Use a special tree data structure to organize all unspent-TxOuts
> on the network, and use the root of this tree to communicate its
> "signature" between nodes.  The leaves of this tree actually
> correspond to addresses/scripts, and the data at the leaf is
> actually a root of the unspent-TxOut list for that address/script.
> To maintain security of the tree signatures, it will be included in
> the header of an alternate blockchain, which will be secured by
> merged mining.
> 
> This provides the same compression as the simpler unspent-TxOut
> merkle tree, but also gives nodes a way to download just the
> unspent-TxOut list for each address in their wallet, and verify that
> list directly against the blockheaders.  Therefore, even lightweight
> nodes can get full address information, from any untrusted peer, and
> with only a tiny amount of downloaded data (a few kB). /*

How are you going to prevent people from delibrately unbalancing the
tree with addresses with chosen hashes?

One idea that comes to mind, which unfortunately would make for a
pseudo-network rule, is to simply say that any *new* address whose hash
happens to be deeper in the tree than, say, 10*log(n), indicating it was
probably chosen to be unbalanced, gets discarded. The "new address" part
of the rule would be required, or else you could use the rule to get
other people's addresses discarded.

Having said that, such a rule just means that anyone playing games will
find they can't spend *their* money, and only with pruning clients.
Unrelated people will not be effected. The coins can also always be
spent with a non-pruning client to an acceptable address, which can
later re-spend on a pruning client.

It also comes to mind is that with the popularity of firstbits it may be
a good idea to use a comparison function that works last bit first...

It's merkles all the way down...

-- 
'peter'[:-1]@petertodd.org