1

I've read the following:

Both forks create a split, but a hard fork creates two blockchains and a soft fork is meant to result in one.

Let's consider 2 situations:

  1. block size max limit is 1mb and bitcoin introduced a new version which increased block size limit by 1, so it's 2mb now. Now, this is called hard fork, since new versions wouldn't be compatible with the old ones, because when new versions solve a block (let's say 1.5mb), old ones wouldn't accept it. (NOTE: if old ones send blocks to new ones (since old ones would only solve blocks with less than 1, new ones would always accept it)); So new ones can't communicate with old ones, but old ones can with new ones.

  2. block size was 1mb and now, we decreased it by 0.5, so it's 0.5mb now. Now, new versions are compatible with the old ones, because, new versions would always solve blocks with 0.5mb or lower and when they send it to old ones, they would accept it. (NOTE: when old ones send blocks to new ones (since old ones might solve block with 0.8mb, new ones wouldn't accept it)); So, new ones can communicate with old ones, but old ones can't with the new ones.

Do you agree with the above? If so, why in my first sentence, does it say: that a soft work is meant to result in one ? It won't result in one, since when old ones solve blocks bigger than 0.5mb, new ones wouldn't accept it, so we still would have a different version of blockchains. Any idea?

UPDATE: @Murch, you say in the second one that since the small blocks(from new nodes) are acceptable to the old nodes, big block nodes will reorganize to the small block chain.

If 5% minority(which work on old big block chain) solves a block, only those 5% nodes will add it to their chains. 95% wont, since they have smaller limit on block size. Now, 5% minority nodes have the last block different from the last block of 95% majority.(length of both chains are the same - that could have been since after splitting the chains, 5% solved it in the same seed as 95% on their respective chain). if 95% majority now produces a new block, and share it to 5%, they still won't add it because this newly shared block's prev hash won't match their last block's hash. So in this case, 95% majority will produce a newer block faster(at least now, the lengths are not the same), so now, majority will share 2-3 blocks to minority since they have the longest chain and that's why minority will adapt to majority's chain in the end. Is my explanation and understanding correct ?

3

Your observation is correct, except that a fork is expected to be activated by a supermajority of nodes and miners in the network. The most recent soft fork had an activation threshold of 950 blocks in specific segments of 1,000 blocks signaling readiness (95% hashrate) for the new rules.

So, assuming that only 5% of the mining power don't follow the new rules:

  1. Increasing block size: 95% of the mining power allows bigger blocks now, 5% continue to enforce the smaller limit. As soon as a block with the new rules is found, the old nodes that do not allow bigger blocks reject the main chain and start their own chain-tip. The minority chain moves much slower, and thus the majority of the miners and nodes ignores it. Assuming the split's proportions remain stable, the two chains remain irreconcilable. To mend the network split, one side would have to concede and adopt the other sides rules.

  2. Decreasing block size: About 1 in 20 blocks will exceed the limit enforced by the majority. Only nodes still using the old rules will accept the bigger block, all other nodes ignore it. The majority of the hashrate will quickly outpace the big block minority. Since the small blocks are acceptable to the old nodes, big block nodes will reorganize to the small block chain as soon as that chaintip has more total proof of work. Since the difficulty between chaintips can only differ across difficulty readjustments, this generally happens whenever the small block chain pulls ahead by one block in height. As the big block now becomes part of a stale chaintip, the miner that authored the big block loses their block reward. In result, whenever a short chainfork with big blocks occurs, the network converges back on the smaller chain eventually. The big block miners are losing money unless they adopt the rules of the majority, or force the split to become permanent (essentially hardforking from the softforked majority).

| improve this answer | |
  • Thanks Murch for the nice explanation. I've just added an update on my question. Would appreciate it if you could let me know if that explanation looks correct to you. – Nika Kurashvili Sep 26 at 23:26
  • 1
    @NikaKurashvili: I've amended my answer to clarify that point. – Murch Sep 26 at 23:33
2

Soft fork and hard fork here, if you want to accurate, are statements about the conditions under which all nodes are guaranteed to eventually agree on the same chain. So it is about avoiding permanent forks, and the conditions to avoid them. Temporary splits are always possible, even when there is no consensus change at all.

A consensus rule change is called a soft forking change if it is guaranteed that no permanent split occurs when a majority of the hashrate adopts the new change. Mechanisms are in place to let miners signal their readiness, and activation typically only happens when a large majority of the hashrate signals. This is the case when new blocks are acceptable by both old and new nodes, because even if old nodes continue mining, they'll never manage to build the longer chain - instead the new nodes will outmine them, and the old ones will switch to building on top of the new nodes' majority chain after every block.

A hard forking change is one where the majority of the hashrate adopting it is not sufficient. These usually require effectively a 100% hashrate adoption (or, more commonly, a 100% node software adoption).

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.