What happens when network is split for prolonged time and reconnected?

em3rgentOrdr August 1, 2010 11:07 UTC Source ·

Suppose that BitCoins are being widely used all across the globe. Suppose that all internet connections between two countries are blocked (eg China and US go to war) and people still engage in transactions inside each network. Now all transactions within each network are broadcasted to all nodes inside its network, but not to the other network. Within each network, the longest chain in each would be considered valid, and the BitCoin economy would continue to exist inside each network.

Now after several years existing independently, what happens when the two networks are reconnected?

BeeCee1 August 3, 2010 13:07 UTC Source ·

If enough people are using the network, and the split were not due to open hostilities, it is possible that there would be intermittent connectivity between the two networks. This would serve to re-sync the block chains but could hurt the reliability of the system with transactions disappearing at random.

Imagine a cable cut, or series of cable cuts that isolated a block of countries.

  • Someone with bitcoin might initiate an oversees dialup connection
  • someone might have a satellite connection

These would probably be intermittent since they may spend most of their time on their ‘normal’ internet since most of what they want is there. Everytime they connected the blocks would start flowing from their computer to the rest of the world, then when they re-connected to their normal service they would flow to the rest of their country.

Someone with bitcoin might fly to one of those countries to visit, when they connected to a local service, the blocks on their computer would flow to the disconnected countries, the longest block chain wins. When they come back, again, the blocks from the disconnected countries would flow to the rest of the world.

throughput August 3, 2010 13:33 UTC Source ·
Quote from: BeeCee1 on August 03, 2010, 4:07:23 AM UTC

If enough people are using the network, and the split were not due to open hostilities, it is possible that there would be intermittent connectivity between the two networks. This would serve to re-sync the block chains but could hurt the reliability of the system with transactions disappearing at random.

Imagine a cable cut, or series of cable cuts that isolated a block of countries.

  • Someone with bitcoin might initiate an oversees dialup connection
  • someone might have a satellite connection

These would probably be intermittent since they may spend most of their time on their ‘normal’ internet since most of what they want is there. Everytime they connected the blocks would start flowing from their computer to the rest of the world, then when they re-connected to their normal service they would flow to the rest of their country.

Someone with bitcoin might fly to one of those countries to visit, when they connected to a local service, the blocks on their computer would flow to the disconnected countries, the longest block chain wins. When they come back, again, the blocks from the disconnected countries would flow to the rest of the world.

Yes… But what you describe is only possible after someone have noticed and prooved the network split is happening. Do you propose any method to detect the beginning of the network split?

BeeCee1 August 3, 2010 15:12 UTC Source ·
Quote from: throughput on August 03, 2010, 4:33:08 AM UTC
Quote from: BeeCee1 on August 03, 2010, 4:07:23 AM UTC

If enough people are using the network, and the split were not due to open hostilities, it is possible that there would be intermittent connectivity between the two networks. This would serve to re-sync the block chains but could hurt the reliability of the system with transactions disappearing at random.

Imagine a cable cut, or series of cable cuts that isolated a block of countries.

  • Someone with bitcoin might initiate an oversees dialup connection
  • someone might have a satellite connection

These would probably be intermittent since they may spend most of their time on their ‘normal’ internet since most of what they want is there. Everytime they connected the blocks would start flowing from their computer to the rest of the world, then when they re-connected to their normal service they would flow to the rest of their country.

Someone with bitcoin might fly to one of those countries to visit, when they connected to a local service, the blocks on their computer would flow to the disconnected countries, the longest block chain wins. When they come back, again, the blocks from the disconnected countries would flow to the rest of the world.

Yes… But what you describe is only possible after someone have noticed and prooved the network split is happening. Do you propose any method to detect the beginning of the network split?

No, I am saying that given enough bitcoin users this is likely to happen, there is no need for them to notice that the bitcoin network split, either they notice that they can’t check email/access websites outside of their local area and initiate a temporary alternate connection to the “rest of the world” or they just happen to take a laptop with bitcoin on an airplane.

I am also not saying it is a good thing. having a single split for a fairly long period of time lets people come up with a solution, having many splits that each last for a few hours means that transactions randomly disappear and that hurts confidence in the system.

Gavin Andresen August 3, 2010 18:38 UTC Source ·
Quote from: BeeCee1 on August 03, 2010, 6:12:42 AM UTC

I am also not saying it is a good thing. having a single split for a fairly long period of time lets people come up with a solution, having many splits that each last for a few hours means that transactions randomly disappear and that hurts confidence in the system.

Transactions won’t disappear if they’re valid. They’ll just move to the longer block chain.

Invalid transactions would be somebody trying to double-spend across the split chains (which would be tricky— you’d have to run a modified client, or copy your wallet to a machine working on the other block chain).

Or if the split lasted long enough (more than 100 blocks), transactions that involve generated coins on the shorter chain would be invalid at the merge.

For shorter splits, immature generated coins on the shorter chain will disappear when the chains merge, but that would be about the worst consequences for honest users (unless you were unlucky enough to get an invalid coin from somebody trying to cheat).

knightmb August 3, 2010 19:02 UTC Source ·
Quote from: gavinandresen on August 03, 2010, 9:38:44 AM UTC

Transactions won’t disappear if they’re valid. They’ll just move to the longer block chain.

Invalid transactions would be somebody trying to double-spend across the split chains (which would be tricky— you’d have to run a modified client, or copy your wallet to a machine working on the other block chain).

Or if the split lasted long enough (more than 100 blocks), transactions that involve generated coins on the shorter chain would be invalid at the merge.

For shorter splits, immature generated coins on the shorter chain will disappear when the chains merge, but that would be about the worst consequences for honest users (unless you were unlucky enough to get an invalid coin from somebody trying to cheat).

