Hash – Bitcoin’in Yapboz


Önceki yazıda Bitcoin sisteminin arkasındaki fikirleri açıklamıştık, ancak bir sorun açıklanamadı: Bitcoin madencilerinin sürekli olarak çözmeye çalıştığı bu kanlı zor bulmaca nedir??

Bitcoin sisteminde madencilerin sürekli rekabet halinde olduklarını hatırlayın: Yapbozu ilk kim çözerse, blok zincirine yeni bir blok ekleme onurunu kazanacak ve biraz para kazanacak. Bu nedenle, madenciler bulmacayı çözen ilk kişi olmak için ateşli bir şekilde çalışıyorlar. Aşağıdaki bölümde aşağıdaki soruları ele alacağız:

  • Bu bulmaca tam olarak nedir?
  • Bitcoin sistemine nasıl entegre edilir??

Bulmaca - Kriptografik Karma Bulmaca

"Kriptografi" kelimesinden korkmayın, bu bağlamda, "karma" bulmacanın kriptografi dünyasıyla ilgili olduğu anlamına gelir, yani kırılmaz sistemler oluşturmak.

Belki bir karma bulmaca için en iyi gerçek dünya benzetmesi bir parmak izi.

Mavi arka plan üzerinde parmak izi

Size bir parmak izi örneği verildiğini ve bu parmak izinin ait olduğu kişinin yüksekliğini, ağırlığını ve genel görünümünü keşfetmeniz istendiğini düşünün. Sen ne yapardın?

Biraz daha zorlaştırmak için, parmak izleri ve diğer insan özellikleri (saç rengi gibi) arasında bir ilişki olmadığını varsayalım, bu yüzden bu parmak izinin en iyi arkadaşınızdan gelip gelmediğini test etmenin tek yolu, parmak izini almak ve diğeriyle karşılaştırmaktır..

O zaman en iyi seçiminiz, dünyadaki her insandan parmak izi almak ve bir eşleşme bulana ve duruncaya kadar söz konusu parmak iziyle karşılaştırmak olacaktır. Şanssız olmanız durumunda, doğru kişi kontrol ettiğiniz son kişi olacaktır, bu da onu sonraki 13.555 yıl boyunca aramaya devam edeceğiniz anlamına gelir ve dakikada bir kişiyi kontrol ettiğiniz varsayılır (ve Dünya nüfusu yaklaşık 7.125 milyar insanlar). Eğer şanslıysanız, o kişiyi o zamanın sadece yarısı için beklemeniz gerekir, yaşasın! Kötü haber ah?

Şimdi hash bulmacamıza geri dönelim. Karma bir bulmacada, size verilen parmak izi, “köpek” gibi bir karakter listesidir (buna bir kelime diyelim), daha sonra göreviniz doğru kişiyi bulmaktır (bizim durumumuzda da bir kelimedir) bu parmak izini üretti. Bu amaçla, yapabileceğiniz tek şey (bazı uzunluklarda) olası tüm basamak kombinasyonlarını tek tek denemektir..

kripto

