4 ms·
Your understanding of soft forks is incorrect. Changes to the consensus rules implemented by soft forks are in no way optional, nor are they backwards-compatibl
by pash 11y ago
Your understanding of soft forks is incorrect. Changes to the consensus rules implemented by soft forks are in no way optional, nor are they backwards-compatible [0].
Nor are soft-forking changes meaningfully more limited in scope than hard-forking changes. Soft forks, by introducing new rules referring to data unreferenced by the old rules, can be used to make almost arbitrary changes to the protocol. Bitcoin Core's planned implementation of segregated witness uses this technique, which is how it is able effectively to loosen the constraint on block sizes. The technique can be extended to implement an arbitrary increase in the blocksize as a soft fork [1], or even to change the rule that limits the final supply of bitcoin to 21 million units [2]. Name a change you want to make to the consensus rules: chances are that with enough cleverness (and a willingness to make a big enough mess) you can find a way to implement it as a soft fork.
The most salient consequences of changing consensus rules by soft fork versus by hard fork, to my mind, are that (a) soft-forking changes ordinarily introduce substantial additional complexity compared to effecting the same change with a hard fork, and (b) developers can introduce changes via soft forks without having to secure the same degree of explicit consent from miners and users that hard forks require.
Phenomenon (a) occurs because soft-forking changes must be implemented by roundabout mechanisms that preserve formal (but not semantic) compatibility with the old rules, whereas hard forks provide the freedom to make changes in the simplest or most technically appropriate way. Point (b) perhaps helps to explain the preference of Bitcoin Core's team for soft-forking changes: they are less constrained by the desires of users and miners under a policy of implementing changes to the consensus rules by soft fork than they would be if they were to attempt the same changes with hard forks.
0. https://medium.com/@octskyward/on-consensus-and-forks-c6a050c792e7#.kxsty3rw9 https://medium.com/@octskyward/on-consensus-and-forks-c6a050...
1. https://bitcointalk.org/index.php?topic=1296628.0 https://bitcointalk.org/index.php?topic=1296628.0
2. https://np.reddit.com/r/bitcoin_uncensored/comments/43w24e/raising_the_21_million_btc_limit_with_a_soft_fork https://np.reddit.com/r/bitcoin_uncensored/comments/43w24e/r...
Edit: I encourage interested readers to verify what I have written by referring to the sources I cited or by doing their own research. Downvotes in discussions of Bitcoin here unfortunately tend to reflect the voters' loyalties in the blocksize brouhaha more than their honest assessment of whether a comment is informative and correct.
- ikeboy 11y agoOptional and backward compatible in the sense that old nodes continue to work and recognize the new block chain as valid. Core prefers soft forks because they're less risky, and don't require all users to upgrade, only minors.
- pash 11y agoOld nodes continue to work only in a trivial sense: after a soft-fork, they can no longer properly interpret the meaning of data in the blockchain, so their ability to validate new transactions has been destroyed. If Bitcoin Core's soft fork to introduce segregated witness proceeds, for example, nodes that are not upgraded (and so have no understanding of the witness data) will happily interpret all seg-wit transactions as valid, whether they really are or not. For this reason, some people view soft forks as insidious in a way that hard forks are not: the sole purpose of a Bitcoin node is to interpret data contained in the blockchain and in newly broadcast transactions to determine the validity of those transactions under a particular ruleset, and a soft-fork is a subterfuge specifically designed to make some of those nodes unaware that their ability to perform that function has been destroyed. If soft forks are "less risky", it is precisely for that reason: soft forks ensure that the nodes of miners and users who do not explicitly consent to a rule change fail even to notice that the rules have changed!
- ikeboy 11y agoFirstly, not all soft forks introduce extra data. Some are simply about minor policy. Second, soft forks have been the standard since the beginning, and everyone understands that minors can set their own rules. Third, non upgraded nodes, if they follow the longest chain, do not break. If they mine themselves they'll get orphaned, but that doesn't break them as long as they wait for a couple of blocks before accepting transactions as valid. Fourth, soft forks have traditionally repurposed non standard transactions, which shouldn't be issued by anyone expecting consistent behavior. Segwit uses anyone-can-spend which are non standard, and as the bip says "Wallets should always be wary of anyone-can-spend scripts and treat them with suspicion." Fifth, anyone can "notice" by virtue of the block header changing. A majority of minors can reject transactions, that's not deceitful in any way.