Author

Topic: Masterblocks: Scaling Blockchain by summarizing balances (Read 138 times)

staff
Activity: 3374
Merit: 6530
Just writing some code
First of all, the idea is not new and has been proposed multiple times throughout the years. But those proposals never actually go anywhere.

I see at least two things wrong with this proposal right of the bat.

First is this idea of balances. You are effectively introducing an accounts system, but Bitcoin does not work on an accounts system. Introducing an accounts system also introduces several other issues. First and foremost is transaction replay. Suppose, after a masterblock, your balance is 1 BTC and you want to send me 0.1 BTC. Since you are using a balance and not the UTXO set system, I can just keep replaying that transaction sending me 0.1 BTC. To the network, it looks like you just keep sending me 0.1 BTC, there is no way to differentiate between you sending me 0.1 BTC and me replaying the same 0.1 BTC transaction. Secondly, as you mention in the document, this doesn't work with scripts like multisig. In order to support those you have to have even more stuff that makes this more complicated. Then there's the problem with making transactions. Now you need to have multiple transaction types, one for spending from a balance, one for spending from balance with weird scripts, and the normal transaction type. This is complex and prone to error.

Instead of this balances thing, it would be much easier to effectively have one giant transaction in that masterblock which spends all previous UTXOs and creates new UTXOs. Those with the same scripts are combined so that each output has a unique script and the value of the output is the sum of all of the UTXOs for that script. This avoids all of those problems I mentioned earlier.

Next, there is a problem for new nodes. When you start up a new node, how does that node know that it is using the correct blockchain? How does it know that the balances are correct? There isn't anything that prevents an attacker from creating essentially a fake masterblock and giving it to new nodes. Since new nodes don't have the full block history, how can they be sure that the masterblock is actually valid?
Jump to: