So, I tried my due diligence to see if this had already been hashed out before, and there was an attempt maybe:
https://bitcointalksearch.org/topic/m.2304432and maybe here:
https://bitcointalksearch.org/topic/m.3093912So here are my assumptions. They may be naive and uninformed (I don't claim to be versed in this stuff), but I learn by doing, not by studying - so if you tell me why it couldn't work, then I understand bitcoin better.
The blocksize bottleneck has to do with too many transactions not making it into a block, they sit around in the mempool, things get backed up.
Relatively simple solution - increase blocksize.
Potential pitfalls, as I understand them, are increased resource requirements. The moot pitfall is storage space. The only relevant resource pitfall, methinks, is bandwidth.
After reading this, however, blockrope may be useless:
http://bitcoin.stackexchange.com/questions/36085/what-are-the-arguments-for-and-against-the-increase-of-the-block-size-limitbecause the bandwidth issue has to do with concerns over supposed data caps - i.e., the concern is about how much data you have to push through the pipes, not how effectively you have to push the data through the pipes.
But here is the idea, and I think its simple. No idea re: implementation.
Introduce additional databases - additional ledgers. So, there's a bunch of transactions in the mempool, the miner is trying to solve a block for transaction collection #1, and trying to solve a block for collection #2, etc. And (as I think one of the posts above alluded to), this could be done in a merged mining fashion, wherein each nonce is tried against each block collection.
So say the miner is currently working on a block.. this is the primary block, and the miner has elected to only include transactions with a certain transaction fee. So this is his primary block. While working on that block, each nonce is checked on a seperate block, with a different set of parameters re: transaction fees.
A. Miner finds primary block, great. Standard bitcoin happens.
B. Miner finds solution to secondary block. What happens?
1. Secondary block added to separate blockchain. Something in the protocol would indicate that the transactions in this block refer to the data in blockchain A. The blockchain B block is propagated and added to everyones blockchain B.
2. How to make a transaction with multiple blockchains? These are just databases, right? Can't you have the wallet just scan multiple databases for the required information? "I need to see what outputs are owned by George. He has these on blockchain A, these on blockchain B, these on C... so to make this transaction, I'm going to to pull this one from A, this one from C, doop dee doo I'm a computer"
3. How to incentivize secondary blockchains? These would probably rely solely on transaction fees. In the future, you could imagine tiers of trust... "well, I'm selling you a taco, so I don't care if your on the secondary blockchain."
4. How to secure these additional blockchains? Every 10 blocks,? Every 20, some number of blocks - the primary chain includes information (the previous hash) of the additional chains. Secure is probably not the right word. Make trustless? So its like a checkpoint.
Potential pitfalls:
One issue I see is the increased rate at which the primary block would have to be modified - i.e., information of secondary, tertiary etc found blocks would propagate through the network, causing other blocks being worked on to become invalid, because those transactions were already sopped up from the mempool. Alternatively, would it be possible for bleedover to be ok? I.e., this confirmation was included in blockchain A at height X AND in blockchain B at height Y. Is it a double spend if the transaction is the same?
"Well I looked at ledger 1, and it says Alice's output #Y of 2 bitcoin is now bobs output #Z of 2 bitcoin, and I looked at ledger 2, and it says Alice's output #Y of 2 bitcoin is now bobs output #Z of 2 bitcoin."
But the important question: would this get at the scaleability problem?
The total amount of data would be the same... i.e., instead of going from 1 MB blocks to 20 MB blocks, we just have 20 blockTHREADS (?) with 1 MB blocksizes (for instance). But perhaps the effectiveness of the data transmission would increase, with the supposition being that smaller files would move through the network faster.
This might also create the phenomenon of blockchain locales.
oh boy. there goes the morning.