How are code changes (e.g. new features) to applications such as Bitcoin deployed and how is compatibility mainted?

1

How does Bitcoin deploy new features and manage different versions compatibility?

For example if a new feature is added to Bitcoin, how is that then deployed and managed? That is, how is everyone on the network not forced to upgrade when a new version is available?

If an upgrade/update is not forced, how does Bitcoin manage different versions of Bitcoin on the network? Is there a minimum required version somehow distributed amongst the network?

Greg

Posted 2017-06-09T11:30:39.110

Reputation: 137

Answers

2

Usually the code is written, tested, and merged into the release, and then deployed switched off. Depending on the change, it can then be activated on a particular date, block, when the network has a consensus (certain %age of people agree to implement it), or when x number of blocks mined support the new change.

Code can be hard, or soft forked, and the developers attempt to make changes backwards compatible as much as possible to avoid client issues.

Occasionally incompatible clients can generate odd blocks (like for example a recent 1.01MB block) that get orphaned, or discarded by the rest of the network. Or even a chain of several blocks that get orphaned, this is one of the reasons you should wait for more than one successful confirmation after transferring money.

Daniel Morritt

Posted 2017-06-09T11:30:39.110

Reputation: 340

2

Almost all changes made to the Bitcoin protocol so far where backwards compatible in that they only restricted the ruleset of acceptable behavior on the network. Therefore, if the new rules where enforced by a majority of the current hashrate, any older software would follow along on the same blockchain as the rules they expected to be followed allowed a superset of the currently enforced behavior.

So, the main idea is that there is only one version of the protocol enforced at the same time.

Murch

Posted 2017-06-09T11:30:39.110

Reputation: 41 609