Pages:
Author

Topic: Increasing the blocksize as a (generalized) softfork. (Read 5355 times)

newbie
Activity: 15
Merit: 0
Hi ZoomT, I attempted to provide a non-technical explanation of the principal for how a generalised softfork could be achieved, is this a fair representation of your basic principle?

Thanks for writing this.  In terms of analogies, I was thinking something like this:

Bitcoin = flower picking game
Example Softfork = everyone must pick only yellow flowers
Example Hardfork = everyone must pick mushrooms instead of flowers
Example "Generalized" Softfork = everyone must pick flowering mushrooms

The example softfork does not violate the original rules of the game, i.e. everyone is still picking flowers, albeit yellow flowers.

The example hardfork changes the rules to a new game (mushroom picking).

The example generalized softfork effectively achieves the same thing as a hardfork (upgrading everyone to mushroom picking) but as a softfork (technically everyone is still picking flowers as well).

I do not think there is such thing as a flowering mushroom however.
newbie
Activity: 21
Merit: 1
Hi ZoomT, I attempted to provide a non-technical explanation of the principal for how a generalised softfork could be achieved, is this a fair representation of your basic principle?

http://pondpolitics.com/2016/01/hard-vs-soft-fork-is-there-a-third-way-to-increase-the-bitcoin-block-size/
newbie
Activity: 33
Merit: 0
I want to say softfork is best rather than hardfork, as the bitcoin node base has been huge and expanding rapidly. It will help quick updation in no time.
newbie
Activity: 15
Merit: 0
I propose the old chain actually keeps a record of legacy transactions, and that the new chain effectively becomes a sidechain (of sorts).

As mentioned on reddit, this idea seems very similar to "extension/auxiliary blocks", although maybe there are some differences (?).