(Görüntü kaynağı: https://blog.varonis.com/the-definitive-guide-to-cryptographic-hash-functions-part-1/)

Kavramsal olarak, içine her rakam koyduğunuzda, diğer rakam kombinasyonlarının bir çıktısını üreten bir makineniz var. Bu makine hakkında hiçbir şey bilmiyorsunuz ve sihir gibi çalışıyor - koyduğunuz karakterler ile ürettiği karakterler arasında herhangi bir korelasyon görmüyorsunuz. Gözlemlediğiniz tek kural, makineye kaç karakter koyarsanız koyun, üretilen çıktının her zaman aynı uzunlukta olması.

Küçük bir teknik: Makine tarafından kullanılan karakterler (hem girdiniz hem de çıktısı) yalnızca 0-9 arası rakamlar ve a-f altı harfinden oluşur. Bu, giriş veya çıkışın her karakterinin 16 karakterden biri olabileceği anlamına gelir.

Bulmaca aslında bir kelimedir (karakter listesi), makinenin çıktısını temsil eden A olarak adlandırın, bunu çözmek için göreviniz doğru girişi (başka bir kelime) bulmak, iti B olarak adlandırın. B makineye A çıktı olarak A alacak.

Basit bir durumdan başlayarak, makinenin tek bir karakterin çıktılarını ürettiğini varsayalım. Bu, yalnızca 16 farklı olası çıkış olduğu anlamına gelir. Örnek olarak, puzzle d ’karakterine (bulmaca olarak) sahip olduğunuzu ve makine, eklenen her karakterin farklı bir çıktı karakterine yol açacak şekilde çalıştığını varsayalım. Böylece, tüm olası 0-9 ve a-f karakterlerini denerseniz, eşleşmeyi, yani makineye yerleştirildiğinde ‘d’ karakterini çıktı olarak üreten karakteri bulacaksınız. Özellikle en az 16 karşılaştırma yapılması gerekmektedir. Tamamen emin bir eşleşme bulunacağını.

Bunu biraz daha karmaşık hale getirirken, önceki örnekte olduğu gibi, makinenin tek bir karakter yerine 2 karakterlik bir çıktı ürettiğini düşünün. Bu, 16X16 = 256 farklı olası çıkış olduğu anlamına gelir. Bu nedenle, örneğin '4c' gibi bir bulmaca verildiğinde, garanti etmek için 2 karakterin (yani '00', '01'… 'fd', 'fe', 'ff') tüm olası girişlerini denemeniz gerekir. başarı.

Makinenin çıktı uzunluğunu tek bir karakterle artırmanın, yapmanız gereken deneme sayısını bir büyüklükte artırdığına dikkat edin (örneğimizde 16 faktör!). Böylece, tek bir karakterin çıktısı 16 denemeye, 2 karakterin çıktısı 256 denemeye, 3 karakterin çıktısı 4096 denemeye yol açar vb..

Peki, "büyük anlaşma nedir?" Diye sorabilir. Bilgisayarlar bu günlerde çok hızlı, tüm denemeleri saniyeler içinde hesaplayacak bir yazılım oluşturabilirsiniz!

Deneme sayısının üstel yol! Bu, x karakter çıktısı için x16 denemeleri yapmanız gerektiği anlamına gelir! 40 karakterlik bir çıktı için 1461501637330902918203684832716283019655932542976 deneme yapmanız gerekir! Bu sayı o kadar büyük ki, hiçbir modern bilgisayar güneş sisteminin çöküşüne kadar sürekli çalışsa bile bu sayıda deneme yapamaz..

Hala karma bulmacanın zor olduğuna ikna olmuyorsanız, bunu denemek ve aşağıdaki bulmacanın çözümünü bulmak isteyebilirsiniz: SHA1 makinesine koyduğunuzda hepsinin bir çıktısını elde ettiğiniz karakterlerin bir listesini bulun sıfır karakter (yani '000000…'). Makine sha1-online.com adresinde mevcuttur. İyi şanslar ��

Bitcoin Bağlantısı

Her kısa sürede (genellikle 10 dakika), tek bir 'madenci' (rauntun galibi) tarafından 'blok zincirine' tek bir ‘blok’ eklendiğini hatırlayın (önceki gönderiden). Bu bloğu ekleyen madenci, karma bulmacanın çözümünü bulan ilk kişi. Bu bulmacayı anlamak için bir bloğun nasıl göründüğünü bilmemiz gerekir. Ayrıntılar takip et.

Kısaca, blok zincirindeki bir blok aşağıdakileri içeren bazı veri yapısıdır:

  1. Bir nonce, bu çözümün çekirdeğidir, bloğun madenciye işlem ücretini veren kısmı.
  2. Önceki bloğa referans - bu, tüm işlemlerin geçmişini takip edebilmek için gereklidir, her blok selefine atıfta bulunur, bu şekilde ilk bloğa kadar tarihe geri dönebilir (blockchain'de işlem geçmişini takip edebilirsiniz .bilgi)
  3. Bu blok blok zincirine eklenirse işlenecek tüm işlemlerin listesi.

Aşağıdaki şekilde bu 3 özelliği görebilirsiniz: nonce (son sararmış satırda), başvuru ('önceki blok karması') ve gri satırlardaki işlemlerin listesi (şeklin vurgulanan sağ tarafı açıklanır) yakında).

blok diyagramı-ghash

(resim kaynağı: http://www.righto.com/2014/09/mining-bitcoin-with-pencil-and-paper.html)

Belirtildiği gibi, madenciler bulmacayı çözecek doğru nonce'yi arıyorlar. Önceki soruda açıklanan karma bulmaca bir özel makinenin çıktı olarak ürettiği karakterlerin listesi, onu çözmek için bunu üreten bir girdi bulması gerekir özel çıktı.

Bununla birlikte, bitcoin sisteminde hash bulmacası biraz daha kolaydır: Madencinin belirli bir çıktıyı takip etmek yerine, büyük bir izin verilen çıktı setinden çıktı üreten bir girdi bulması gerekir. Yani, bir bulmaca, ilk 16 karakterinin ‘0 olması için karakterlerin bir listesi olabilirken, karakterlerin geri kalanında herhangi bir sınırlama yoktur, herhangi bir şey olabilirler. Bu bulmacayı çok daha kolay hale getirse de, çözülmesi zaman ve enerji tüketen bir sorundur. Yukarıdaki şekilde, madenci bulmacayı çözmek için birçok deneme gerçekleştiriyor, her denemede değiştirilmesine izin verilen tek alan nonce. Her denemede, madenci sadece seçtiği nonce'yi, blok zincirine eklemek istediği işlem listesini ve bir önceki bloğa referansı bir araya getirir, daha sonra SHA1 makinesine girer. SHA1 makinesinin çıktısı 16 ‘0’ karakterle başlıyorsa, bulmacayı çözdü ve oyunu kazandı.

Umarım okumaktan zevk alırsın, bir sonraki yazıda görüşürüz!

Brayan Jackson
Brayan Jackson Administrator
Sorry! The Author has not filled his profile.
follow me