Bitcoin Address Collisions

3 messages NewLibertyStandard, Satoshi Nakamoto February 22, 2010 — February 23, 2010
NewLibertyStandard February 22, 2010 Source · Permalink

Although extremely unlikely, what would happen if two Bitcoin clients generated the same Bitcoin address? Would payments be delivered to whichever client encountered the payment first? If there is a mechanism in place to prevent such collisions, please explain it.

Satoshi Nakamoto February 23, 2010 Source · Permalink

There’s a separate public/private keypair for every bitcoin address.  You don’t have a single private key that unlocks everything.  Bitcoin addresses are a 160-bit hash of the public key, everything else in the system is 256-bit.

If there was a collision, the collider could spend any money sent to that address.  Just money sent to that address, not the whole wallet.

If you were to intentionally try to make a collision, it would currently take 2^126 times longer to generate a colliding bitcoin address than to generate a block.  You could have got a lot more money by generating blocks.

The random seed is very thorough.  On Windows, it uses all the performance monitor data that measures every bit of disk performance, network card metrics, cpu time, paging etc. since your computer started.  Linux has a built-in entropy collector.  Adding to that, every time you move your mouse inside the Bitcoin window you’re generating entropy, and entropy is captured from the timing of disk ops.

Satoshi Nakamoto February 23, 2010 Source · Permalink

Quote from: NewLibertyStandard on February 23, 2010, 07:04:47 PMAre generated bitcoins encrypted with whichever address is currently displayed in the main Bitcoin window? No, each generated transaction uses a new, single-use address.

Nothing uses the address in the main window, it’s just there for convenience for you to copy.  0.2.5 has a “New…” button next to it to make it easy to change each time you use it.