<html>
<hr><p>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 (<a href="https://ethereum.stackexchange.com/questions/2045/is-ethereum-wallet-address-case-sensitive">let's say</a>)). 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?</p><hr>
<p>We will use a program called <strong>Ethaddrgen</strong>, the newest version can be downloaded <a href="https://github.com/Limeth/ethaddrgen/releases">here</a> (if you don't know what to choose, pick<em> x86_64-pc-windows-msvc.zip).</em></p>
<p>1. Extract the archive onto your desktop.</p>
<p>2. Run Windows command line: start menu -> type "cmd".</p>
<p>3. Enter commands:</p>
<pre><code>cd desktop
ethaddrgen -e "[0-9]{40}" </code><br></pre>
<p>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.<br>
<br>
<img src="https://www.wykop.pl/cdn/c3201142/comment_irVl1DtrT0bo1opwA6Y6pgn7g8NheUcg.jpg" width="985" height="522"/></p>
<blockquote><strong>Side note:</strong> In this article I'm using a term "generating" but it's basically brute-forcing <a href="https://www.royalfork.org/2017/12/10/eth-graphical-address/">the formula</a>.</blockquote>
<p>5. After it's done we receive a <strong>private key</strong> that can be imported into wallets such as <a href="https://play.google.com/store/apps/details?id=org.walleth">WALLETH</a> or <a href="https://www.myetherwallet.com/#send-transaction">MyEtherWallet</a>.</p><hr>
<p>Time (in minutes) needed to generate an address can be described by the following formula:</p>
<p><img src="http://quicklatex.com/cache3/c1/ql_c7be7b3c1bb4be4d4c6916d0f7f2c8c1_l3.png"/> (<em>x</em> is your hashrate)</p><p>You can also use <a href="http://mido-subs.pl/inne/Ethaddrgen.xlsx">this handy spreadsheet</a> to estimate your results.</p>
<hr>
<p>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:<br></p>
<pre><code>ethaddrgen -e "^[0-9]{35}"</code></pre>
<hr>
<p>If you want to leave your PC running the program for a long time, there are two flags you may find useful:</p>
<pre><code>ethaddrgen -e "[0-9]{40}" --stream --quiet</code></pre><br>
<p>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 <a href="https://en.wikipedia.org/wiki/Regular_expression">Regex</a>, you can create other patterns.</p>
<hr><p>A few examples of 40-digit addresses:<p>
<pre><code>
<table class="tg">
<tr>
<th class="tg-88oy">Address</th>
<th class="tg-88oy">Priv key</th>
</tr>
<tr>
<td class="tg-88oy">0x7393666850372516202555118560290345508697</td>
<td class="tg-88oy">daef6e48bcf5f7e73af7a2d105aca9e27523856d81f840d09cd4fc38df7c2637</td>
</tr>
<tr>
<td class="tg-88oy">0x0185813917875760891863216441862791441805</td>
<td class="tg-88oy">d67fbbf9c8cfff45b63ece563e36b8af7550918b767c5761e0309363ba857b51</td>
</tr>
<tr>
<td class="tg-88oy">0x6850042085333134916357017142395716972316</td>
<td class="tg-88oy">cb1df4fe0521ef1f0984e33a462879ccd2a65296b30af026c273180f65913bd1</td>
</tr>
</table>
</code></pre>
</html>