Interesting info, so other than some double-spending issues, as long as the block chain isn’t separated for more than 100 or so blocks (or 16+ hours), it should be able to merge back to together without too many issues. So coin generation would probably be the only victim (if no double-spending cheats took place), or more technically, coin generation would be assigned to someone else that was generating at the same time as those that split off.

If there a hard coded limit on split delay? Meaning if I had a small network split from the public network, spent some coin around, came back a few days later and got them sync up to the public network (other than coin generation if it happened) transactions should be fine?

MoonShadow August 3, 2010 20:01 UTC Source ·
Quote from: throughput on August 03, 2010, 4:33:08 AM UTC

Yes… But what you describe is only possible after someone have noticed and prooved the network split is happening. Do you propose any method to detect the beginning of the network split?

I started another thread along this line elsewhere, but for an individual vendor, a simple watchdog daemon that tracks the average time between blocks since the last official change in difficulty and alerts the vendor if a single block takes more than twice as long as the average, perhaps suspending the acceptance of new coins until the vendor checks to see what is happening. Each block in a row that takes longer than the average increases confidence against a false positive. So if one block takes twice as long as average, followed by a series of blocks that take 75% longer than average, then you can be fairly certain that you are no longer on the majority network.

FreeMoney August 3, 2010 22:28 UTC Source ·
Quote from: creighto on August 03, 2010, 11:01:22 AM UTC
Quote from: throughput on August 03, 2010, 4:33:08 AM UTC

Yes… But what you describe is only possible after someone have noticed and prooved the network split is happening. Do you propose any method to detect the beginning of the network split?

I started another thread along this line elsewhere, but for an individual vendor, a simple watchdog daemon that tracks the average time between blocks since the last official change in difficulty and alerts the vendor if a single block takes more than twice as long as the average, perhaps suspending the acceptance of new coins until the vendor checks to see what is happening. Each block in a row that takes longer than the average increases confidence against a false positive. So if one block takes twice as long as average, followed by a series of blocks that take 75% longer than average, then you can be fairly certain that you are no longer on the majority network.

Really? It seems to me more likely that a bunch of people left/crashed than a whole new network half the size of the legit one has gotten to you.

I’m probably misunderstanding.

Satoshi Nakamoto August 3, 2010 22:45 UTC Source ·

creighto: I agree with that idea.  After a few hours, it should be possible for the client to notice if the flow of blocks has dropped off by more than would be likely just by chance.  It could tell if it’s not hearing the hum of the world anymore.

Quote from: knightmb on August 03, 2010, 10:02:13 AM UTC
Quote from: gavinandresen on August 03, 2010, 9:38:44 AM UTC

Or if the split lasted long enough (more than 100 blocks), transactions that involve generated coins on the shorter chain would be invalid at the merge.

Interesting info, so other than some double-spending issues, as long as the block chain isn’t separated for more than 100 or so blocks (or 16+ hours),

In practice, splits are likely to be very asymmetrical.  It would be hard to split the world down the middle.  More likely it would be a single country vs the rest of the world, lets say a 1:10 split.  In that case, it would take the minority fork 10 times as long to generate 100 blocks, so about 7 days.  Also it would be super easy for the client to realize it’s hearing way too few blocks and something must be wrong.

Quote from: knightmb on August 03, 2010, 10:02:13 AM UTC

If there a hard coded limit on split delay? Meaning if I had a small network split from the public network, spent some coin around, came back a few days later and got them sync up to the public network (other than coin generation if it happened) transactions should be fine?

There’s no time limit.  Assuming you weren’t spending coins generated in the minority fork, or spending someone’s double-spends you received, your transactions can get into the other chain at any time later.

MoonShadow August 4, 2010 00:19 UTC Source ·
Quote from: FreeMoney on August 03, 2010, 10:28:27 PM UTC
Quote from: creighto on August 03, 2010, 8:01:22 PM UTC

So if one block takes twice as long as average, followed by a series of blocks that take 75% longer than average, then you can be fairly certain that you are no longer on the majority network.

Really? It seems to me more likely that a bunch of people left/crashed than a whole new network half the size of the legit one has gotten to you.

I’m probably misunderstanding.

Either you are misunderstanding or I am, both are possible.

From the perspective of the vendor’s client, it doesn’t matter why the average block time has doubled, only that it has. The watchdog daemon simply notifiys the vendor that a problem could exist. It’s an alarm, but the vendor still would have to determine if it’s a problem for him or not. I think that he could still make valid transactions, if he was willing to risk the possibility that he could be left with invalid coins when the grid come back up. The real cash economy has similar risks, as no one can really know with any degree of certainty that the 20’s in his cash drawer are not counterfit. I’m pretty sure that only the coins created since the break are at risk, since coins owned by people on the other side of the split are still theirs, and cannot be (honestly) traded on both sides, but honest trades on either side should still be reflected in the block chain once the grid comes back up. At least that is the way I inderstand the functions of the system. I could still be wrong.

MoonShadow August 4, 2010 00:40 UTC Source ·

Also, there is a case of diminishing risks as the number of blocks grows and the number of nodes continues to grow. Relative to the existing coins, new coins represent a smaller percentage of the monetary base with passing time. Even though the risks of catching a bad coin created since a split increases with time as well, they are relatively remote, and tend towards zero over the next 120 years. But the risks also tend toward zero at a log, not in a linear progression.

What I’m saying here is, by the time that bitcoins catch on, the risks of trading with bad coins during a network outage drop as the popularity of the bitcoin increases and also decrease simply as the blockchain grows over time.

throughput August 4, 2010 14:28 UTC Source ·

Thanks, that is a particularly useful result!