[Cryptography] Another Bitcoin issue (maybe)

Bear bear at sonic.net
Mon Feb 17 13:17:08 EST 2014

On Sun, 2014-02-16 at 11:21 +1000, James A. Donald wrote:

> Back in the beginning, I said, scaling problems.

As soon as I understood the full-blockchain storage requirement, I had 
the same concern.  Especially if facing widespread adoption, the
blockchain will grow far too fast for everybody to store a copy of it.

> Really we need a system in which there is globally one true blockchain, 
> but each person locally stores only part of it, which however makes the 
> Byzantine Generals problem considerably harder.

The community is working on a solution they call the "mini-blockchain" 
which allows for periodically dumping blocks older than X. That
addresses some data storage requirements, but I'm still concerned that
bandwidth requirements do not scale well.

I have an idea how to split up bandwidth requirements, but I have no 
proof-of-concept implementation yet.  

My idea is to use multiple blockchains.  Let's say that we partition 
the users up into six proper subsets which I'll arbitrarily call S1, 
S2, S3, S4, S5, and S6.  Each pair of subsets shares a blockchain.  
And each blockchain shared by a subset is part of that subset's
"channel."  Additionally there is one shared blockchain that's part 
of every channel. I believe that it would be most useful (have least 
overhead costs) if the user subsets were divided according to 
geographic region, but in the future that may be wrong.

So subset S1 has a channel consisting of 
blockchains B12, B13, B14, B15, B16, and BS. 

Subset S2 has a channel consisting of 
blockchains B12, B23, B24, B25, B26, and BS. 

Subset S3 has a channel consisting of 
blockchains B13, B23, B34, B35, B36, and BS.  

etc.  If you partition the users into N subsets, you wind up with 
1 + ((N^2 - N) / 2) blockchains.  Each blockchain appears in 2 
channels, except BS, which appears in all channels. 

Now transactions between actors in any two different subsets can 
take place in the blockchain shared between those two subsets, 
while transactions internal to any subset can take place in whichever
blockchain in that channel is under least load, or in whichever 
blockchain in that channel the payee finds it strategically useful 
to have the txouts appear in. 

The shared blockchain common to all channels is used for transactions
that take place among users divided among 3 or more subsets.  However, 
it must also be used for reconciliation.  IE, if you have money to 
spend but don't have money in one of the blockchains you share with 
the person you want to spend it to, you have to make a preliminary 
tx transferring that money to the shared blockchain.  This is
essentially the overhead cost of separating the users into channels.

More information about the cryptography mailing list