There is nothing wrong with this kind of idea other than it adds more complexity for the sake of better backwards compatibility (i.e. it's a trade-off).  Personally I prefer the simpler solution as backwards compatibility is only a short-term problem, whereas any complexity it introduces can remain forever.
newbie
Activity: 2
Merit: 0
I propose the old chain actually keeps a record of legacy transactions, and that the new chain effectively becomes a sidechain (of sorts).

Do two-way peg using spend-all coins (like SW) in the original chain. So new transactions can actually send coins to legacy addresses.

I assume SW is not yet implemented, so that's why I simply copy some SW tricks.

1. A transaction is send to a spend-all address (legacy chain), segregated witness data is added to the segregated block (like SW).
1. Transactions to/from segregated addresses only go into the segregated chain
1. When creating a transactions to legacy addresses a transaction is created from any spend-all transaction (legacy chain) and coins are destroyed (on the segregated chain)

Miners would then simply check whether all spend-all transactions in the legacy actually came from "destroyed" coins in the new chain.
full member
Activity: 163
Merit: 100
This is a great proposal. This gets over the problem that even if consensus (say 75%) is reached how do we ensure transactions are not lost before everyone (100%) has upgraded or risk being on a losing chain forever.

Under this proposal we no longer need as much as 75%, 55% would probably do and the rest can safely upgrade with all transactions ending up on the winning chain because, by the time we reach 55%, we will know which chain will win.  
legendary
Activity: 1148
Merit: 1011
In Satoshi I Trust
"of course" you dont need a hard fork. "of course" everybody wants an increase.
but it is not blockstream approved. end.  Undecided
sr. member
Activity: 475
Merit: 255
Slightly off-topic...
Isn't the Note concerning 4 July 2015 problem a bit obsolete?
Quote
Note: this situation has not been fully resolved, and it does not appear that it will be fully resolved anytime soon.
(Last update: 2015-07-15)
hero member
Activity: 910
Merit: 1003
This seems to be the same idea, but using an "extension record" approach instead of a separate blokchain:

Original comment by /u/seweso on reddit

My understanding of the proposal

Comparison to the hard fork approach
newbie
Activity: 13
Merit: 4
generalized soft-forks:
http://lists.linuxfoundation.org/pipermail/bitcoin-dev/2015-December/012073.html

bip102 forced soft-fork:
http://lists.linuxfoundation.org/pipermail/bitcoin-dev/2015-December/012153.html

auxiliary blocks and evil soft-forks or forced soft-forks:
https://bitcointalksearch.org/topic/auxiliary-block-increasing-max-block-size-with-softfork-283746
https://bitcointalksearch.org/topic/soft-forking-to-increase-the-block-size-874313

soft-fork block size increase using extension blocks:
http://lists.linuxfoundation.org/pipermail/bitcoin-dev/2015-May/008356.html

extension blocks were also discussed in this interview:
http://diyhpl.us/wiki/transcripts/bitcoin-sidechains-unchained-epicenter-adam3us-gmaxwell/
.... which includes something very similar to the idea of a soft-hard fork (something I was informed about on 2015-06-13 ..... not sure if I should mention this?)

some discussion from today re: origin of the term evil fork, evil soft-fork, forced soft-fork:
https://www.reddit.com/r/Bitcoin/comments/3yrsxt/bitcoindev_an_implementation_of_bip102_as_a/cyg2g7q

some much older discussion about extension blocks and sidechains:
http://gnusha.org/bitcoin-wizards/2015-01-01.log

some discussion about "generalized soft-forks" and extension blocks and evil soft-forks:
http://gnusha.org/bitcoin-wizards/2015-12-20.log

segwit soft-fork makes use of a similar idea:
http://diyhpl.us/wiki/transcripts/scalingbitcoin/hong-kong/segregated-witness-and-its-impact-on-scalability/

discussion about evil forks and evil soft-forks and extension blocks:
http://gnusha.org/bitcoin-wizards/2015-12-30.log

fork types:
http://lists.linuxfoundation.org/pipermail/bitcoin-dev/2015-December/012172.html

these links are also mentioned here:
https://www.reddit.com/r/Bitcoin/comments/3yrsxt/bitcoindev_an_implementation_of_bip102_as_a/cyg7mdr

and also mentioned here:
http://lists.linuxfoundation.org/pipermail/bitcoin-dev/2015-December/012173.html
newbie
Activity: 15
Merit: 0
I was also thinking it may be possible to redesign the idea such that the old chain is not empty.  This could be achieved by introducing a new transaction version number, e.g. version=2, and all version 2 transactions cannot appear in the legacy transformed f(B) blocks.  However, old version=1 transactions can appear subject to the 1MB blocksize limit.  However, once a coin has been used in a version=2 transaction, it and all child transactions can never again appear in the legacy block.

So:
Code:
    NewBlock := BlockHeader ++ NumTx ++ Ver1Txs ++ Ver2Txs
    f(NewBlock) = BlockHeader ++ |Ver1Txs| ++ Ver1Txs
And the MerkleRoot in the header corresponds to the transformed block.

This is more like extension/aux blocks, except:

* There is no need to explicitly move coins to the extension.  Instead they are moved "automatically" when an new client issues a version=2 transaction.
* Coins can never be moved back out from the extension.  There is no need to do this anyway, since there is no aim to support old clients indefinitely (remember this is a proposed alternative to a hardfork, which is immediately incompatible with old clients anyway).

This means old clients can still send coins, but may not be able to see received coins unless they upgrade.
staff
Activity: 3374
Merit: 6530
Just writing some code
Who lost money in July 4th and 5th fork? I guess they will hate the BIP66 roll out which caused the fork, similar to they hate Gavin's 2013 fork  Grin

For the 4th July fork the old chain was nothing but empty blocks (a bit like the above proposal).  So they cannot lose money unless they were accepting zero-conf txs.
The miners lost money. The miners who mined on the invalid chain lost money in the form of wasted time and lost block rewards.
newbie
Activity: 15
Merit: 0
Who lost money in July 4th and 5th fork? I guess they will hate the BIP66 roll out which caused the fork, similar to they hate Gavin's 2013 fork  Grin

For the 4th July fork the old chain was nothing but empty blocks (a bit like the above proposal).  So they cannot lose money unless they were accepting zero-conf txs.
legendary
Activity: 1988
Merit: 1012
Beyond Imagination
Who lost money in July 4th and 5th fork? I guess they will hate the BIP66 roll out which caused the fork, similar to they hate Gavin's 2013 fork  Grin
newbie
Activity: 15
Merit: 0
ZoomT, I would assert that your definition of a generalized softfork is incomplete.

I think your proposal sounds similar to "aux" blocks from above.

There is nothing wrong with these kinds of proposals except that they are arguably more complex for users.

My proposal is more like a simple blocksize hardfork, except can be deployed like a softfork.

Quote
In fact all softforks are basically 51% attacks on non-upgraded miners

Quoted.
staff
Activity: 3374
Merit: 6530
Just writing some code
This is why I called it a "generalized" softfork, since it has properties of softforks but has the power of a hardfork (in this case).  It is sort of an "in-between" kind of fork.
How does this have properties of a soft fork? It is missing the key point of a soft fork, old clients are still able to use Bitcoin after the fork. This is a hard fork since I cannot run current software after this fork and still be able to send and receive transactions and use it as I do now.

Since this is a (generalized) softfork, there is a very strong incentive for miners to upgrade to the new rules (orphaned blocks).  So this should not happen provided the majority hash power are on board when the fork occurs.

However, if it *did* happen, then this is a disaster no matter how the fork is designed.  Either the old (longer) chain is rejected as invalid, or there is a very large reorg undoing many multi-confirmation transactions.
There is already a strong incentive to upgrade with a normal soft fork. Miner's blocks will be orphaned if they don't upgrade.

And such forks have happened before, see the July 4th forking incident: https://bitcoin.org/en/alert/2015-07-04-spv-mining

A softfork is the same as a 51% attack against the old rules.  The generalized softfork is no different.  I think DannyHamilton understands this.
I think this is different. What you propose is simultaneously mine on two different blockchains, the old and new one. This is a 51% attack on the old chain as it just produces a bunch of empty blocks thus preventing confirmations. In a normal soft fork, this doesn't happen and other miners can extend that old chain, they just don't have any incentive to do so. Again, see the July 4th forking incident for an example of miners extending the old chain. Your proposal wouldn't allow that to happen, but old clients would only be able to use the old chain, so it is a hard fork.

If Danny understood it, then I invite him to explain it to me since he is much better at explaining than you are.
newbie
Activity: 15
Merit: 0
No it does not. A soft fork simply lets the old chain die out if people are still mining there. They aren't actively attacking the old chain as your proposal suggests. A normal soft fork would still allow miners to mine on and extend the old chain. This causes problems, see the July 4th forking incident for an example of this.

A softfork is the same as a 51% attack against the old rules.  The generalized softfork is no different.  I think DannyHamilton understands this.
newbie
Activity: 15
Merit: 0
Which is why this is a hard fork.  Old clients will outright reject the new chain with the larger blocks.

This is why I called it a "generalized" softfork, since it has properties of softforks but has the power of a hardfork (in this case).  It is sort of an "in-between" kind of fork.

Quote
If a "significant portion of the hashpower refuses to upgrade" to your proposal, then all they have to do is had code in a rejection of one of your blocks and "Bitcoin will split into two completing cryptocurrenies that can co-exist forever".

I do not disagree but the same it true for all softforks (e.g. OP_CLOCKTIMEVERIFY).

Quote
I'm curious, how does your intended solution expect to deal with the situation where the old format has a longer chain?  This would mean that the old network would reject the transformed chain, but how would your system be aware that the transformed chain was rejected and what would it do with all those transactions that had been confirmed in it's big block chain?

Since this is a (generalized) softfork, there is a very strong incentive for miners to upgrade to the new rules (orphaned blocks).  So this should not happen provided the majority hash power are on board when the fork occurs.

However, if it *did* happen, then this is a disaster no matter how the fork is designed.  Either the old (longer) chain is rejected as invalid, or there is a very large reorg undoing many multi-confirmation transactions.
staff
Activity: 3374
Merit: 6530
Just writing some code
Technically this can be done via a standard softfork.
No it cannot. Clients running the old rules are not able to use Bitcoin as they have normally. They are unable to use Bitcoin at all because they cannot see the transaction data in the blockchain and thus won't know about confirmations. This proposal is not backwards compatible, and backwards compatibility is the key point of a soft fork.

The same is true for any softfork.  For example, if some portion of the hashpower were passionately against the OP_CLOCKTIMEVERIFY fork, they could create a competing softfork that makes any block including a OP_CLOCKTIMEVERIFY transaction invalid.  If this occurred, then Bitcoin will split into two competing cryptocurrencies (both softforks of the original chain).
They could, but that is also why we wait for a supermajority of miners say that they are willing to enforce the new rules before actually enforcing.

Yes, in the same way a standard softfork uses the majority hash power to attack any chain under the old rules.
No it does not. A soft fork simply lets the old chain die out if people are still mining there. They aren't actively attacking the old chain as your proposal suggests. A normal soft fork would still allow miners to mine on and extend the old chain. This causes problems, see the July 4th forking incident for an example of this.
Pages:
Jump to: