Baby Step Giant Step (BSGS) adalah algoritma yang ditemukan oleh Daniel Shanks (1971) untuk memecahkan discrete logarithm problem — yaitu: "Diketahui titik P dan Q pada kurva eliptik, cari nilai k sehingga k × P = Q."
Dalam konteks Bitcoin: jika kita tahu public key (Q) dan generator point (P), kita bisa mencari private key (k). Ini adalah masalah yang sama dengan memecahkan puzzle.
Analogi sederhana:
Kamu harus menemukan angka k di antara 1 dan 1.000.000.
Cara kerja BSGS (versi sederhana):
Range pencarian: 1 sampai N m = √N (misalnya N=1.000.000, maka m=1.000) BABY STEP (langkah kecil): Hitung dan simpan: Q, Q-P, Q-2P, Q-3P, ... Q-mP Simpan ke dalam tabel hash GIANT STEP (langkah besar): Hitung: m×P, 2m×P, 3m×P, ... Setiap hasil, cek: apakah ada di tabel baby step? Jika ada → ketemu! Gabungkan untuk dapat k.
Perbandingan efisiensi untuk Puzzle #66:
Range Puzzle #66 : 2^65 ≈ 36.893.488.147.419.103.232 kemungkinan
Brute Force : 36 kuadriliun operasi → ~1.000 tahun (GPU)
BSGS : √(2^65) = 2^32,5 ≈ 6 miliar operasi + RAM besar
→ jauh lebih singkat, tapi butuh RAM ratusan GB
Trade-off BSGS:
Varian modern yang lebih efisien:
Untuk puzzle Bitcoin, banyak peneliti menggunakan Pollard Kangaroo Algorithm — varian probabilistik dari BSGS yang lebih hemat memori namun tetap jauh lebih cepat dari brute force, dan bisa dijalankan secara paralel di banyak komputer.
Program HEX Range Scanner bekerja dengan cara:
startIlustrasi cara kerjanya (pseudocode):
target = "13zb1hQbWVsc2S7ZTZnP2G4undNNpdh5so"
current = 0x20000000000000000 ← start
end = 0x3ffffffffffffff ← end
WHILE current <= end:
privkey = current
pubkey = privkey × G ← perkalian titik kurva eliptik
address = hash(pubkey) ← SHA256 + RIPEMD160 + Base58
IF address == target:
PRINT "FOUND! Private key:", hex(privkey)
SAVE to file
STOP
current = current + 1 ← coba angka berikutnya
Contoh penggunaan di Command Prompt:
scan-hex.exe ^ --start 20000000000000000 ^ --end 3ffffffffffffff ^ --target 13zb1hQbWVsc2S7ZTZnP2G4undNNpdh5so ^ --threads 8
Seberapa cepat?
Itulah mengapa orang menggunakan teknik lain seperti BSGS atau Kangaroo yang lebih cerdas dari brute force murni.
Program WIF Range Scanner pada dasarnya sama dengan HEX scanner — bedanya cuma di format input. Program ini menerima batas bawah dan atas dalam format WIF, lalu:
Contoh konkret (dibuat-buat untuk ilustrasi):
WIF Bawah : 5HueCGU8rMjxECyDialwujzvHawtmqKxpFB8KGHB5JKHD3Hji4a WIF Atas : 5HueCGU8rMjxECyDialwujzvHawtmqKxpFB8KGHB5JKHD3Hji4z Iterasi: 5HueCGU8rMjxECyDialwujzvHawtmqKxpFB8KGHB5JKHD3Hji4a → address → tidak cocok 5HueCGU8rMjxECyDialwujzvHawtmqKxpFB8KGHB5JKHD3Hji4b → address → tidak cocok 5HueCGU8rMjxECyDialwujzvHawtmqKxpFB8KGHB5JKHD3Hji4c → address → tidak cocok ... (terus sampai atas) 5HueCGU8rMjxECyDialwujzvHawtmqKxpFB8KGHB5JKHD3Hji4m → address → COCOK! ✓
Contoh penggunaan di Command Prompt:
scan-wif.exe ^ --wif-start 5HueCGU8rMjxECyDialwujzvHawtmqKxpFB8KGHB5JKHD3Hji4a ^ --wif-end 5HueCGU8rMjxECyDialwujzvHawtmqKxpFB8KGHB5JKHD3Hji4z ^ --target 1A1zP1eP5QGefi2DMPTfTL5SLmv7Divf na ^ --threads 4 ^ --output hasil-wif.txt
Kapan pakai WIF scanner vs HEX scanner?
Di balik layar, keduanya melakukan hal yang persis sama — hanya format input yang berbeda.
Range HEX adalah rentang pencarian private key yang ditulis dalam sistem bilangan heksadesimal (basis 16, menggunakan angka 0-9 dan huruf A-F).
Format penulisannya: batas_bawah : batas_atas
Contoh Puzzle #66 (yang sedang banyak diburu):
Batas bawah : 0000000000000000 2000000000000000 Batas atas : 0000000000000000 3fffffffffffffff
Artinya: private key-nya adalah salah satu dari 265 ≈ 36 kuadriliun kemungkinan angka di antara dua angka hex tersebut.
Contoh lebih sederhana — Puzzle #20 (sudah terpecahkan):
Range : 80000 : fffff Jawaban: ee530 (private key dalam hex)
Cara membacanya: angka ee530 memang berada di antara 80000 dan fffff — benar!
Kenapa pakai HEX? Karena komputer bekerja dengan sistem biner. HEX adalah cara kompak untuk menuliskan angka biner yang sangat panjang. Private key Bitcoin sesungguhnya adalah angka 256-bit — kalau ditulis dalam desimal biasa, panjangnya 78 digit. Dalam HEX hanya 64 karakter.
WIF (Wallet Import Format) adalah cara penulisan private key Bitcoin yang dikodekan agar lebih mudah dibaca dan diketik manusia — menggunakan Base58Check encoding.
Perbandingan format yang sama persis:
HEX : 0000000000000000000000000000000000000000000000000000000000000001 WIF : 5HpHagT65TZzG1PH3CSu63k8DbpvD8s5ip4nEB3kEsreAnchuDf HEX : 0000000000000000000000000000000000000000000000000000000000000002 WIF : 5HpHagT65TZzG1PH3CSu63k8DbpvD8s5ip4nEB3kEsreB1FQ8BZ
Ciri khas WIF:
Contoh Range WIF Puzzle #30 (sudah terpecahkan):
WIF bawah : 5HpHagT65TZzG1PH3CSu63k8DbpvD8s5ip4nEB3kEsreAvUcVfH WIF atas : 5HpHagT65TZzG1PH3CSu63k8DbpvD8s5ip4nEB3kEsreBUekrxR Jawaban : 5HpHagT65TZzG1PH3CSu63k8DbpvD8s5ip4nEB3kEsreB1FQ8BZ
Program scanner akan mencoba satu per satu WIF dari batas bawah hingga batas atas, lalu mengecek apakah address yang dihasilkan cocok dengan target.
Mana yang lebih cepat — scan HEX atau WIF?
Secara komputasi hasilnya sama karena program akan mengkonversi WIF ke HEX dulu sebelum proses. WIF hanya format tampilan, bukan format komputasi.
Public Key adalah kunci publik yang diturunkan dari private key menggunakan matematika Elliptic Curve Cryptography (ECC). Hubungannya satu arah — dari private key bisa didapat public key, tapi tidak bisa sebaliknya.
Rantai lengkap dari private key ke address:
Private Key (256-bit angka rahasia)
│
│ × Generator Point G (ECC secp256k1)
▼
Public Key (titik pada kurva eliptik, 64 byte)
│
│ SHA-256 → RIPEMD-160
▼
Public Key Hash (20 byte)
│
│ Base58Check encoding
▼
Bitcoin Address (1xxx... atau 3xxx... atau bc1xxx...)
Format Public Key:
0402 (y genap) atau 03 (y ganjil)Private Key : 0000...0001 Public Key : 0279BE667EF9DCBBAC55A06295CE870B07029BFCDB2DCE28D959F2815B16F81798 Address : 1BgGZ9tcN4rm9KBzDn7KprQz87SZ26SAMH
Cara mendapatkan Public Key dari alamat puzzle:
⚠️ Ini bagian penting: Kamu tidak bisa mendapatkan public key hanya dari alamat Bitcoin — kecuali alamat tersebut pernah melakukan transaksi pengeluaran (spending).
Puzzle #66 dan puzzle-puzzle besar lainnya belum pernah digunakan untuk mengirim, sehingga public key-nya belum diketahui. Ini justru membuatnya lebih aman dari serangan algoritma tertentu.
Bloom Filter adalah struktur data probabilistik yang digunakan untuk mengecek dengan cepat: "Apakah alamat ini ada dalam daftar target saya?"
Analogi sederhana:
Bayangkan kamu punya daftar 50 juta alamat Bitcoin target. Setiap kali program menghasilkan sebuah alamat baru, ia harus mengecek: "Apakah alamat ini ada di daftar?"
Cara kerja Bloom Filter:
Daftar alamat target
│
▼
[ Hash Function ] ──→ Tandai bit-bit tertentu di array raksasa
│
▼
[ File .bloom ] ──→ Disimpan di disk (ukuran jauh lebih kecil dari daftar asli)
Saat scanning:
Alamat baru → Hash → Cek bit → Ada? Cocok! / Tidak ada? Lanjut scan
Kelebihan Bloom Filter:
Kekurangannya: Ada kemungkinan kecil false positive (bilang "cocok" padahal tidak). Namun untuk keperluan scanning puzzle, ini dapat diterima karena program akan melakukan pengecekan ulang sebelum menyimpan hasil.
Di Control Room, file bloom filter biasanya berekstensi .bloom atau .bf dan perlu di-generate dulu dari daftar alamat target menggunakan tool yang disediakan.
Program Command Line Interface (CLI) adalah program yang dijalankan melalui jendela teks seperti Command Prompt (Windows), Terminal (Mac/Linux) — bukan dengan klik tombol atau ikon di layar.
Cara membuka Command Prompt di Windows:
Tekan: Windows + R Ketik: cmd Tekan: Enter
Contoh menjalankan program scanner:
C:Tools> scan-hex.exe --start 20000000 --end 3fffffff --target 13zb1hQbWVsc2S7ZTZnP2G4undNNpdh5so
Kenapa program scanner tidak punya tampilan grafis?
Struktur command yang umum:
nama-program.exe [opsi] [nilai]
─────────────── ───────────── ──────────────────────────
scan-hex.exe --start 20000000000000000
--end 3ffffffffffffff
--target 13zb1hQbWVsc2S7ZTZnP2G4undNNpdh5so
--threads 8
--output hasil.txt
Setiap program punya opsinya sendiri. Baca file README.txt atau jalankan nama-program.exe --help untuk melihat daftar lengkap opsinya.
Bitcoin Puzzle adalah sebuah tantangan kriptografi yang dibuat pada tahun 2015 oleh seseorang anonim. Caranya sederhana namun brilliant:
Tujuan sebenarnya bukan sekadar "hadiah" — melainkan untuk membuktikan betapa luasnya ruang kunci Bitcoin. Puzzle level rendah (1-30 bit) mudah dipecahkan dalam hitungan detik. Puzzle level tinggi (66, 130, 256 bit) butuh waktu ribuan hingga jutaan tahun bahkan dengan superkomputer.
Ini adalah bukti nyata bahwa Bitcoin aman secara kriptografi.