Öyleyse, gerçekten karma?

TLDR:

  1. Hashing, matematiksel bir işlev kullanarak bir metin dizesinden bir değer veya değerler üretmektir.
  2. Karma oluşturma, mesajın yalnızca belirli bir alıcıya yönelik olması durumunda mesaj iletimi sürecinde güvenliği etkinleştirmenin bir yoludur. Bir formül, iletimin güvenliğini kurcalamaya karşı korumaya yardımcı olan karma değeri oluşturur.

Blockchain Hashing’in nasıl çalıştığını bilmek önemlidir. Ancak bunu yapmak için öncelikle blok zinciri oluşturmaya giden temel ilkelerden birini anlamamız gerekiyor. Blockchain teknolojisi, geçen yüzyılın en yenilikçi ve çağ belirleyen keşiflerinden biridir. Son birkaç yıldır sahip olduğu etkiyi ve gelecekte sahip olacağı etkiyi görünce, bunu söylemek kesinlikle abartı değil. Ethereum ve Bitcoin gibi çeşitli kripto para birimlerinin nasıl çalıştığını anlamak için.

 Peki hash nedir?

Basit bir ifadeyle, hashing, herhangi bir uzunlukta bir girdi dizisinin alınması ve sabit uzunlukta bir çıktı verilmesi anlamına gelir. Bitcoin gibi kripto para birimleri bağlamında, işlemler girdi olarak alınır ve bir karma algoritma (hashing) aracılığıyla çalıştırılır.bitcoin SHA-256 kullanıyor) sabit uzunlukta bir çıktı verir.

Hashing işleminin nasıl çalıştığını görelim. Belli girdiler koyacağız. Bu alıştırma için SHA-256 (Secure Hashing Algorithm 256) kullanacağız..

Hashing Nedir? Blockchain Başlığının Altında

Gördüğünüz gibi, durumunda SHA-256, Girişiniz ne kadar büyük veya küçük olursa olsun, çıktının her zaman sabit 256 bit uzunluğunda olacaktır. Büyük miktarda veri ve işlemle uğraşırken bu kritik hale gelir. Yani temel olarak, çok büyük olabilecek girdi verilerini hatırlamak yerine, sadece hash’i hatırlayabilir ve takip edebilirsiniz. Daha ileri gitmeden önce öncelikle hashing fonksiyonlarının çeşitli özelliklerini ve bunların blockchain’de nasıl uygulandığını görmemiz gerekiyor.. 

Kriptografik hash fonksiyonları

Bir kriptografik karma işlevi, onu kriptografi için ideal kılan çeşitli özelliklere sahip özel bir karma işlevler sınıfıdır. Bir kriptografik hash fonksiyonunun güvenli olarak kabul edilebilmesi için sahip olması gereken belirli özellikler vardır. Onları birer birer inceleyelim.

Özellik 1: Belirleyici

Bu, bir hash işlevi aracılığıyla belirli bir girdiyi kaç kez ayrıştırırsanız ayrıştırın, her zaman aynı sonucu alacağınız anlamına gelir. Bu kritiktir çünkü her seferinde farklı karmalar alırsanız girdiyi takip etmek imkansız olacaktır..

Özellik 2: Hızlı Hesaplama

Karma işlevi, giriş karmasını hızlı bir şekilde döndürebilmelidir. Süreç yeterince hızlı değilse, sistem verimli olmayacaktır.

Özellik 3: Ön Görüntü Direnci

Görüntü öncesi direnç durumları, H (A) verildiğinde A’nın belirlenmesinin mümkün olmadığıdır, burada A girdi ve H (A) çıktı karmadır. “İmkansız” yerine “olanaksız” kelimesinin kullanıldığına dikkat edin. Orijinal girdiyi hash değerinden belirlemenin imkansız olmadığını zaten biliyoruz. Bir örnek verelim.

Diyelim ki bir zar atıyorsunuz ve çıktı, zardan gelen sayının karmasıdır. Orijinal numaranın ne olduğunu nasıl belirleyeceksiniz? Yapmanız gereken tek şey, 1-6 arasındaki tüm sayıların karmalarını bulmak ve karşılaştırmaktır. Karma işlevleri deterministik olduğundan, belirli bir girdinin karması her zaman aynı olacaktır, böylece karmaları kolayca karşılaştırabilir ve orijinal girdiyi bulabilirsiniz..

