Security

Bitcoiner July 7, 2010 14:53 UTC Source ·

Has there been a concerted effort to attack, subvert, or break Bitcoin? One way to test that it is secure from attack would be to actually try to undermine it, by double-spending coins, creating fake coins, posting false transactions, etc… and if flaws are found, better that they are found now than later, when the bitcoin economy is potentially larger and there is more to lose.

Gavin Andresen July 9, 2010 18:11 UTC Source ·

It’s a bad idea to try to break the “in-production” bitcoin network.

If anybody is starting serious work on either extending Bitcoin or developing compatible implementations or trying to break it by creating bad transactions, I think creating a “parallel universe” test network with its own block chain, data directory, etc makes sense.

Satoshi: would you be open to a —testnetwork (or something) flag to bitcoin that swapped to an alternate genesis block, data directory, listen port and IRC channel? Maybe with a really short average block generation time, too (like once per minute instead of once per 10 minutes) so everything happens ten times a fast to make testing quicker.

llama July 9, 2010 20:13 UTC Source ·
Quote from: gavinandresen on July 09, 2010, 9:11:27 AM UTC

Satoshi: would you be open to a —testnetwork (or something) flag to bitcoin that swapped to an alternate genesis block, data directory, listen port and IRC channel? Maybe with a really short average block generation time, too (like once per minute instead of once per 10 minutes) so everything happens ten times a fast to make testing quicker.

I second this, however I don’t think block generation time should be changed. I think it should be identical to the production network. This, for example, would allow testers to try to subvert the system by creating nodes with particularly low latency, and keep the results applicable to the real network.

Great idea Gavin!

Satoshi Nakamoto July 10, 2010 12:58 UTC Source ·

I’ll start thinking about how to do this.

At the moment, you can kind of use -connect.  You can use -connect to make it connect to local computers on your LAN, like -connect=192.168.0.100.  If you start it out blank and don’t let it connect to the main network, the difficulty is still at the original low difficulty.  If you’ve port-forwarded though, then outside nodes might still connect inward to you.

With -connect it still uses IRC, do you think it shouldn’t get on IRC when you’re telling it to only connect to specific nodes with -connect?  The main scenario for -connect is where you have a server farm, with two connected to the network and the rest connected to the first two.  In that case, you wouldn’t want the -connect computers on IRC.

void ThreadIRCSeed(void* parg)
{
    if (mapArgs.count("-connect"))
        return;
Laszlo Hanyecz (laszlo) July 10, 2010 16:33 UTC Source ·

It really only makes sense for nodes with the port forwarded to remain on the IRC channel, right? Maybe it could just ping a php script or another node randomly (this might be a better idea) which tells it YES/NO on whether the connect-back is working, and then just terminate the IRC thread if it’s not needed anymore. It could re-probe every 6 hours or so in case the user changes their port forwarding settings, or it could just be an option even..

lachesis July 10, 2010 17:35 UTC Source ·

Oh I like that idea a lot Laszlo. There’s no reason for a non-forwarded client to idle in the IRC.

Stone Man July 14, 2010 07:10 UTC Source ·
Quote from: Bitcoiner on July 07, 2010, 2:53:00 PM UTC

Has there been a concerted effort to attack, subvert, or break Bitcoin? One way to test that it is secure from attack would be to actually try to undermine it, by double-spending coins, creating fake coins, posting false transactions, etc… and if flaws are found, better that they are found now than later, when the bitcoin economy is potentially larger and there is more to lose.

I agree. We the software needs to be vetted.

For one thing, I just ran across some rates to rent time on a supercomputer: http://news.softpedia.com/news/Rent-Your-Own-Supercomputer-for-2-77-per-Hour-82166.shtml $2.77 / core / hr

I don’t know a lot about breaking secure encryption and out hashing a proof-of-work, but Satoshi said in his paper that as long as no more than half of the network was owned by an attacker it could not be broken.

I wonder if someone could rent this super-computer or one bigger and theoretically undermine bitcoin for only the cost of renting the machine for an hour.

Based on my rough calculations, if 2200 machines like my duel core were owned by an attacker he could theoretically take down the network for only about $12,000 USD.

I hope I am wrong. Someone who is more knowledgeable should comment here.