FreeMoney
Legendary
Offline
Activity: 1246
Merit: 1016
Strength in numbers
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
August 02, 2010, 08:36:27 PM |
|
I think the idea of "super nodes" or hubs will help limit the possibility of a split. The more connected the network is the less the possibility of a split. I know not everyone can run a node that supports 7000+ connections but, if there were some highly connected super nodes running 1000 or so connections and these nodes could be inter-networked with each other this would allow for a stronger connection. Even if a node is at a connection limit and doesn't connect to the super node, it would be probable that one of the other nodes would be connected to a super node. The down side to running a super node is you spend more cpu time and bandwidth making connections and less cpu time generating.
This is interesting to me. What is most robust? 1000 nodes all with 9 connections 1000 nodes with 8 connections and one with 1000 connections 1000 nodes with 8 connections and ten with 100 connections If you only connect with nodes 'near' your node then having only a few seems like a problem. If it's totally distributed then I think having the connections distributed would be better, but I really don't know. Another thing to consider is how huge the profit opportunity will be if the network starts to get fractured. Everyone will want their transactions to get put in the next block for sure before an actual split and the fee will get bid up, this will give nodes incentive to make sure they can stay connected to those at risk and collect their fees. And thereby the network will not get split. I mean if a government ties down traffic they might actually run the nodes themselves for profit or some corrupt official who knows how to get away with it (n/m, no corruption in governments).
|
Play Bitcoin Poker at sealswithclubs.eu. We're active and open to everyone.
|
|
|
knightmb
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
August 02, 2010, 09:01:48 PM |
|
I think the idea of "super nodes" or hubs will help limit the possibility of a split. The more connected the network is the less the possibility of a split. I know not everyone can run a node that supports 7000+ connections but, if there were some highly connected super nodes running 1000 or so connections and these nodes could be inter-networked with each other this would allow for a stronger connection. Even if a node is at a connection limit and doesn't connect to the super node, it would be probable that one of the other nodes would be connected to a super node. The down side to running a super node is you spend more cpu time and bandwidth making connections and less cpu time generating.
This is interesting to me. What is most robust? 1000 nodes all with 9 connections 1000 nodes with 8 connections and one with 1000 connections 1000 nodes with 8 connections and ten with 100 connections If you only connect with nodes 'near' your node then having only a few seems like a problem. If it's totally distributed then I think having the connections distributed would be better, but I really don't know. Another thing to consider is how huge the profit opportunity will be if the network starts to get fractured. Everyone will want their transactions to get put in the next block for sure before an actual split and the fee will get bid up, this will give nodes incentive to make sure they can stay connected to those at risk and collect their fees. And thereby the network will not get split. I mean if a government ties down traffic they might actually run the nodes themselves for profit or some corrupt official who knows how to get away with it (n/m, no corruption in governments). I would say everyone connected to everyone (first option) because the one big node that has 1,000 other clients connected through it is great for redundancy, but also gives a good central point of attack. It's easier to attack a single node than to try and attack them all.
|
Timekoin - The World's Most Energy Efficient Encrypted Digital Currency
|
|
|
Anonymous
Guest
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
August 03, 2010, 01:24:32 AM |
|
Maybe they won't be reconnected. Instead, we will effectively have two currencies. This will lead to the creation of an Eastern-Western bitcoin currency exchange market(s).
For that to happen, someone should a) notice what's happened b) understand what's happened c) make a decision on technically isolating two economies for ever d) force that decision somehow. Question: who can be that entity, whitepaper says there is not any central authority, at all ? kiba what you say, that's impossible or whitepaper lies? Thanks for addressing my concern! I think you are right...I wrongly assumed that people are stupid enough to blindly reconnect the two bitcoin networks (at which point the more powerful network would wipe out all the bitcoins created in the weaker network and transactions performed in the weaker network, if I understand bitcoin correctly). It seems the proper thing that the bitcoin community should do upon such a massive disconnect is to add some sortof marker to every block chain indicating which network it belongs to, so that upon reconnection, the two bitcoin currencies can coexist. I suppose each bitcoin community would properly fork the source code to do something along this line. If the US and China go to war you will have more things to worry about than bitcoins. ![Sad](https://bitcointalk.org/Smileys/default/sad.gif) I don't know...I actually think that BitCoin would become popular as a resistance currency in wartime. The State likes to enact all sorts of totalitarian BS during war, such as massive government spending, massive inflation, collection of all scap or private metal, confiscation of private property. Even FDR in the economic emergency during 1933 outlawed private ownership of gold. But bit coin would be resistant to such measures, as long as the government doesn't shut down the internet, which I doubt they would do since it would seriously cripple the economy and thereby destroy the tax base (although, I forgot how stupid can be sometimes), or somehow outlaw cryptography by regular folk, institute a mega police force that can break into people's houses to inspect their hard drive, demand passwords at gunpoint, steal everyone's computer and network cables, shut down power, etc.. a mega police force that can break into people's houses to inspect their hard drive, demand passwords at gunpoint, steal everyone's computer and network cables, shut down power, etc.. They can do all those things now......the only real thing stopping them is bad pr - hence banning you filming bureaucrats now that so many are being shown for what they are ![Smiley](https://bitcointalk.org/Smileys/default/smiley.gif)
|
|
|
|
knightmb
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
August 03, 2010, 04:56:25 AM |
|
I have a definitive answer for you all.
I built a test network on 5 computers, each running the client stock (fresh install) and had them all network to each other. They generated blocks all day (it's easy when the difficulty is 1.000), and after some transactions between them all (built up to 50 blocks doing this), I then connected them back to the "outside" world and as soon as they got in sync with the network, all the generated coin and transactions were wiped out and replaced by what is current on the network now.
So to answer your question, if the network is split and merges days/weeks/years later, whoever has the longest block chain (most CPU time) will win and the previous block chain will be wiped.
|
Timekoin - The World's Most Energy Efficient Encrypted Digital Currency
|
|
|
Red
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
August 03, 2010, 04:59:32 AM |
|
I have a definitive answer for you all.
Woot! Real facts! Nice! Cool time machine thread too. Nice analysis!
|
|
|
|
FreeMoney
Legendary
Offline
Activity: 1246
Merit: 1016
Strength in numbers
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
August 03, 2010, 07:13:54 AM |
|
I have a definitive answer for you all.
I built a test network on 5 computers, each running the client stock (fresh install) and had them all network to each other. They generated blocks all day (it's easy when the difficulty is 1.000), and after some transactions between them all (built up to 50 blocks doing this), I then connected them back to the "outside" world and as soon as they got in sync with the network, all the generated coin and transactions were wiped out and replaced by what is current on the network now.
So to answer your question, if the network is split and merges days/weeks/years later, whoever has the longest block chain (most CPU time) will win and the previous block chain will be wiped.
Cool. I guess you aren't seeing the transactions being redone because the accounts had no valid coins at all, right?
|
Play Bitcoin Poker at sealswithclubs.eu. We're active and open to everyone.
|
|
|
throughput
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
August 03, 2010, 12:53:09 PM |
|
I have a definitive answer for you all.
I built a test network on 5 computers, each running the client stock (fresh install) and had them all network to each other. They generated blocks all day (it's easy when the difficulty is 1.000), and after some transactions between them all (built up to 50 blocks doing this), I then connected them back to the "outside" world and as soon as they got in sync with the network, all the generated coin and transactions were wiped out and replaced by what is current on the network now.
So to answer your question, if the network is split and merges days/weeks/years later, whoever has the longest block chain (most CPU time) will win and the previous block chain will be wiped.
So, I suggest not to concentrate heavily on preventing the network split, since that is inevitable event in the life of Internet, but to invent some method to monitor connected computing power, to allow those, who bother, to stop processing transactions, until the network's majority reconnects back. Perhaps that would not be a realtime method, but a reasonable and fixed delay will still be accepted. I'm sure, GUI client or daemon should inform you about total computing power, but how can it be computed? Difficulty? It is too slowly updated. What is your variants?
|
|
|
|
BeeCee1
Member
![*](https://bitcointalk.org/Themes/custom1/images/star.gif)
Offline
Activity: 115
Merit: 10
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
August 03, 2010, 01:07:23 PM |
|
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
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
August 03, 2010, 01:33:08 PM |
|
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?
|
|
|
|
theymos
Administrator
Legendary
Offline
Activity: 5306
Merit: 13229
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
August 03, 2010, 02:04:46 PM |
|
Satoshi posted about this concern: http://bitcointalk.org/index.php?topic=241.msg2071#msg2071Yes... 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?
You think people would fail to notice an entire ISP/country/continent falling off the Internet?
|
1NXYoJ5xU91Jp83XfVMHwwTUyZFK64BoAD
|
|
|
throughput
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
August 03, 2010, 02:24:56 PM |
|
Satoshi posted about this concern: http://bitcointalk.org/index.php?topic=241.msg2071#msg2071Yes... 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?
You think people would fail to notice an entire ISP/country/continent falling off the Internet? Why do you think, that what you describe will be the only reason for a Bitcoin network split? And if some people will know that a continent is disconnected, then why all others will be as informed? And even if everyone will know, that some amount of Internet is disconnected from the rest, then how would they decide whether that is a good reason to stop processing (and sending) transactions? ISP disconnectivity is not a rarity today, single misconfiguration may shutdown routing for a whole AS. Will that be enough reason to stop processing transactions or not? The same with a country and continent. The question is not wheter there exists some parts of Internet or Bitcoin network, that will reconnect later. You may always answer YES here, at every moment they exists. My phone loses signal very often, for example. The actual question is Whether I am connected with a network, that will be a majority of nodes on reconnect, or not? It is not possible to give a definitive answer about future, but you may estimate that almost accurately based on the size of the network before the split and the size of the network after the split. If your network is not going to be a majority later, then it is safer to use another payment method, I suppose.
|
|
|
|
em3rgentOrdr (OP)
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
August 03, 2010, 02:35:52 PM |
|
a mega police force that can break into people's houses to inspect their hard drive, demand passwords at gunpoint, steal everyone's computer and network cables, shut down power, etc.. They can do all those things now......the only real thing stopping them is bad pr - hence banning you filming bureaucrats now that so many are being shown for what they are ![Smiley](https://bitcointalk.org/Smileys/default/smiley.gif) ![Sad](https://bitcointalk.org/Smileys/default/sad.gif) I suppose you are right, unfortunately: They can do all those things now...the only real thing stopping them is bad pr. 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.
^^^ good points...I suppose that the demand for connectivity in the smaller network would produce an strong incentive to find some way, no matter how primitive, to connect the two networks. It could even be as primitive as using (physical) snail mail or dialup.
|
"We will not find a solution to political problems in cryptography, but we can win a major battle in the arms race and gain a new territory of freedom for several years.
Governments are good at cutting off the heads of a centrally controlled networks, but pure P2P networks are holding their own."
|
|
|
BeeCee1
Member
![*](https://bitcointalk.org/Themes/custom1/images/star.gif)
Offline
Activity: 115
Merit: 10
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
August 03, 2010, 03:12:42 PM |
|
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
Legendary
Offline
Activity: 1652
Merit: 2300
Chief Scientist
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
August 03, 2010, 06:38:44 PM |
|
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).
|
How often do you get the chance to work on a potentially world-changing project?
|
|
|
jgarzik
Legendary
Offline
Activity: 1596
Merit: 1099
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
August 03, 2010, 07:01:14 PM |
|
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).
It doesn't have to be someone trying to cheat. You can be honest, and yet unlucky and get caught on the other side of a network split. If you generate and spend coins on the unlucky side of the network split, the consequences are the same as for dishonest users.
|
Jeff Garzik, Bloq CEO, former bitcoin core dev team; opinions are my own. Visit bloq.com / metronome.io Donations / tip jar: 1BrufViLKnSWtuWGkryPsKsxonV2NQ7Tcj
|
|
|
knightmb
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
August 03, 2010, 07:02:13 PM |
|
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?
|
Timekoin - The World's Most Energy Efficient Encrypted Digital Currency
|
|
|
MoonShadow
Legendary
Offline
Activity: 1708
Merit: 1010
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
August 03, 2010, 08:01:22 PM |
|
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.
|
"The powers of financial capitalism had another far-reaching aim, nothing less than to create a world system of financial control in private hands able to dominate the political system of each country and the economy of the world as a whole. This system was to be controlled in a feudalist fashion by the central banks of the world acting in concert, by secret agreements arrived at in frequent meetings and conferences. The apex of the systems was to be the Bank for International Settlements in Basel, Switzerland, a private bank owned and controlled by the world's central banks which were themselves private corporations. Each central bank...sought to dominate its government by its ability to control Treasury loans, to manipulate foreign exchanges, to influence the level of economic activity in the country, and to influence cooperative politicians by subsequent economic rewards in the business world."
- Carroll Quigley, CFR member, mentor to Bill Clinton, from 'Tragedy And Hope'
|
|
|
FreeMoney
Legendary
Offline
Activity: 1246
Merit: 1016
Strength in numbers
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
August 03, 2010, 10:28:27 PM |
|
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.
|
Play Bitcoin Poker at sealswithclubs.eu. We're active and open to everyone.
|
|
|
satoshi
Founder
Sr. Member
Offline
Activity: 364
Merit: 7060
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
August 03, 2010, 10:45:07 PM |
|
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. 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. 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
Legendary
Offline
Activity: 1708
Merit: 1010
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
August 04, 2010, 12:19:01 AM |
|
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.
|
"The powers of financial capitalism had another far-reaching aim, nothing less than to create a world system of financial control in private hands able to dominate the political system of each country and the economy of the world as a whole. This system was to be controlled in a feudalist fashion by the central banks of the world acting in concert, by secret agreements arrived at in frequent meetings and conferences. The apex of the systems was to be the Bank for International Settlements in Basel, Switzerland, a private bank owned and controlled by the world's central banks which were themselves private corporations. Each central bank...sought to dominate its government by its ability to control Treasury loans, to manipulate foreign exchanges, to influence the level of economic activity in the country, and to influence cooperative politicians by subsequent economic rewards in the business world."
- Carroll Quigley, CFR member, mentor to Bill Clinton, from 'Tragedy And Hope'
|
|
|
|