Bitcoin Forum

Bitcoin => Bitcoin Discussion => Topic started by: epaulson on August 10, 2010, 08:10:30 PM



Title: How do we prevent Bitcoin forks (or should we)?
Post by: epaulson on August 10, 2010, 08:10:30 PM
The "cryptographic race" for the longest chain to prevent double spending seems, as well as I can understand it, to be a pretty robust system against cheating and other similar maliciousness.

However, I am curious about how much of the rest of the system security relies on everyone "playing by the rules" and using the standard (or a minor variant thereof) bitcoin program. It seems to me that if someone convinced enough people to use an alternative bitcoin program that generated more or less valid blocks but potentially differed in some other way (perhaps a Trojan), he or she could break or undermine the whole system.

Here is one scenario to illustrate what I am thinking about:
Let's say that when the time comes for the value of generating a block to drop from 50 coins down to 25 coins, a big group of bitcoin users whine and decide that they don't want to generate fewer coins per block. So, they write a patch for the bitcoin program and make their own clients keep generating 50 coins per block. Now, the standard client will reject these 50 coin blocks as invalid, but if the "50 coiners" have a large enough group and accept both the 50 coin blocks and the 25 coin blocks, they could impose their will on the whole system. It seems to me the "25 coiners" would grind to a halt, rejecting block after block, and the "50 coiners" would happily build away a long chain of 50 and/or 25 coin blocks. I don't think the "50 coiners" would even need a majority of users to impose their will in this way. I suppose the "25 coiners" could stubbornly continue, and the project would fork into two different bitcoin systems, but this would be a major destabilization to the value of the bitcoins.

So, how do we prevent bitcoin from forking, down the road? At some point there is bound to be a large group of users unhappy with the status quo and an effort will be made to split the project, to the detriment of everyone. Can we build in a consensus about the valid identities of the client programs in the same way that we do for the transaction log (or is that already being done)? Or do people have the right to make a fork, despite the negative consequences?


Title: Re: How do we prevent Bitcoin forks (or should we)?
Post by: FreeMoney on August 10, 2010, 08:19:01 PM
Hopefully a good number of users will understand that using a "non-compatible with the current majority rules client" is going to result in a huge number of people making transactions that get delayed and generated coins disappearing which will damage the system's usefulness and the confidence of people in the system.

The particular scenario you mention is unlikely I think. In 3 years individuals who don't understand won't be minting hardly anything.


Title: Re: How do we prevent Bitcoin forks (or should we)?
Post by: jgarzik on August 10, 2010, 08:21:09 PM
However, I am curious about how much of the rest of the system security relies on everyone "playing by the rules" and using the standard (or a minor variant thereof) bitcoin program. It seems to me that if someone convinced enough people to use an alternative bitcoin program that generated more or less valid blocks but potentially differed in some other way (perhaps a Trojan), he or she could break or undermine the whole system.

Yes.  The bitcoin paper describes how the network is compromised if over 50% of the nodes are not "honest."  That's inherent in the entire system.  Thus, incompatible or malicious forks are annoying and degrade the network, but shouldn't fundamentally compromise it until that 50% point is reached.  At which point, you have bigger problems.

The forks that are of more immediate concern are ones that destabilize or attempt to corrupt the network somehow, IMO.


Title: Re: How do we prevent Bitcoin forks (or should we)?
Post by: epaulson on August 10, 2010, 08:46:15 PM
One thing I've seen over and over with open source projects is their tendency to fork, often to the detriment of everyone involved. Saying that there will never be a major disagreement over the system seems naive.

I guess my real question is, how do we all decide what is the correct bitcoin program? Is it and will it always be whatever Satoshi posts on bitcoin.org? How is that different than just trusting the Federal Reserve? (In Satoshi We Trust)


Title: Re: How do we prevent Bitcoin forks (or should we)?
Post by: gridecon on August 10, 2010, 08:59:49 PM
This is a complicated topic, but I think the key points are pretty clear and factual.

1. It is impossible to prevent forks - the Bitcoin source is under a very permissive license.
2. There is strong incentive to fork - Bitcoin's growing success and current market value demonstrates the system works. The idea that you can make a lot of easy money by being one of the early adopters of a digital currency and take advantage of the early period of "cheap coin generation" before it becomes widely adopted and difficulty increases makes the idea of starting a "Datadollars" currency community based on the Bitcoin source very appealing.
3. There are already MANY competing digital currencies, to say nothing of existing paper currencies!
4. Bitcoin users generally value "freedom", as defined in various ways, and the freedom to use different currencies is an important economic freedom.

