from what I have read,
a private key is a 256 bit binary number.
private key ----------elliptic curve multiplication-----> public key
public key -----------sha256 + ripemd160 -----------> public key hash
public key hash -------base58 check encoding------> bitcoin address
now according to the above,
2256 private keys are possible
since elliptic curve multiplication produces a unique public key from each private key, an equal number of corresponding public keys are also possible. But, since the public key goes through RIPEMD160, the public key hash has only 20 bytes or 160 bits. Hence only 2160 bitcoin addresses are possible. Does this mean that each bitcoin address may be associated with more than one private key? Since, if each of 2256 public keys produce only 2160 hashes this means more than one public key produces the same public key hash.
I would appreciate if an expert could clarify this matter ?
A valid private key is not 2**256, it is between 1 and FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFE BAAEDCE6 AF48A03B BFD25E8C D0364141, which is the order n of G on the Koblitz curve secp256k1 used in Bitcoin.
The chance of a random 2**256 number not being on the curve is 1 in 267776665566007192515705986938822075895 or so, so pretty much the same thing as 2
256 for casual discussion.
As you surmised, any given Bitcoin address is expected to have about 2
96 possible public/private keys.
There are probably 2
160 Bitcoin addresses, but there is no proof that they all exist, and statistics about the chances they all exist aren't informed about how oracle-like ripemd160 might be when it is streamed 160+96 bits.