Ancak bu yalnızca belirli miktarda veri çok az olduğunda işe yarar. Büyük miktarda veriniz olduğunda ne olur? 128 bitlik bir karma ile uğraştığınızı varsayalım. Orijinal girişi bulmanız gereken tek yöntem, “kaba kuvvet yöntemi”. Brute-force yöntemi temelde rastgele bir girdi almanız, onu hash etmeniz ve ardından çıktıyı hedef hash ile karşılaştırmanız ve bir eşleşme bulana kadar tekrar etmeniz gerektiği anlamına gelir..

Peki bu yöntemi kullanırsanız ne olacak??

  • En iyi durum senaryosu: Cevabınızı ilk denemede alırsınız. Bunun gerçekleşmesi için cidden dünyanın en şanslı insanı olmalısın. Bunun olma ihtimali astronomik.
  • En kötü durum senaryosu: Cevabınızı 2 ^ 128 – 1 kez sonra alırsınız. Temel olarak, cevabınızı tüm verilerin sonunda bulacağınız anlamına gelir..
  • Ortalama senaryo: Ortada bir yerde bulacaksınız, yani temelde 2 ^ 128/2 = 2 ^ 127 kez sonra. Bunu perspektife koymak için, 2 ^ 127 = 1.7 X 10 ^ 38. Başka bir deyişle, çok büyük bir sayı.

Bu nedenle, kaba kuvvet yöntemiyle ön görüntü direncini kırmak mümkün olsa da, o kadar uzun sürüyor ki önemli değil.

Özellik 4: Girişteki Küçük Değişiklikler Hash’i Değiştirir.

Girişinizde küçük bir değişiklik yapsanız bile hash’e yansıyacak değişiklikler çok büyük olacaktır. SHA-256 kullanarak test edelim:

Hashing Nedir? Blockchain Başlığının Altında

Bunu görüyor musun? Girişin ilk alfabesinin durumunu değiştirmiş olsanız bile, bunun çıktı karmasını ne kadar etkilediğine bakın. Bu kritik bir işlevdir, çünkü bu hash özelliği, blok zincirinin en büyük niteliklerinden birine, değişmezliğine (bundan sonra daha fazlası) yol açar.

Özellik 5: Çarpışmaya Dayanıklı

H (A) ve H (B) ‘nin kendi hash’leri olduğu iki farklı giriş A ve B verildiğinde, H (A)’ nın H (B) ‘ye eşit olması mümkün değildir. Bunun anlamı, çoğunlukla, her bir girişin kendi benzersiz karma değerine sahip olacağıdır. Neden “çoğunlukla” dedik? “Doğum Günü Paradoksu” adlı ilginç bir konseptten bahsedelim.

Doğum Günü Paradoksu nedir?

Sokaklarda rastgele bir yabancıyla karşılaşırsanız, ikinizin de aynı doğum gününe sahip olma şansı çok düşüktür. Aslında, yılın tüm günlerinin doğum günü yapma olasılığının aynı olduğunu varsayarsak, başka bir kişinin doğum gününü paylaşma şansı 1/365, yani% 0,27’dir. Başka bir deyişle, gerçekten düşük.

Bununla birlikte, bir odada 20-30 kişiyi toplarsanız, aynı doğum gününü paylaşan iki kişinin olasılığı astronomik olarak artar. Aslında bu senaryoda aynı doğum gününü paylaşan 2 kişi için 50-50 şans var.!

Hashing Nedir? Blockchain Başlığının Altında

Resim kredisi: (YouTube)

Bu neden oluyor? Olasılıkta aşağıdaki gibi giden basit bir kural nedeniyledir. Bir olayın meydana gelmesi için N farklı olasılığa sahip olduğunuzu varsayalım, o zaman% 50 çarpışma şansına sahip olmaları için N rastgele öğenin kareköküne ihtiyacınız var..