I don't think the appearance of alternative currencies based on the bitcoin model and source code is a bad thing. Bitcoin already has a lot of computational power invested in its proof of work, and that is part of what gives it value, as well as a healthy user community. The importance of that existing investment of resources is significant. I think "forks" will certainly be done for specific purposes, like creating an in-game MMORPG economy that is not intended to be transacted outside of the game or exchanged for "real" bitcoins or other currencies.

I think the real risk to be avoided is fracturing within the official "branded" Bitcoin community. As the utility of bitcoin grows, it is probably necessary to establish transparent decision making processes about things like transaction fees that may need to be changed in the code for future clients.


Title: Re: How do we prevent Bitcoin forks (or should we)?
Post by: theymos on August 10, 2010, 09:18:41 PM
The decision-making process of the future will be dominated by the organizations that provide the backbone of block generation. If they don't like a change in the code, they'll refuse to upgrade but will still keep 50%+ of the CPU power. A major dispute between bitcoin.org and the backbone would lead to a serious fork.


Title: Re: How do we prevent Bitcoin forks (or should we)?
Post by: Insti on August 10, 2010, 09:22:39 PM
The decision-making process of the future will be dominated by the organizations that provide the backbone of block generation. If they don't like a change in the code, they'll refuse to upgrade but will still keep 50%+ of the CPU power. A major dispute between bitcoin.org and the backbone would lead to a serious fork.

