Post
Topic
Board Development & Technical Discussion
Re: Increasing the blocksize as a (generalized) softfork.
by
Taek
on 20/12/2015, 16:46:06 UTC
ZoomT, I would assert that your definition of a generalized softfork is incomplete. You want to make sure that old nodes can:

+ send transactions
+ receive transactions
+ receive transactions from the extended blocks

Though the definition is incomplete, though it only affects the implementation a little. When you add coins to the extended blocks, they get stuck in 'anyonecanspend' outputs as recognized by the old nodes. In your transformation, you add some specification that money sent back to old nodes be pulled out of the most sensible set of the anyonecanspend outputs (for some strict definition of sensible). You would also need to add a rule that the new blockchain can't spend so many outputs to old addresses that the transformation results in an old block greater than 1mb. Finally, I think it's worth highlighting that the transformation is somehow performed in a way that the POW is still valid on the old chain (ie using the coinbase txn to store a hash), though I think that this is implicitly clear.

I see a few problems with those proposal

1) You are proposing to fork the blockchain without consensus. This in itself is a problem, we don't want to fork without consensus (even with a soft fork) because there is still the possibility of the old chain surviving, and that can lead to some major problems.

2) Your generalized soft fork idea breaks one of the basic principles of Bitcoin, storing all of the transaction history in the blockchain. It is not possible to know what the transaction data is if you use your idea to transform blocks under new rules to blocks under old rules. It isn't backwards compatible so it isn't a soft fork. If I ran a client with the old rules, then I would not be able to know what the transactions were in that block without having to download the fork. That is completely pointless.



I would refute both of those problems, especially if you maintain the three properties listed above. The old chain surviving is only problematic for miners that do not upgrade. This is the same as a 51% attack, and in fact all softforks are basically 51% attacks on non-upgraded miners, it's just that they are not typically deployed until much more than 51% hashpower is reached. Additionally, all nodes still have a full transaction history that they recognize as valid, even the old nodes. Their history will also contain a bunch of 'anyonecanspend' transactions that miner's for some reason aren't mining, but they can do full trustless verification of the coins that they own, and can spend them if they are willing to pay the fee.