I read an article on cryptocoinsnews about sidechains and they said bitcoin can implement new features but any bugs would be dangerous to the whole bitcoin network. What I don't understand is who would be adding new features? Are there some people that continue to update bitcoin and can add code to the network bitcoin runs on?
1 Answer
To change Bitcoin, you must change the behavior of Bitcoin Core (or some other full Bitcoin client) and then convince people to use your modified version. Different levels of network adoption are required for different types of changes:
If the change only disallows certain transactions or blocks that were previously allowed, then the change can be applied by the majority of mining power. Only miners need to use the updated version of Bitcoin. This is called a soft fork. For example, P2SH was a soft fork change. Miners updated over the course of several months. This went very smoothly and most people didn't even notice it happening.
Adding sidechains would be a soft fork change, as would most other feature enhancements. (It might not be obvious how disallowing certain transactions could be used to add new features, but it's usually possible if you're careful about it.)
If the change allows things that were previously disallowed, then each user individually decides whether to use the change or not. This is called a hard fork. Even if every other Bitcoin user and miner decided to increase the total BTC supply from 21 million to 50 million, you could continue using the old version of Bitcoin and you would be unaffected by this change. However, you would be unable to transact with people who use the modified version. As a result, this sort of change is likely to be widely accepted only if an "economic supermajority" accepts it. This means that the decisions of larger economic actors (exchanges, merchants, etc.) are more important than the decisions of regular Bitcoin users because more people will care about whether or not they can trade with them. In a hardfork, miners are not especially important.
There have been a few hardforks in the past, but most of them were in response to critical bugs that needed to be fixed immediately (such as the BDB lock limit bug). There's never been a hardfork that was controversial.
(Note that if a softfork is enforced by miners but not most users, then undoing it is not a hardfork change.)
Lightweight nodes like MultiBit or Electrum can't enforce the rules of Bitcoin properly, so they're at the mercy of some full nodes elsewhere. Exactly how this works depends on the client. This is why you really should use a full node if you can: it protects you and strengthens the economic power of the good network. Bitcoin Core is by far the most commonly-used full node client, so the Bitcoin Core developers will have a lot of influence over any proposal to do a hard/soft fork change. However, they still can't unilaterally change the network. Their changes need to be accepted by miners and/or users for the network to actually change. The network can also be changed by others if they can get people to use their modified Bitcoin client.
To clarify some common misconceptions:
- Bitcoin is not a democracy of either miners or users. For the most important things, your Bitcoin client does what's right no matter what.
- The Bitcoin Core developers do not have absolute power over Bitcoin.
- The Bitcoin Core developers are separate from the Bitcoin Foundation, and the Bitcoin Foundation does not own bitcoin.org.
-
+1. Could you please provide a link about side chains being a soft fork change? I was under the impression that a hard fork would be necessary. Thanks– DJGJul 13, 2014 at 22:15
-
1@dg123 Adding any number of Script opcodes is a softfork change. You replace one of the OP_NOP opcodes with an opcode that actually does something and then require that scripts using this OP_NOP pass validation using both the old rules (with OP_NOP = "do nothing") and the new rules (with OP_NOP = "do something"). This is only adding new restrictions, so it's a softfork, not a hardfork.– theymosJul 14, 2014 at 1:33
-
1@dg123 So to add two-way pegging (the most difficult part of sidechains) to Bitcoin without a hardfork, you can add a new script op called OP_CHECKSPENT which takes as input proof that the "linked" money was burned on the sidechain. So money sent to a script with OP_CHECKSPENT gets frozen until it is removed from the sidechain it is associated with. Efficiently implementing OP_CHECKSPENT is complicated, but possible.– theymosJul 14, 2014 at 1:36