Introducing BCHKeys.lol - A directory containing every BCH private key

2 43
Avatar for qwzky_
Written by
3 years ago

Hello,

In this article I will introduce you to a new resource that I have just finished building & launched today - BCHKeys.lol
I will also be giving a quick breakdown of the implementation, for those of you interested in how this directory works.

Introduction

BCHKeys.lol is a directory where you can find pages containing all the BCH private keys, with their corresponding public and compressed keys. Together with these, the directory also displays their balance status, which gets automatically checked whenever a page is generated.

For those familiar with this concept (which first appeared in 2013 as ‘All Bitcoin private keys leaked’), you’ll know that the source of my inspiration was the Keys.lol website, which offers these functionalities - but only for BTC and ETH.

What technologies did I use?

The web app is Python-based and everything was implemented from scratch, using:

1.     Flask – for the web framework;

2.     Bootstrap -  for the front-end;

3.     Blockchair.com API - for checking the wallets’ balances;

4.     Various Python libraries for generating the keys and addresses, for managing the access to the platform (avoiding spam), for sending the API requests etc.

The main concern I had for the technologies used was the performance: I needed to have a way to generate the keys quickly enough, and then a way to get the balances in one request, and - as you probably know - Python is one of the slowest languages.

Therefore, for the balance checking component, I’ve looked at a lot of APIs, and even considered running my own node, but I’ve stumbled into a lot of hurdles: some platforms don’t seem to be maintained anymore, the APIs were lacking, the rate-limit of the number of requests was really low, etc.

Luckily, I was able to implement a library for generating the addresses, and then I found the Blockchair.com API where I can make only one request that contains all 256 addresses (compressed and uncompressed), and get a JSON response - which I can parse and see if there are any addresses that have a balance.

Addressing the elephant in the room

Yes, theoretically, someone could stumble upon a wallet that does have a balance – but, the chances of this happening are so low, that it’s more likely for someone to get struck by lightning while riding a flying-talking alien-pig on Mars.

Everything that you see on the website is generated dynamically, upon you accessing a page. None of the keys and addresses are stored anywhere, since this would require, for all intents and purposes, an ‘almost-infinite’ amount of disk space. Each time you access a page, the page number (which you can also see in the URL), is used as a seed to generate the 128 private keys and their matching wallet addresses.

For more information, please go to the About page, as it contains a more detailed explanation, and a very illuminating video on this topic:

Next steps

First of all, I am interested in what the community thinks about this resource. Please share your feedback with me and let me know if there are any other features that you would like to see added to the platform.

On my list, there already are a few items that I want to work on next for this website, among which:

  • Display the number of past transactions for each of the addresses;

  • Improve the front-end and user-experience;

  • Improve the detection of robot-like behavior;

  • Fix minor bugs.

Donate

In case you would like to support this resource, as well as future development efforts, your donation would help in a big way – please see https://bchkeys.lol/donate.

Thank you!

Useful links:

Announcement on Reddit: https://www.reddit.com/r/btc/comments/phwkkq/introducing_bchkeyslol_a_directory_containing/

 

 

3
$ 0.51
$ 0.51 from @TheRandomRewarder
Avatar for qwzky_
Written by
3 years ago

Comments

You're donation page has a bug.

$ 0.00
3 years ago

Hi! The issue should be fixed now - thank you for taking a look over the website!

$ 0.00
3 years ago