I have a question about valid bitcoin addresses. Here's what I know:
- There are 1.159x10^77 (specifically 115792089237316195423570985008687907852837564279074904382605163141518161494337) possible private keys.
- There are 2^160 (1.462x10^48) bitcoin addresses.
- Two addresses can be generated per private key, based on whether you are using the compressed or uncompressed public ECDSA key.
My question is about those two addresses. For example, private key 5KDYX4DF5pRPhMDqice9McibukLJxnck29s4L1tpKxqHrwqY3Jr (hex: B88154472A54F77A703766A21B2BA1E3C282F233788D7B63580E6285A4FEC604, dec: 83454069075984840342299490011714230619470811543784936857410504043198687397380) produces the following two addresses:
- 1FXKSPuUmyPPbhyH6rhtF5KR6UEVbc3Qg1 [uncompressed]
- 19TtMmQ3UpddWsEN4vvx5LyPDP2Ptd2Cmo [compressed]
However, in the bitcoin wiki it states
When a private key is imported, it always corresponds to exactly one Bitcoin address
and this seems to be the case because if you import the private key above into bitcoin-qt, it only lists the uncompressed address. Do you have access to both compressed and uncompressed addresses' balances? If someone sent bitcoins to the compressed address but none to the uncompressed, would it still show up in bitcoin-qt? Or is the compressed address essentially useless? Would anyone actually store bitcoins in the compressed address (ie would it be safer to store bitcoins at the compressed address because hackers would only generate the uncompressed address and see in blockchain.info that there is a zero balance there and therefore ignore it)?
BONUS question: I wrote an address generator in C# that can generate approx 250K addresses (both compressed and uncompressed) per hour. Vanitygen can generate about 2.1 million uncompressed per hour. Why is there such a big difference when they both have to go through the same process (or do they)? (My program is multithreaded too).