Post
Topic
Board Development & Technical Discussion
Re: Bitcoin address and hash theory questions
by
DannyHamilton
on 01/04/2013, 14:56:21 UTC
- snip -
What is the maximum number of private addresses?

2^96  --  https://bitcointalk.org/index.php?topic=24268.0

and "almsot 2^256"   --   https://en.bitcoin.it/wiki/Private_key
- snip -

I assume you mean private keys (not private addresses, there is no such thing).  In that case:

https://en.bitcoin.it/wiki/Private_key

Quote
Nearly every 256-bit number is a valid private key. Specifically, any 256-bit number between 0x1 and 0xFFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFE BAAE DCE6 AF48 A03B BFD2 5E8C D036 4141 is a valid private key.

The range of valid private keys is governed by the secp256k1 ECDSA standard used by Bitcoin.



What is the maximum number of public addresses?

Only max found is 2^192 from  --   https://en.bitcoin.it/wiki/Private_key

25 byte public address  minus 1 byte for 00 hardcoded first byte  --  2 ^ ( 24*8 )

The limiting factor is the RIPEMD-160 hash.  Since the output of this hash is a 160 bit number, the maximum possible number of unique public addresses is 2160.



Has it been proven that there will be no hash-collisions where 2 private addresses share the same public address?


No info found.

With nearly 2256 possible private keys and only 2160 public addresses, it can be safely assumed that hash-collisions where 2 private addresses share the same public address will exist in the sets of all possibilities.  The odds of any individual encountering such a collision are so small as to make it practically impossible.



What is the process to create a private and public address ?

The address creation process looks like a random private first, then generate public address from the private...

https://en.bitcoin.it/wiki/Technical_background_of_version_1_Bitcoin_addresses

  • Random private key
  • ECDSA with the secp256k1 curve to find public key
  • SHA-256 public key
  • RIPEMD-160 result from SHA-256
  • Add a version byte to RIPEMD-160 result
  • Add a 4-byte checksum to RIPEMD-160 result
  • Convert to Base58Check format