Bu teoriyi doğum günleri için uygulayarak, 365 farklı doğum günü olasılığınız var, bu yüzden sadece doğum günlerini paylaşan iki kişinin% 50 şansı için rastgele seçilen insanları ~ 23 ~ olan Sqrt (365) ‘e ihtiyacınız var.

Hashing’de bunun uygulaması nedir?

2 ^ 128 farklı olasılığa sahip 128 bitlik bir karmanız olduğunu varsayalım. Doğum günü paradoksunu kullanarak, sqrt (2 ^ 128) = 2 ^ 64. Örnekte çarpışma direncini kırmak için% 50 şansınız var..

Gördüğünüz gibi, çarpışma direncini kırmak, ön görüntü direncini kırmaktan çok daha kolay. Hiçbir hash işlevi çarpışmasız değildir, ancak bir çarpışma bulmak genellikle çok uzun sürer. Dolayısıyla, SHA-256 gibi bir işlev kullanıyorsanız, H (A) = H (B) ise A = B olduğunu varsaymak güvenlidir..

Özellik 6: Bulmaca Dostu

Şimdi, bu büyüleyici bir özellik ve bu mülkün kripto para birimi üzerindeki uygulaması ve etkisi çok büyük (daha sonra madencilik ve kripto bulmacalarını ele aldığımızda daha fazlası). Önce özelliği tanımlayalım, ardından her terimi ayrıntılı olarak gözden geçireceğiz.

Her “Y” çıkışı için, k yüksek min-entropili bir dağılımdan seçilirse, H (k | x) = Y olacak şekilde bir x girdisi bulmak mümkün değildir..

Muhtemelen bu kafanın her yerine yayıldı! Ama sorun değil, şimdi bu tanımın ne anlama geldiğini anlayalım.

“Yüksek min-entropi” nin anlamı nedir?

Bu, değerin seçildiği dağılımın büyük ölçüde dağıldığı anlamına gelir, böylece rastgele bir değer seçmemizin ihmal edilebilir bir olasılığı vardır. Temel olarak, 1 ile 5 arasında bir sayı seçmeniz söylendiyse, bu düşük bir min-entropi dağılımıdır. Bununla birlikte, 1 ile bir gazilyon arasında bir sayı seçerseniz, bu yüksek bir min-entropi dağılımıdır..

“K | x” ne anlama geliyor?

“|” bitiştirmeyi gösterir. Birleştirme, iki dizeyi birbirine eklemek anlamına gelir. Örneğin. “MAVİ” ve “GÖKYÜZÜ” nü birlikte birleştirirsem, sonuç “MAVİ” olur.

Şimdi tanımı yeniden gözden geçirelim.

“Y” çıkış değeriniz olduğunu varsayalım. Geniş bir dağılımdan rasgele bir “k” değeri seçerseniz, k ve x’in birleştirme karmasının Y çıktısını verecek şekilde bir X değeri bulmak mümkün değildir..

Bir kez daha, “imkansız” kelimesine dikkat edin, imkansız değil çünkü insanlar bunu her zaman yapıyor. Aslında, tüm madencilik süreci bunun üzerine çalışıyor (daha sonra bunun üzerine).

Kriptografik hash fonksiyonlarına örnekler

  • MD 5: 128 bitlik bir hash üretir. ~ 2 ^ 21 karma sonrasında çarpışma direnci kırıldı.
  • SHA 1: 160 bitlik bir karma üretir. ~ 2 ^ 61 karmadan sonra çarpışma direnci kırıldı.
  • SHA 256: 256 bitlik bir karma üretir. Bu şu anda bitcoin tarafından kullanılıyor.
  • Keccak-256: 256 bitlik bir karma üretir ve şu anda ethereum tarafından kullanılmaktadır.

Hashing ve veri yapıları

Veri yapısı, verileri depolamanın özel bir yoludur. Bir blok zincirinin nasıl çalıştığını anlamak istiyorsanız kritik olan iki veri yapısı özelliği vardır. Onlar:

  1. İşaretçiler.
  2. Bağlı Listeler.

İşaretçiler

