I’m trying to create a Bitcoin address database using btcrecover and Google BigQuery data. The Ethereum database works fine, but the Bitcoin database is unable to return an address, even though the test address and a random address from the blockchain are present in the dataset.
Here’s what I’ve tried:
1.I created a database using:
python create-address-db.py --inputlistfile C:\Users\test\Desktop\btc-addresses-db-20250816 --dbfilename btc-addresses-db-20250816.db --dblength 31
2. I verified the address using:
python check-address-db.py --dbfilename btc-addresses-db-20250816.db --checkaddresslist ./addressdb-checklists/BTC.txt
python check-address-db.py --dbfilename btc-addresses-db-20250816.db --checkaddresses bc1qxy2kgdygjrsqtzq2n0yrf2493p83kkfjhx0wlh
Findings:
- Ethereum DB works with –dblength 29.
- When I create a Bitcoin DB with a complete dataset (approximately 2000 BigQuery files, 16 GB DB) and specify –dblength 31, the address is not found.
- A small subset (4 BigQuery files out of 2000) works fine with both –dblength 27 (1GB DB) and –dblength 31 (16GB DB).
- Splitting a dataset into halves or subsets produces inconsistent results. Some address ranges are discovered and others are not, even within the same database.
- I’ve tried multiple Python versions (3.9-3.13) and btcrecover versions (1.6.0, 1.12.0, master) with the same results.
- 64-bit system, all dependencies installed, Rust installed, and using a virtual environment.
- The author’s official Bitcoin database (addresses-BTC-2011-to-2021-03-31.zip) works correctly.
Example of inconsistent results from a subset:
| file range | Found the address? | 
|---|---|
| 500~520 | yes | 
| 500-599 | no | 
| 500~570 | no | 
| 550–570 | no | 
| 550–559 | yes | 
| 560–569 | yes | 
| 570–579 | yes | 
| 563–579 | yes | 
As you can see, some databases returned the address successfully, while others did not. Initially, I thought the problem might be caused by file 570. However, in subsequent tests, the database containing file 570 worked correctly.
In another test, I created a database from files 550-570 and tested the addresses in each file as a sample of this database. The results were:
- Sample address for file 570: Found
- Sample address for file 553: Not Found
- Sample address for file 563: Found
So some addresses were retrieved successfully and others were not retrieved, even within the same database. This pattern suggests that the problem is not just in one file, but may be related to how certain addresses are indexed or stored in the database.
Question: Has anyone experienced similar issues when creating large Bitcoin databases using btcrecover? Is this a dataset issue, a bug in btcrecover, or an issue with how addresses are indexed when –dblength is large?
Discover more from Earlybirds Invest
Subscribe to get the latest posts sent to your email.

 
 
 
 
 
  
  
  
  
 



















