As I understand things, the security and integrity of Bitcoin rely on the assumption that its hashing is "hard" in some sense. However, in the past, processing power has increased exponentially. This has made some problems solvable in a reasonable amount of time that were not solvable before. How does Bitcoin account for the possibility that processing power will continue to increase in the future?
4This exact question exists on Stack Overflow: stackoverflow.com/questions/5605571/… although the question there is focused in a slightly different direction. Either way, the answer is the same--the protocol can be upgraded.– eMansipaterAug 30, 2011 at 22:43
@eMansipater Does that mean it should not exist here as well? I'm serious as I don't know SE protocol for this sort of thing.– Michael McGowanAug 30, 2011 at 22:45
Me neither, that's why I mentioned it here and will be asking that on meta.– eMansipaterAug 30, 2011 at 22:48
Meta discussion at meta.bitcoin.stackexchange.com/questions/3/…– eMansipaterAug 30, 2011 at 23:01
@MichaelMcGowan What do you mean by "future"? Do you mean 100 years from now? a thousand? a million?– PacerierJun 15, 2012 at 15:37
BitCoin is futureproof, because in the event that processing power (or more relevantly, mathematical advances) make its algorithms weak or obsolete, the protocol can simply be upgraded.
Copied from Stack Overflow:
Upgrades to the Bitcoin protocol that break compatibility are implementable by social mechanisms but not by any technical process, which is by design. In order to change the hashing or signing algorithms in the event that new techniques weaken them, the following process could be followed:
- As soon as the existing algorithms are discovered to be weakened, have a trusted entity sign a copy of the existing blockchain, marking it as authoritative via a non-weakened algorithm.
- Create a new protocol that 'respects' the existing blockchain (which contains all records of bitcoin ownership), and allows for an upgrade path to exist indefinitely.
- Implement the new protocol dormantly in one or more clients, with a designated block number to switch over, and the trusted version of the blockchain hardcoded in.
- Convince the vast majority of Bitcoin users that your trusted entity is trustworthy, and to switch to the new client(s) before the designated block is mined. There really is no equilibrium allowing both versions to coexist, since people who own bitcoins will be able to spend them in both communities. Unless the modified client achieves near-universal adoption before the designated block is mined, users will switch back before the change goes live.
The bitcoin network constantly adjusts itself to account for increasing amounts of computational power applied to securing the network. Thus, faster computers will not adversely affect the integrity of bitcoin. However, there could be problems should the integrity of the underlying cryptographic algorithms be compromised. It is possible to move bitcoin to newer cryptographic algorithms, but it would require a high degree of planning and coordination. The good news is that there would be a strong economic incentive for everyone that uses bitcoin to make that transition happen as quickly and smoothly as possible.
While security is certainly an arms race, the trick that makes bitcoin future-proof is that it's an open source project and we can all actively participate in that arms race. If SHA-256, RIPEMD-160 or ECDSA (the hashing and encryption algorithms behind bitcoin) are ever broken or crippled, we can simply change the client to use whatever "new hotness" replaces them. Since protocols are seldom completely crippled in one fell swoop and there are three protocols that would have to be broken to trivialize bitcoin theft it's quite likely that we'll be able to swap out "crippled" protocols quickly without sacrificing much security.
Bitcoin accounts for the exponential growth in processing power (Moore's law) making hashing easier by re-adjusting the "difficulty" every 2016 blocks. The difficulty essentially determines how low the target for the hash of the block header is, the lower the target the harder it is to find.
Each block should on average take 10 minutes to find, so 2016 blocks should take 2 weeks. After each 2016 blocks the difficulty is readjusted by a ratio of (expected time for 2016 blocks)/(actual time for 2016 blocks). So for example if it takes 10 days to find the 2016 blocks between difficulty adjustments the difficulty will increase by a factor of 1.4 (14 days/10 days) for the next 2016 blocks. Conversely if it takes longer than 14 days to solve the 2016 blocks then the difficult will decrease by the ratio of (expected/actual) time to solve the 2016 blocks.
The difficulty change per readjustment cannot be more than 4x or less than 1/4x.
Bitcoin makes mining coins progressively harder, and has a max cap on the total number of coins that will eventually be available. This makes the mining mechanism future proof.
In terms of producing fake transactions and thus double spending or stealing money, you are competing against the network of users, and thus must have more computing power than the rest of the network. If all users increase in computing power at about the same rate, then cheating is prevented.