İşaretçiler, başka bir değişkenin adresini saklayan programlamadaki değişkenlerdir. Herhangi bir programlama dilinde genellikle normal değişkenler verileri depolar.

Örneğin. int a = 10, tamsayı değerlerini saklayan bir “a” değişkeni olduğu anlamına gelir. Bu durumda, 10 olan bir tamsayı değerini saklıyor. Bu normal bir değişkendir..

Ancak işaretçiler, değerleri saklamak yerine diğer değişkenlerin adreslerini saklayacaktır. Bu yüzden işaretçi olarak adlandırılırlar çünkü diğer değişkenlerin yerini tam anlamıyla işaret ederler..

Bağlı Listeler

Bağlantılı bir liste, veri yapılarındaki en önemli öğelerden biridir. Bağlantılı bir liste şöyle görünür:

Hashing Nedir? Blockchain Başlığının Altında

Her biri bir işaretçi aracılığıyla bir sonraki bloğa bağlanan verileri içeren bir blok dizisidir. İşaretçi değişkeni, bu durumda, içindeki bir sonraki düğümün adresini içerir ve dolayısıyla bağlantı yapılır. Gördüğünüz gibi, son düğümün bir boş gösterici var, bu onun hiçbir değeri olmadığı anlamına geliyor.

Burada dikkat edilmesi gereken önemli bir nokta, her bloğun içindeki işaretçi bir sonraki bloğun adresini içerir. Nişan alma bu şekilde elde edilir. Şimdi, listedeki ilk blok için bunun ne anlama geldiğini soruyor olabilirsiniz. İlk bloğun göstergesi nerede kalıyor?

İlk bloğa “oluşum bloğu” adı verilir ve işaretçisi sistemin kendisinde yer alır. Şuna benziyor:

Hashing Nedir? Blockchain Başlığının Altında

Resim izniyle: Coursera

“Hash işaretçisinin” ne anlama geldiğini merak ediyorsanız, oraya birazdan varacağız.

Şimdiye kadar tahmin etmiş olabileceğiniz gibi, blockchain yapısının dayandığı şey budur. Bir blok zinciri temelde bağlantılı bir listedir. Blockchain yapısının neye benzediğini görelim:

Hashing Nedir? Blockchain Başlığının Altında

Blok zinciri, verileri ve önceki bloğuna işaret eden ve dolayısıyla zinciri oluşturan bir hash işaretçisini içeren bağlantılı bir listedir. Hash işaretçisi nedir? Bir hash gösterici bir göstericiye benzer, ancak sadece önceki bloğun adresini içermek yerine, önceki bloğun içindeki verilerin karmasını da içerir. Bu küçük değişiklik, blok zincirleri inanılmaz derecede güvenilir ve çığır açan şeydir.

Bunu bir saniyeliğine hayal edin, bir hacker saldırısı 3’ü bloke eder ve verileri değiştirmeye çalışır. Karma işlevlerin özelliklerinden dolayı, verilerdeki küçük bir değişiklik karmayı büyük ölçüde değiştirecektir. Bu, blok 3’te yapılan herhangi bir küçük değişikliğin, blok 2’de depolanan hash’i değiştireceği anlamına gelir, şimdi de blok 2’nin verisini ve karmasını değiştirecek ve bu da blok 1’de vb. Değişikliklerle sonuçlanacaktır. . Bu, imkansız olan zinciri tamamen değiştirecektir. Blok zincirlerinin değişmezliğe tam olarak nasıl ulaştığı.

Peki bir blok başlığı neye benziyor?

Hashing Nedir? Blockchain Başlığının Altında

Bir blok başlığı şunları içerir:

  • Sürüm: Blok sürüm numarası.
  • Zaman: geçerli zaman damgası.
  • Mevcut zorluk hedefi. (Bununla ilgili daha sonra daha fazlası).
  • Önceki bloğun karması.
  • Nonce (buna daha sonra değineceğiz).
  • Merkle Kökü Karması.

Şimdi, Merkle Kökünün Hash’ine odaklanalım. Ama ondan önce, Merkle Ağacının ne olduğunu anlamalıyız..

Merkle Ağacı nedir?

Hashing Nedir? Blockchain Başlığının Altında

