Força bruta adalah strategi paling bodoh yang ada, dan itu satu-satunya yang tersedia ketika targetnya adalah sebuah alamat. Ini juga mengejutkan cepat, karena alasan yang hampir tidak ada yang menyadarinya pada awalnya: tidak ada yang menghitung setiap kunci dari awal.
Menguji kandidat memerlukan empat langkah. Mengalikan generator dengan nomor kandidat, yang menghasilkan kunci publik. Memproses kunci publik dengan SHA-256. Memproses hasilnya dengan RIPEMD-160. Membandingkan dua puluh byte dengan alamat yang dicari. Langkah pertama puluhan kali lebih mahal daripada tiga langkah lainnya digabungkan — dan justru inilah yang dihindari oleh program pencarian.
Triknya adalah mencari kandidat secara berurutan. Jika Anda sudah memiliki titik yang sesuai dengan k, titik yang sesuai dengan k ditambah satu adalah titik tersebut ditambah G: sebuah penjumlahan, bukan perkalian penuh. Dan karena setiap penjumlahan titik memerlukan pembagian dalam tubuh hingga, yang merupakan operasi mahal di sana, digunakan trik kedua, yang dikenal sebagai inversi batch: satu inversi dihitung untuk ratusan titik sekaligus, dan biaya per kandidat menurun drastis.

Dengan dua optimasi ini, kartu grafis modern menguji beberapa miliar kandidat per detik. Ini adalah angka yang mengesankan, dan apa artinya layak dipertimbangkan dengan hati-hati.
Interval tujuh puluh bit memiliki 2^69 kandidat, yang kira-kira 590 kuintiliun. Dibagi dengan tiga miliar per detik, itu sekitar dua ratus miliar detik — sekitar enam ribu dua ratus tahun dengan satu kartu saja. Seribu kartu secara paralel menguranginya menjadi sedikit lebih dari enam tahun. Sepuluh ribu kartu, menjadi tujuh bulan.
Sekarang tagihan listrik, yang benar-benar menentukan. Satu kartu tersebut mengonsumsi sekitar empat ratus watt. Mengalikan dengan total durasi pekerjaan, pemindaian lengkap tujuh puluh bit menghabiskan sekitar dua puluh dua gigawatt-jam — konsumsi kota berukuran sedang selama beberapa hari, terlepas dari berapa banyak kartu yang Anda gunakan untuk mencapainya. Membagi pekerjaan di antara lebih banyak mesin memperpendek kalender dan tidak mengubah energi.

Dan kemudian datanglah yang merusak segalanya: setiap bit tambahan menggandakan seluruh perhitungan. Tujuh puluh satu bit memerlukan dua kali lipat waktu dan dua kali lipat energi. Tujuh puluh lima memerlukan tiga puluh dua kali lebih banyak. Delapan puluh bit memerlukan seribu kali lebih banyak dari tujuh puluh — dan seribu kali dua puluh dua gigawatt-jam adalah jumlah energi yang tidak dibeli oleh operasi swasta mana pun untuk mencari sebuah kunci.

Penting untuk tepat tentang perbandingan yang sering muncul. Seluruh jaringan Bitcoin menghitung sekitar satu sextillion hash per detik, angka yang ratusan kali lebih besar dari ladang kartu grafis mana pun — dan tetap saja itu tidak berguna untuk ini. Seorang penambang ASIC hanya tahu melakukan satu hal, SHA-256 pada header delapan puluh byte, dan tidak tahu bagaimana mengalikan titik pada kurva. Perangkat keras yang menyelesaikan tantangan adalah yang lain, dan jauh lebih lambat.
Itulah sebabnya batas kekuatan brute pada alamat saat ini berada di suatu tempat antara tujuh puluh dan delapan puluh bit, dan tidak maju karena seseorang memiliki ide yang lebih baik: itu maju ketika perangkat keras menjadi lebih murah, dan perlahan. Tidak ada optimasi perangkat lunak yang mengubah sifat eksponensial dari dinding tersebut.
Penting untuk mencatat dua peringatan praktis. Yang pertama adalah jumlah kunci per detik yang diumumkan oleh program sangat bervariasi tergantung pada apa yang dicari — mencari alamat tertentu, mencari salah satu dari daftar ribuan, dan mencari berdasarkan prefiks adalah tugas dengan biaya yang sangat berbeda. Yang kedua adalah bahwa sebagian besar keuntungan yang diumumkan berasal dari membandingkan dengan daftar yang dimuat dalam memori, dan bukan dari menghitung lebih cepat.
Seluruh pelajaran ini mengasumsikan kasus terburuk: hanya alamat yang diketahui. Ketika kunci publik terungkap, masalahnya bukan lagi menyapu interval dan menjadi logaritma diskret — dan di sana ada jalan pintas yang mengurangi 2^69 percobaan menjadi sekitar 2^35. Pada pelajaran berikutnya, jalan pintas pertama ini: menukar memori dengan waktu.