Keyspace English

Bitcoin puzzle nedir?

Ocak 2015’te birisi, özel anahtarları bilerek giderek büyüyen aralıklara sınırlanmış 256 adrese küçük miktarlarda bitcoin gönderdi. Oluşturanın kendi ifadesiyle bu, anahtar aramada gelinen noktayı ölçmek için kaba bir ölçüm aracıydı. Aradan on yıl geçti; deney hâlâ sürüyor ve belli bir noktadan sonrası hâlâ çözülmedi.

Her şeyi başlatan işlem

15 Ocak 2015’te tek bir Bitcoin işlemi, yeni oluşturulmuş 256 adrese küçük ve özenle kademelendirilmiş miktarlar gönderdi. İlk adres çok küçük bir çarpanla 1 satoshi aldı, sonraki biraz daha fazla ve liste boyunca böyle devam etti. İşlemi dikkat çekici kılan para değildi — toplam yaklaşık 32 BTC’ydi — bu adreslerin ardındaki özel anahtarlardı. Rastgele değillerdi. Bir numaralı anahtar 1’di. İki numaralı anahtar 2–3 aralığındaydı. On numaralı anahtar 512 olasılık arasındaydı. Yüz altmış numaralı anahtar ise yaklaşık 7,3 × 10^47 olasılık arasında.

Oluşturan kişi iki yıl sessiz kaldı, sonra 2017’de Bitcointalk’ta bir açıklama paylaştı. Gizli mesaj ya da kurnaz bir numara yoktu; kendi ifadesiyle adresler, topluluğun anahtar aramayı zaman içinde ne kadar ileri taşıyabildiğini izlemenin bir yoluydu. Herkes, en son hangi puzzle’ın düştüğüne bakarak ilerlemeyi ölçebilirdi.

Aralıklar neden ikiye katlanıyor

Yapının kendisi işin özü. #n puzzle’ı anahtarını 2^(n−1) ile 2^n−1 aralığına hapseder; böylece her puzzle bir öncekinin tam iki katı aday anahtar içerir. Bu, temiz bir logaritmik zorluk ölçeği verir: #65 yerine #66’yı çözmek, oraya hangi donanım veya algoritmayla ulaşmış olursanız olun, tam olarak bir bitlik ek arama kapasitesi demektir.

Aynı yapı acımasız bir duvar da üretir. #70’ten #80’e sıçrama 1.024 kat, #70’ten #100’e sıçrama yaklaşık 1,07 milyar kattır. Buna karşılık ödüller kabaca puzzle numarasıyla orantılı belirlendi — #71’de 7,1 BTC, #160’ta 16 BTC — yani yukarı çıktıkça iş birimi başına ödül çöker. Ekonomik olarak akılcı hedef her zaman çözülmemiş en küçük puzzle’dır; ilginin neredeyse tamamının #71’de toplanmasının nedeni budur.

Gerçekte neler çözüldü

1’den 70’e kadar tüm puzzle’lar düştü; ayrıca #75, #80, #85, #90, #95, #100, #105, #110, #115, #120, #125 ve #130. Bu son grup alışılmadıktır: bu adresler bir noktada harcama işlemi yaptı ve açık anahtarlarını açığa çıkardı; açığa çıkmış bir açık anahtar ise problemi tümüyle değiştirir. Çözücü, anahtar uzayını kaba kuvvetle taramak yerine Pollard Kangaroo algoritmasını çalıştırıp işi kabaca karekök mertebesinde bitirebilir — 2^129’luk bir problemi 2^65’e yakın bir şeye dönüştürür. Yüzlü puzzle’lar çözülürken #71’in çözülmemiş kalmasının nedeni budur.

Kalan 78 puzzle hiç harcama yapmadı, dolayısıyla yalnızca açık anahtar özetleri biliniyor. Bunlarda karekök kısayolu yok. Yayımlanmış tek yaklaşım, tüm aralık üzerinde kaba kuvvet.

Bu sitedeki çözücü ne yapıyor

Motor, seçilen aralıktaki her aday özel anahtar k için secp256k1 eğrisi üzerinde k·G açık anahtarını türetir, 33 bayta sıkıştırır ve RIPEMD-160(SHA-256(açık anahtar)) hesaplar. Bu yirmi bayt puzzle adresinin HASH160 değerine eşitse, cevap k’dir.

Bunu doğrudan yapmak anahtar başına tam bir skaler çarpım demektir — her biri modüler ters içeren yaklaşık 256 nokta ikilemesi ve toplaması. Tarayıcı çözücüsünü mümkün kılan iyileştirme, bir aralığa girerken tek bir skaler çarpım yapmak, sonra aralıkta G’nin önceden hesaplanmış katlarını art arda ekleyerek ilerlemektir. Nokta toplama yine modüler ters ister, ama Montgomery’nin toplu ters alma yöntemi 4.096 ayrı tersi tek bir terse artı her biri için üç çarpmaya indirir. Buna, sabit boyutlu girdilerine göre özelleştirilmiş ve hiç bellek ayırmayacak biçimde yazılmış SHA-256 ile RIPEMD-160 rutinleri eklenince anahtar başına maliyet yaklaşık 1,6 mikrosaniyeye düşer — bariz uygulamadan kabaca yüz kat hızlı.

Beklentiler üzerine bir not

Bu mühendisliğin hiçbiri temel tabloyu değiştirmez. Çekirdek başına saniyede yarım milyon anahtar, JavaScript için iyi bir rakam ve 2^70 karşısında anlamsız bir rakamdır. Bu çözücüyü çalıştırmanın dürüst nedeni, soyut bir zorluğu somutlaştırmasıdır: sayacın tırmanışını, taranan aralık yüzdesinin sıfıra çakılı kalışını izleyebilir ve üstel ölçek konusunda hiçbir okumanın vermediği bir sezgi geliştirebilirsiniz.

160 Bitcoin puzzle’ın tamamı → · Sık sorulan sorular →