Well for one you didnt check for all possible two symbol prefixes (missed capital letters)
I did "-i": case insensitive.
Missed that :C
but the actual reason why there are only 2160 different possible address is different. There are 2256 private keys. The public key to each private key gets hashed with RIPEMD160 among another algorithm (SHA256) which has a 160 bit output. Thus the can never be more than 2160 addresses. It is assumed that each address has 296 private keys that allow spending coins from them. This might not be true for all keys as its unclear whether the distribution is uniform. Its possible that some addresses have 296+X keys while others have 296-X keys, where X is not zero.
This doesn't explain why I don't find 1 public key for every private key. This is the other way around: 1 public key has a lot of (unknown!) private keys, but each private key should have 1 public key, right?
If I run vanitygen for 1 second searching for all possible prefixes at 127 kkeys/s, why don't I get 127,000 keys?
It should. Not sure, I dont get any numbers when I run it with
-k 1, but its not 300k per second. Might be the output slowing it down.
See the picture above? Its about the physical(!) limitations of counting(!) to 2256. Thus its somewhat wrong as we only need to check 2160 (which is faster) and we are not counting (ECDSA math and hashes are slower than counting). The ballpark is still correct though. In my example above I even assumed 1022 attacks per second.
I don't understand what that picture should tell me.
Thats impossible to use the entire energy our sun has left fueling the best possible computer and let it count to 2
256 By the way, what is it? Some virus or a star? Further, I don't quite understand how real are these physical limitations of counting, and what do they have to do with finding a collision? If there are 10 billion Bitcoin addresses, the chances of finding just one collision are multiplied by the number of already created addresses, right? In other words, if all possible addresses were created, then any address you generated would be a collision...
Let's assume for simplicity that a search in the database of existing addresses doesn't take time at all
IIRC its a dyson sphere around our sun. Its a theoretical concept of a civilization so advanced that it can build a sphere around a sun to harvest 100% (or very close to) of its energy output.
The physical limitations assumed in the picture are the following. Take the thing that requires the least amount of energy to represent a bit in either a 0 or a 1 state. IIRC its the spin of some particle. This lowest possible amount of energy is defined by the law of thermodynamics. Now take a good estimate of what the sun can output in terms of energy and calculate how many bit flips you can fuel with that energy. The result is that you cant do enough bit flips to count to 2
256. Keep in mind that this is physics and my understanding of these things is limited. I personally think I understand the pictures point, but I dont like it. Mainly because 2
256 does not matter anyway and its not a good explanation without a deep knowledge of physics. Its essentially a "because physics says so" which is useless if you cant follow the argument.
Anyway, trailing off. I assumed no lookup time and no other constrains. I also took half of all possible addresses and not all of them, because of the birthday paradox[1] which essentially means that you have a almost 100% chance of finding a collision after checking half of all possible hashes.
[1]
https://en.wikipedia.org/wiki/Birthday_problem