Resim İzniyle: Wikipedia

Yukarıdaki şema bir Merkle ağacının neye benzediğini göstermektedir. Bir Merkle ağacında, yaprak olmayan her düğüm, alt düğümlerinin değerlerinin karmasıdır..

Yaprak Düğümü: Yaprak düğümleri, ağacın en alt kademesindeki düğümlerdir. Yukarıdaki diyagrama göre, yaprak düğümler L1, L2, L3 ve L4 olacaktır..

Hashing Nedir? Blockchain Başlığının Altında

Alt Düğümler: Bir düğüm için, katmanının altındaki ve onu besleyen düğümler onun alt düğümleridir. Diyagramda, “Karma 0-0” ve “Karma 0-1” olarak etiketlenen düğümler, “Karma 0” etiketli düğümün alt düğümleridir..

Kök Düğüm: “En Üst Karma” etiketli en yüksek katmandaki tek düğüm, kök düğümdür.

Hashing Nedir? Blockchain Başlığının Altında

Peki bir Merkle Ağacının blok zincirlerle ne ilgisi var??

Her blok binlerce ve binlerce işlem içerir. Her bloğun içindeki tüm verileri bir dizi olarak saklamak çok zaman verimsiz olacaktır. Bunu yapmak, belirli bir işlemi bulmayı son derece külfetli ve zaman alıcı hale getirecektir. Ancak bir Merkle ağacı kullanırsanız, belirli bir işlemin o bloğa ait olup olmadığını öğrenmek için gereken süreyi büyük ölçüde kısaltacaksınız..

Bunu bir örnekle görelim. Aşağıdaki Merkle ağacını düşünün:

Hashing Nedir? Blockchain Başlığının Altında

Resim izniyle: Coursera

Şimdi, bu belirli verilerin bloğa ait olup olmadığını öğrenmek istediğimi varsayalım:

Hashing Nedir? Blockchain Başlığının Altında

Her bir hash’e tek tek bakmak ve verilere ait olup olmadığını görmek gibi zahmetli bir süreçten geçmek yerine, verilere giden hashlerin izini takip ederek basitçe izini sürebilirim:

Hashing Nedir? Blockchain Başlığının Altında

Bunu yapmak, harcanan zamanı önemli ölçüde azaltır.

Madencilikte Hashing: Kripto Bulmacaları.

“Madencilik” dediğimizde, temelde blok zincirine eklenecek yeni bir blok aramak anlamına gelir. Dünyanın dört bir yanından madenciler, zincirin büyümeye devam etmesini sağlamak için sürekli çalışıyorlar. Eskiden insanlar için sadece dizüstü bilgisayarlarını kullanarak madencilik yapmak kolaydı, ancak zamanla insanlar bilgisayar güçlerini toplamak ve daha verimli bir şekilde madencilik yapmak için maden havuzları oluşturmaya başladı.

Ancak bu bir sorun olabilirdi. Her kripto para birimi için bir sınır vardır, örn. Bitcoin için bu sadece 21 milyondur. Dışarıda sadece 21 milyon bitcoin var. Madencilerin devam etmesine izin verilirse, bu hızda var olan tüm bitcoinleri avlayacaklar. Üstelik, her bloğun oluşturulması arasında belirli bir zaman sınırı olması gerekir. Bitcoin için blok oluşturma arasındaki zaman sınırı 10 dakikadır. Blokların daha hızlı oluşturulmasına izin verilseydi, şu sonuçlara yol açar:

  • Daha fazla çarpışma: Daha fazla karma işlev oluşturulacak ve bu da kaçınılmaz olarak daha fazla çarpışmaya neden olacak.
  • Daha fazla öksüz blok: Çok sayıda madenci madencilikten fazla çıktıysa, aynı anda yeni bloklar bulacaklar. Bu, veya daha fazla bloğun ana zincirin parçası olmamasına ve öksüz bloklara dönüşmesine neden olacaktır..

