How to generate an Ethereum address made of digits only?

in #crypto7 years ago (edited)

There are 58 characters that Bitcoin address can be made of (0-9, a-z, A-Z, excluding 0OlI because they look too similar depending on the font). In Ethereum there are only 16 allowed characters (0-9, a-z/A-Z, Ethereum addresses are not case-sensitive (let's say)). That difference leads to an interesting implication. Generating a Bitcoin address composed of digits only is impossible (The Sun will burn out sooner) but for Ethereum it's achievable (it took less than an hour on my old i5 4590). And it's not even that hard. How to do this?


We will use a program called Ethaddrgen, the newest version can be downloaded here (if you don't know what to choose, pick x86_64-pc-windows-msvc.zip).

1. Extract the archive onto your desktop.

2. Run Windows command line: start menu -> type "cmd".

3. Enter commands:

cd desktop
ethaddrgen -e "[0-9]{40}" 

4. The program will start generating an address that meets entered conditions (i.e. only digits are allowed). It also shows our hashrate (how many addresses your CPU can generate per second). In order to increase performance I recommend closing all other running programs.

Side note: In this article I'm using a term "generating" but it's basically brute-forcing the formula.

5. After it's done we receive a private key that can be imported into wallets such as WALLETH or MyEtherWallet.


Time (in minutes) needed to generate an address can be described by the following formula:

              (x is your hashrate)

You can also use this handy spreadsheet to estimate your results.


As you probably noticed in the spreadsheet, your computer needs 1.6x more time to generate an address every time you add one digit. While the average CPU needs dozens of minutes to generate full 40-digit-only address, you can significantly reduce that time by allowing a few letters at the end. For instance, let's say you want only 35 first characters to be digits:

ethaddrgen -e "^[0-9]{35}"

If you want to leave your PC running the program for a long time, there are two flags you may find useful:

ethaddrgen -e "[0-9]{40}" --stream --quiet

By default the program stops when it finds one address meeting entered conditions. The first flag turns that feature off. The second flag hides the hashrate meter so that our command line isn't all spammed with it when we come back to see the results. If you are familiar with Regex, you can create other patterns.


A few examples of 40-digit addresses:


Address Priv key
0x7393666850372516202555118560290345508697 daef6e48bcf5f7e73af7a2d105aca9e27523856d81f840d09cd4fc38df7c2637
0x0185813917875760891863216441862791441805 d67fbbf9c8cfff45b63ece563e36b8af7550918b767c5761e0309363ba857b51
0x6850042085333134916357017142395716972316 cb1df4fe0521ef1f0984e33a462879ccd2a65296b30af026c273180f65913bd1
Sort:  

How much time it would take to do a pattern?

Depends on the pattern and your CPU.