Which puts the banks and their massive dedicated server farms back in charge of our money :(


Title: Re: How do we prevent Bitcoin forks (or should we)?
Post by: NewLibertyStandard on August 10, 2010, 09:24:25 PM
The decision-making process of the future will be dominated by the organizations that provide the backbone of block generation. If they don't like a change in the code, they'll refuse to upgrade but will still keep 50%+ of the CPU power. A major dispute between bitcoin.org and the backbone would lead to a serious fork.
I very much doubt that any one entity will ever have 50% of the computational power. The botnet operators will bow to the whims of the community because it's the community that ultimately gives bitcoins value. What good is a giant load of bitcoins if you don't have anyone willing to give you something in exchange for them?


Title: Re: How do we prevent Bitcoin forks (or should we)?
Post by: FreeMoney on August 10, 2010, 09:28:40 PM
The decision-making process of the future will be dominated by the organizations that provide the backbone of block generation. If they don't like a change in the code, they'll refuse to upgrade but will still keep 50%+ of the CPU power. A major dispute between bitcoin.org and the backbone would lead to a serious fork.

Do you think the damage/inconvenience this would cause would make a strong incentive to just start a new chain with the different rules?

I was thinking this is a nice thing about bitcoin. Only a majority is required for an attack, but you need even more than a simple majority for a smooth rule change (only for certain kinds of changes I realize).

Even if you get 60% to say they'd prefer it to change, will they want it enough to work on a network 60% the size? If half of them won't give up that much then you've only got 30%. Not to mention the difficulty of gauging how much support you have before you actually try. "I'll switch and I have 20000khash!" Okay, add up all the claims...


Title: Re: How do we prevent Bitcoin forks (or should we)?
Post by: FreeMoney on August 10, 2010, 09:31:34 PM
The decision-making process of the future will be dominated by the organizations that provide the backbone of block generation. If they don't like a change in the code, they'll refuse to upgrade but will still keep 50%+ of the CPU power. A major dispute between bitcoin.org and the backbone would lead to a serious fork.

Which puts the banks and their massive dedicated server farms back in charge of our money :(

Not really.

A group can only corrupt bitcoin if they are in control of so much that they would never want to. If Bernanke had personal income of half US GDP do you think he'd be willing to debase?


Title: Re: How do we prevent Bitcoin forks (or should we)?
Post by: theymos on August 10, 2010, 09:32:38 PM
I very much doubt that any one entity will ever have 50% of the computational power. The botnet operators will bow to the whims of the community because it's the community that ultimately gives bitcoins value. What good is a giant load of bitcoins if you don't have anyone willing to give you something in exchange for them?

If Satoshi starts enforcing a maximum transaction fee (as he's mentioned (http://bitcointalk.org/index.php?topic=165.msg1595#msg1595)) and the limit is too low, no one who is generating for profit will "upgrade".

Changing any parameters in a way that reduces profit for generators would have the same result, I think.

Quote from: FreeMoney
I was thinking this is a nice thing about bitcoin. Only a majority is required for an attack, but you need even more than a simple majority for a smooth rule change (only for certain kinds of changes I realize).

I agree. The current economics are perfect, and it would be very difficult for anyone (even Satoshi) to make a major change.


Title: Re: How do we prevent Bitcoin forks (or should we)?
Post by: Insti on August 10, 2010, 09:34:38 PM
A group can only corrupt bitcoin if they are in control of so much that they would never want to. If Bernanke had personal income of half US GDP do you think he'd be willing to debase?

I'm not worried about debasing, more about huge transaction fees being inflicted.


Title: Re: How do we prevent Bitcoin forks (or should we)?
Post by: Gavin Andresen on August 10, 2010, 09:49:26 PM
I very much doubt that any one entity will ever have 50% of the computational power. The botnet operators will bow to the whims of the community because it's the community that ultimately gives bitcoins value. What good is a giant load of bitcoins if you don't have anyone willing to give you something in exchange for them?
Eventually the largest merchants and money exchangers will control what is "standard" bitcoin.

Take the "50-coiners" scenario, and imagine that they manage to get 75% of the CPU power on their side.

But imagine that the biggest merchants and money exchangers are more conservative, and are in the 25% minority.  I think they will be-- I don't think they'll be the ones in the business of generating coins (they'll be busy selling products or doing the exchange thing).

What happens?

Well, the block chain splits.  Transactions using coins minted before the split will get added to both block chains, and accepted by everybody.

Transactions involving "50-coins" (generated after the split) will be accepted on the 50-coin chain, rejected on the 25-coin chain.  And vice-versa.

"50-coiners" would quickly find out that they couldn't get rid of their newly minted money because who wants bitcoins that are rejected by the biggest money exchangers or merchants?

If the big merchants and money exchangers disagreed, I bet you'd see Bitcoin clients that ONLY accepted pre-split coins and did no coin generation (since those transactions would be accepted by everybody).  If it was never resolved, I think the number of Bitcoins at the time of the split would become "the number of Bitcoins, period,"  because most people will not want to use money that is accepted some places and not others.


Title: Re: How do we prevent Bitcoin forks (or should we)?
Post by: NewLibertyStandard on August 10, 2010, 10:16:01 PM
Yeah, I agree. I said that the community would decide on the direction of Bitcoin, but what I meant and what you more clearly expressed is that it'll be the bitcoin backers who will decide on the direction of Bitcoin rather than the bitcoin miners. Of course the backers will also have a considerable incentive to keep the network honest, so they'll no doubt dedicate a large amount of CPU cycles to verifying transactions. It's hard to guess whose large amount of CPU cycles will be the largest. Luckily multiple demographics have an interest it, so I hope it will never be taken over. The potential weakness is understandably worrisome the more a person invests in bitcoin, but I think that the longer bitcoin exists without being compromised, the more confidence people will have in it.


Title: Re: How do we prevent Bitcoin forks (or should we)?
Post by: FreeMoney on August 11, 2010, 12:13:07 AM
A group can only corrupt bitcoin if they are in control of so much that they would never want to. If Bernanke had personal income of half US GDP do you think he'd be willing to debase?

I'm not worried about debasing, more about huge transaction fees being inflicted.


Oh, that's no worry, if the transaction fees are huge it will just incentivize medium size players to move in and offer slightly lower rates. Being the biggest 'bank' because people are choosing to pay you for your services is way different than being the biggest bank by forcing everyone else out with laws and weapons.


Title: Re: How do we prevent Bitcoin forks (or should we)?
Post by: Insti on August 11, 2010, 12:21:03 AM
Oh, that's no worry, if the transaction fees are huge it will just incentivize medium size players to move in and offer slightly lower rates. Being the biggest 'bank' because people are choosing to pay you for your services is way different than being the biggest bank by forcing everyone else out with laws and weapons.
It doesn't help if the big banks are generating all the blocks (with high transaction fees) though. There is no economic incentive to mine at a loss just so you can charge lower fees if you are lucky enough to generate the occasional block.


Title: Re: How do we prevent Bitcoin forks (or should we)?
Post by: FreeMoney on August 11, 2010, 01:25:15 AM
Oh, that's no worry, if the transaction fees are huge it will just incentivize medium size players to move in and offer slightly lower rates. Being the biggest 'bank' because people are choosing to pay you for your services is way different than being the biggest bank by forcing everyone else out with laws and weapons.
It doesn't help if the big banks are generating all the blocks (with high transaction fees) though. There is no economic incentive to mine at a loss just so you can charge lower fees if you are lucky enough to generate the occasional block.


They won't be mining at a loss. If the average cost per transaction is .00003BTC and the BIG BIT BANK charges .00007 there is a huge profit opportunity to charge .00006. If it actually costs about .00003 then you can't complain about being charged 'high fees'.


Title: Re: How do we prevent Bitcoin forks (or should we)?
Post by: caveden on August 11, 2010, 08:15:39 AM
Or do people have the right to make a fork, despite the negative consequences?

I think so.
Actually, that's the very idea of a free currency market. If for some reason another system beats bitcoins, well, that's competition! That's not "bad consequences".

The only important thing to mind is avoiding non-bitcoins to be mistaken by "true bitcoins". This is important. And I think this is very well protected by the algorithm itself.


Title: Re: How do we prevent Bitcoin forks (or should we)?
Post by: FreeMoney on August 11, 2010, 08:23:27 AM
Or do people have the right to make a fork, despite the negative consequences?

I think so.
Actually, that's the very idea of a free currency market. If for some reason another system beats bitcoins, well, that's competition! That's not "bad consequences".

The only important thing to mind is avoiding non-bitcoins to be mistaken by "true bitcoins". This is important. And I think this is very well protected by the algorithm itself.

Absolutely agree.

There is a difference between forking bitcoin and starting a new currency. I think both are 'moral' or whatever I just don't think there will be enough CPU power dumb enough to fork bitcoin. There very well could (certainly will?) eventually be a new currency system. Maybe it will be different enough to coexist by satisfying different needs, or maybe bitcoin will get blow away by something just totally better. As always, the first to realize what will work best get rewarded.


Title: Re: How do we prevent Bitcoin forks (or should we)?
Post by: epaulson on August 11, 2010, 03:33:24 PM
Quote
I just don't think there will be enough CPU power dumb enough to fork bitcoin.

A lot of people go into business partnerships (or marriages) assuming there will never be any serious disagreements. I forsee that if bitcoin ever gains enough acceptance to have some significant money involved, there will inevitably be disagreements and even lawsuits about some of the things that are currently established only via consensus. Imagine someone getting a court order mandating everyone must use a particular bitcoin program (or *not* use a particular one) because alternatives cause them "financial harm."

Everyone here (including myself) is more intrigued by the technical aspects of bitcoin, but the social (and perhaps legal) aspects of the system are ultimately going to be more important, unless someone can figure out a way to solve these problems technically. If bitcoin is ever going to succeed beyond a novelty, these issues are going to have to be resolved somehow.

I'm no expert at "social engineering" but I think this needs to be a priority sooner, rather than later, if the project is ever going to succeed significantly. In the absence of some sort of cryptographic method (voting via CPU power?) which I would love to see, I think there needs to be an official, or even legal, framework about how decisions are going to be made when serious disagreements arise.


Title: Re: How do we prevent Bitcoin forks (or should we)?
Post by: kiba on August 11, 2010, 03:37:33 PM

I'm no expert at "social engineering" but I think this needs to be a priority sooner, rather than later, if the project is ever going to succeed significantly. In the absence of some sort of cryptographic method (voting via CPU power?) which I would love to see, I think there needs to be an official, or even legal, framework about how decisions are going to be made when serious disagreements arise.

I prefer not to sue in an inefficient, unfair, and everyone lose except the lawyers court system.


Title: Re: How do we prevent Bitcoin forks (or should we)?
Post by: ribuck on August 11, 2010, 04:01:23 PM
@epaulson: you can take some comfort from the experience of the open source software world.

There have been forks of high profile projects. Lucid Emacs broke away from GNU Emacs, for example. They had good reason to do so, because GNU Emacs had become rather moribund. The fork was perhaps what prodded the GNU Emacs team back into action, and there was a happy ending because the forks later merged. If that fork hadn't happened, GNU Emacs would have been in a weaker position today.

Much the same happened with the GCC compiler. It had become rather moribund, and the EGCS team forked it. (EGCS stood for Extended Gnu Compiler Suite or something like that). The fork prodded the GCC team back into action, and there was a happy ending because the forks later merged. If that fork hadn't happened, GCC would have been in a weaker position today.

Modern projects like Firefox get forked all the time. Some forks are experimental, some are due to a difference in philosophy, some are failed attempts to "get something for nothing". Some of the forks die out, some of them get merged back into the mainstream, and some (like IceWeasel) happily co-exist in a symbiotic relationship. The possibility to fork doesn't hurt Firefox.

So what if someone wants to fork Bitcoin? All that really matters is that those who don't want to fork can continue to use the unforked version.

Of course there will be disagreements in the future, but they're not going to be helped by any kind of legal framework. As kiba says, everyone except the lawyers would lose from that.

I expect that as long as Satoshi is around, the version that he blesses will remain dominant. Human nature is like that.


Title: Re: How do we prevent Bitcoin forks (or should we)?
Post by: kiba on August 11, 2010, 04:45:46 PM

Of course there will be disagreements in the future, but they're not going to be helped by any kind of legal framework. As kiba says, everyone except the lawyers would lose from that.

You mean a statist, inefficent court system with a Byzantine and overly complicated law system.

In any case, the bitcoin society is effectively evolving its own common law system and social convention, many of which are enforced on the software level.