Bu nedenle, blok oluşturmayı kısıtlamak için belirli bir zorluk seviyesi belirlenir. Madencilik bir oyun gibidir, bulmacayı çözersiniz ve ödüller alırsınız. Zorluğu ayarlamak, bu bulmacayı çözmeyi çok daha zorlaştırır ve bu nedenle daha fazla zaman alır. WRT bitcoins zorluk hedefi, bir grup sıfırla başlayan 64 karakterlik bir dizedir (SHA-256 çıktısı ile aynıdır). Zorluk seviyesi arttıkça bir dizi sıfır artar. Zorluk seviyesi her 2016 bloktan sonra değişir.

Madencilik süreci

Not: Burada öncelikle Bitcoin madenciliği hakkında konuşacağız.

Bitcoin madenciliği yazılımı blok zincirine yeni bir blok eklemek istediğinde, izlediği prosedür budur. Yeni bir blok geldiğinde, blokların tüm içeriği ilk olarak karma hale getirilir. Karma, zorluk hedefinden daha düşükse, blok zincirine eklenir ve topluluktaki herkes yeni bloğu kabul eder..

Ancak, bu kadar basit değil. Bunun gibi yeni bir blok almak için son derece şanslı olmanız gerekecek. Bu, nonce’nin geldiği yerdir. Nonce, bloğun hash’i ile birleştirilmiş keyfi bir dizedir. Bundan sonra, bu birleştirilmiş dizge tekrar hash edilir ve zorluk seviyesi ile karşılaştırılır. Zorluk seviyesinin altında değilse, o zaman nonce değiştirilir ve bu, sonunda gereksinimler karşılanana kadar milyonlarca kez tekrarlanmaya devam eder. Bu olduğunda, blok blok zincirine eklenir.

Özetlemek gerekirse:

  • Yeni bloğun içeriğinin karması alınır.
  • Karmaya bir nonce (rastgele dizge) eklenir.
  • Yeni dizeye yeniden hashing uygulanır.
  • Son hash daha sonra zorluk seviyesiyle karşılaştırılır ve gerçekte bundan daha az olup olmadığı görülür..
  • Değilse, o zaman nonce değiştirilir ve işlem tekrarlanır.
  • Evet ise, blok zincire eklenir ve halka açık defter güncellenir ve ekleme konusunda uyarılır..
  • Bundan sorumlu madenciler Bitcoin ile ödüllendiriliyor.

Hash fonksiyonlarının 6 numaralı özelliğini hatırlıyor musunuz? Bulmaca dostu?

Her “Y” çıkışı için, k yüksek min-entropili bir dağılımdan seçilirse, H (k | x) = Y olacak şekilde bir x girdisi bulmak mümkün değildir..

Yani, bitcoin madenciliği söz konusu olduğunda:

  • K = Nonce
  • x = bloğun hash değeri
  • Y = zorluk hedefi

Tüm süreç tamamen rastgeledir, hiçlerin seçilmesinin arkasında hiçbir düşünce süreci yoktur. Yazılımın hedeflerine ulaşana kadar rastgele dizeler üretmeye devam ettiği saf kaba kuvvettir. Tüm süreç, temelde şu anlama gelen Proof of Work protokolünü takip eder:

  • Bulmaca çözmek zor olmalı.
  • Ancak cevabı kontrol etmek herkes için kolay olmalıdır. Bu, sorunu çözmek için el altından yöntemlerin kullanılmadığından emin olmak için yapılır..

Hash rate nedir?

Hash rate, temel olarak bu hash işlemlerinin madencilik sırasında ne kadar hızlı gerçekleştiği anlamına gelir. Yüksek bir hash oranı, madencilik sürecine daha fazla insanın ve yazılım makinesinin katıldığı ve sonuç olarak sistemin sorunsuz çalıştığı anlamına gelir. Hash oranı çok hızlıysa, zorluk seviyesi artar. Karma oranı çok yavaş olursa, zorluk seviyesi azalır.

Sonuç – Hashing Nedir?

Hashing, blockchain teknolojisinin yaratılmasında gerçekten temel olmuştur. Biri blok zincirinin neyle ilgili olduğunu anlamak istiyorsa, hashing’in ne anlama geldiğini kesinlikle anlamalıdır..

Mike Owergreen Administrator
Sorry! The Author has not filled his profile.
follow me