1 Screenshot:
https://prnt.sc/vxEj_vFK3xu_A little theory.
Bitcoin addresses based on Base58 (like this: "1PnVcifB9EBwbaAauprqcucPgfUnrRLtWg") are generated from a random 256-bit value. Some might bring up seed phrases and such, but a seed phrase is essentially a shortened 256-bit number. In short, a random 256-bit number is turned into a 64-bit one, which is then turned into a private key, and based on the private key, a public key is created through hashing.
Many people are working on generating random numbers, creating private and public keys from them, hoping to randomly generate a wallet that already exists and, ideally, has a balance.
It sounds tempting, but the number of possible combinations is greater than the number of atoms in the universe. In fact, there was an interesting article on a forum where a guy calculated how much energy it would take to generate one number and how much would be needed to generate all possible combinations. He concluded that you'd need the energy of a sun a hundred times more powerful than ours for a year. This is just to give you some perspective on the scale— even if we create a super quantum computer, it would still need the energy of millions of suns to generate all possible combinations.
Of course, no one rules out luck. Anything can happen. But there’s another issue no one talks about. Even software that can generate a million addresses per minute is essentially useless junk. Generation is one thing, but checking for a balance is another. Currently, there's no way, even a paid one, to check millions of addresses for balances in real-time. Why would anyone provide such computational operations for free? Sure, you could set up your own node, create your own database based on it, host everything on a server, and use terabytes of blockchain data, but something tells me that anyone capable of doing that probably wouldn’t be interested in searching for forgotten wallets.
How is this possible?
I’ve just explained why this isn’t worth counting on too much. But about a month ago, something changed my mind about finding these wallets. With the development of neural networks, people noticed that, from time to time, money was disappearing from old wallets.
I checked this information and confirmed it. So, there is some method, and neural networks may help discover it. I don’t know how, but this topic captivated me and led to some results.
After long and painstaking efforts with Gemini (which really doesn’t like discussing vulnerabilities), reading through tons of forums and even scientific articles, an interesting detail emerged. Yes, there are a huge number of 256-bit combinations. But again, it all comes down to human error. In the early days of Bitcoin’s development, especially during the initial boom, many services and websites popped up to quickly create wallets. This includes darknet services, Bitcoin mixers, mining farms, and more.
Scripts that allowed people to create such wallets were manually written, often using free libraries like Python's Random, among others (nowadays, more advanced libraries are mostly used). As it turns out, these libraries occasionally malfunctioned. Whether it was a processor glitch or something else, they began generating numbers with patterns. What kind of patterns?
Let me give you an example with an 8-bit chunk. Say a number like "00011000" was generated, but then a glitch occurred and the result became "00110000", then "0110000", then "11000000". So, the same number could be generated, but with a shift to the left. Or a 256-bit number could be generated where the first 200 bits were zeros, and the rest were random. And so on. As a result, thousands or hundreds of thousands of wallets could have been created with a difference in the 256-bit number as small as one value.
This gave me an idea—why generate a completely random number when you can try generating only parts of the number, keeping the rest fixed? There’s a much higher chance that someone used this pool due to faulty libraries than simply guessing blindly. This is how the first version of the program, called "Pidor1.0" (a working title for now), was born.
2 Screenshot:
https://prnt.sc/Zep7q49Z5P67As you can see from the screenshot, I split the 256-bit number into 8-bit cells where you can input your own values, fix certain bits to remain unchanged, and so on. Imagine my surprise when, after working with the program for just 10 minutes, I found real, existing addresses that had made transactions (unfortunately, with zero balances). I will provide proof and a bunch of addresses with private keys at the end of the article, so you can freely check them out yourself.
So far, I’ve found about a thousand wallets in total over a week of testing (testing, not continuous generation). Unfortunately, they all had zero balances, but some saw substantial amounts pass through, and their last transactions were this year. Here's one example, and I’ll also share its private key:
3 Screenshot:
https://prnt.sc/SlCAgmXx0eSmAnd then it all took off—various versions of "Pidor" started to emerge. For example, in this version, I added the ability to lock all 256 bits:
4 Screenshot:
https://prnt.sc/ogLjZRWCHMnaBut the real challenge began when I hit a wall trying to check the balances of millions of generated wallets. Naturally, I had to look for free methods. After countless nights of work, I ended up abandoning balance checks via the internet altogether. How? By parsing every single address that has ever conducted a transaction. The result was a .txt file weighing in at 50 GB with 1.5 billion lines. Since I filtered it down to only Bip58 addresses, the file ended up at 20 GB and 800 million lines.
However, searching through the .txt file every time to check if a generated Bitcoin address exists is extremely taxing on the system and slow. So, I had to convert this file into an SQL Lite database, which ended up being nearly 60 GB. And what about speed, you ask? On an Intel(R) Core(TM) i5-8350U CPU @ 1.70GHz, generation and instant checking happens at a rate of about a million per second. I haven’t yet tested it on more serious machines.
5 Screenshot:
https://prnt.sc/zqp6X-ryWckGI think you've got the idea, right? Why check the balance when you can simply verify if the wallet already exists and if there have been any transactions on it.
As a result, the program has currently evolved into this:
6 Screenshot:
https://prnt.sc/ZNMT2l1nGkxQIn short, I've given you some food for thought. This is just the beginning, but it's already exciting to have achieved what seemed impossible. Ask any neural network if it's possible to generate an already existing address, and see what it tells you. But here, I've managed to generate not just one address, but hundreds.
If you found this information useful, you can thank me by:
BTC: 38ao8A2xr9wJqVnxgjdBLfJdJsvPjmE616
Ordinals/BRC-20/Runes: bc1pzsv8gq5a9cugpqs5st6rp4p9thtfkf3xpdacxadu5gnvxxs4tzpsgm5akp
USDT TRC20: TEbjQ4qA8ZrWtgbtSJMGyUwiq1SbmW24Xr
ETH: 0xabd190C33bbC704DD2FC52f0538d149F625C2FEA