- Not a Single Satoshi for You…
- A Reason For Enormity
- Worry Not… There Could Always Be More
As long as Bitcoin uses the RIPEMD160 hash function, there are 2^160 Bitcoin addresses.
That number is: 1,461,501,637,330,902,918,203,684,832,716,283,019,655,932,542,976
It’s such a ridiculous number that calling it ‘astronomical’ is an insult to its enormity. So how big is it, exactly? Visualizing the number of Bitcoin addresses that exist is not an easy task, but just for fun, we’re going to try and help you do it.
Simply dividing up that number so that each of the 7.442 billion people living on earth can have an equal number of Bitcoin addresses won’t work because there aren’t enough people living on Earth to make that number any more comprehensible than it already is. That is because each person would get
196,385,600,286,334,710,857,791,565,804,391,698,421 Bitcoin addresses.
That is just a smaller incomprehensible number. So instead, we’re going to use grains of sand.
There are 2^63 grains of sand on all of the beaches of Earth, combined . That’s roughly 9 quintillion grains of sand (or 9,223,372,036,854,775,808).
Info: This information is according to a study done by the University of Hawaii. The link seems to be down, but this study is oft cited by other reputable sources: The Guardian, NPR, and the NSA, among others.
Imagine that each grain of sand on Earth is another planet Earth, and that each of those planets has 7.442 billion people living on it. Now, if we divide up the number of Bitcoin addresses per person, each would get 3.5 billion for their lifetime.
And if each of those people lives for exactly 100 years, they have 110 Bitcoin addresses to use every second starting from the second they’re born. Side note: I was originally going to make every planet in the Milky Way Galaxy into an Earth to illustrate this point, but it didn’t work because there are only a pathetic 100 billion estimated planets in our galaxy (scoff).
Not a Single Satoshi for You…
Sadly, with that many people, if each person owned just one Bitcoin address, instead of 3.5 billion, and we gave them all the same amount of Bitcoin to hodl, they’d all effectively have zero Bitcoin because each of them wouldn’t even get a small fraction of one percent of a single satoshi.
A Reason For Enormity
The number of Bitcoin addresses is incomprehensible for a very good reason. The more possible addresses that exist, the more secure the wallets are from would-be thieves. As it stands, it is effectively impossible for someone to randomly generate a private key to some Bitcoin address and find a corresponding public key that has any amount of Bitcoin in it.
Let’s say that an attacker wants to try this. They want to randomly generate private keys, calculate the corresponding public addresses, and check to see if there is any Bitcoin inside. Even if there were 1 billion wallet addresses with Bitcoin inside, the Sun will have expanded and engulfed the Earth (set to happen about 7.5 billion years from now) long before one of those addresses could be found with a random generator.
The original reason why addresses were public key hashes is something you'll need to ask Satoshi.
Worry Not… There Could Always Be More
Bitcoin addresses are created using public keys. The public key is first hashed with the SHA256 algorithm, then that hash is taken and hashed again using the previously mentioned RipeMD160 algorithm. But why are public keys hashed two times if elliptical curve cryptography is so safe?
According to Blockstream employee and Bitcoin Core developer Pieter Wuille, you’d have to ask Satoshi Nakamoto to find out the exact reasons for sure; but we do know that hashing the SHA256 output with the RipeMD160 algorithm decreases the size of the address from 32 bytes to 20 bytes which saves space on the blockchain.
In addition to that, respected cryptographer Joel Katz explains that while RipeMD160 was chosen for the smaller sized addresses, nobody knows the reason why SHA256 was used as well. He offers two possibilities. RipeMD might have some defect, so combining it with SHA256 would strengthen security.
The other possibility is that there might have been weaknesses in the MD structure that would make it vulnerable to an attack such as a length extension attack (which he explains in a little more detail but doesn’t consider it likely), and that combining RipeMD160 with SHA256 eliminates that threat.
In any case, security is the answer. Both cryptographic algorithms are well known and one is smaller in size. Using both is just extra security.
If ever we needed more Bitcoin addresses for whatever reason, we could stop using the RipeMD160 hash function and just use the SHA256 hash function (or just skip hashing the pubkey altogether and simply use compressed pubkeys). That changes the number of addresses from 2^160 to 2^256. That’s a huge increase (~2^93%) on a number that is rather incomprehensible to begin with!