Blockchain Hash Fonksiyonu

Blockchain yapılan her işlemde hash fonksiyonu ile şifrelenir ve korunur. Bu yazıda blockchain ağının bilgileri nasıl şifreleyip güven altına aldığını anlatacağım.

Hash fonksiyonu, herhangi bir uzunlukta bir girdi dizesi (sayılar, alfabeler, medya dosyaları) alır ve onu sabit bir uzunluğa dönüştürür. Sabit bit uzunluğu, kullanılan hash işlevine bağlı olarak (32-bit veya 64-bit veya 128-bit veya 256-bit gibi) değişebilir. Sabit uzunluktaki çıktıya karma denir. Bu hash aynı zamanda bir hash algoritmasının kriptografik yan ürünüdür. Bunu aşağıdaki şemadan anlayabiliriz.

blockchain hash fonksiyon

Karma algoritmanın belirli benzersiz özellikleri vardır:

  1. Benzersiz bir çıktı (veya karma) üretir.
  2. Tek yönlü bir fonksiyondur.

Bitcoin gibi kripto para birimleri bağlamında, kriptografik karma işlevinin özelliklerini kullanır. Bir kriptografik karma, belirli bir miktarda verinin bir özeti veya dijital parmak izleridir. Kriptografik hash fonksiyonlarında, işlemler girdi olarak alınır ve sabit büyüklükte bir çıktı veren bir hash algoritması üzerinden yürütülür.

SHA-256

Bir Bitcoin’in blok zinciri, SHA-256 (Güvenli Karma Algoritması) karma algoritmasını kullanır. 2001 yılında ABD’de Ulusal Güvenlik Ajansı (NSA) tarafından SHA-256 Hashing algoritması geliştirildi.

Hash süreci nasıl işliyor?

Bu hash fonksiyonu için Anders Brownworth tarafından geliştirilmiş bir program kullanacağız. Bu programa aşağıdaki linkten ulaşabilirsiniz.

Anders Brownworth Hash Programı: https://anders.com/blockchain/hash

sha256 hash

Data bölümüne herhangi bir karakter yazarsak, hash bölümünde ona karşılık gelen kriptografik hash’i gözlemleyeceğiz.

Örneğin: Data bölümüne girdik: Deneme mesaj

İlgili Hash’i üretecektir:

7b79e3992970b41194673ead431dc87ab83f2f1d95a18e89e1291306e5b5ba90
sha256 hash ornek

Şimdi metni değiştirirsek: “Deneme mesaj” yerine  “deneme mesaj

Karşılık gelen Hash’i bulacaksınız:

8109063f2e36364be88f365c00f87ba8e7f1e74236c9b3d727ceacb4c8339c03

Yukarıda, sadece ilk karakter durum cümlesini büyük “D” den küçük “d” ye değiştirdiğimizi ve Hash değerinin tamamını değiştireceğini görebilirsiniz.

  • Not: Bir data kısmına aynı metni tekrar yazarsak hep aynı çıktıyı verecektir. Bunun nedeni, o kişinin belirli miktarda verisinin bir mesaj özetini oluşturmanızdır.

Hash işlevi tek yönlü bir işlev olduğundan, oluşturulan karmadan tüm metni geri almanın bir yolu yoktur. Bu, anahtarı kullanarak bir şeyi şifreleyebileceğiniz ve şifre çözmeyi kullanarak mesajın orijinal biçimine şifresini çözebileceğiniz şifreleme gibi geleneksel şifreleme işlevlerinden farklıdır.

Blockchain Blok Şifreleme

Bu bölümde, bir Blockchain içinde bir blok oluşturmak için SHA-256’nın nasıl uygulandığını öğreneceğiz. Burada Bitcoin, Blockchain bağlamında ve bunun madencilerin rolüyle nasıl bağlantılı olduğunu anlayacağız.

Aşağıdaki resimde bu bloğun bir blok numarası, veri alanı, onunla ilişkili kriptografik hash ve bir Nonce’tan oluştuğunu görebilirsiniz.

block hash

Bu hash’in başında dört sıfır olduğunu görürüz. Baştaki dört sıfır, bloğun geçerli olup olmadığını açıklar. Pratik amaçlar için, bu hash’in nonce’ye karşılık geldiğini ve blok numarasının mevcut verilere karşılık geldiğini göreceksiniz. Dört sıfıra sahip olduğundan, geçerli bir bloktur.

Veri bölümünde herhangi bir değişiklik yaparsak, aşağıdaki resimde gösterilebilecek tamamen farklı bir hash verecektir.

block hash harf

Yeni oluşturulan karmanın başında dört sıfır yoksa, geçerli bir blok olmayacaktır. Bloğu geçerli kılmak için bunu nonce adlı alanı kullanarak yapacağız .

Nonce, kriptografik bir iletişimde Bir Kez Kullanılan Sayı anlamına gelir, öyle ki bloğun hash’i belirli bir kriteri karşılar. Bu kriter, baştaki dört basamağı sıfır olması gereken bir karma oluşturulabilir. Böylece, oluşturulan karma 0000889787c9… gibi görünecektir .

Bir nonce, temel olarak, bu belirli bloğu size geçerli bir karma sağlamasını nasıl sağlayabileceğinizi belirleyen rastgele bir sayıdır. Bunu yapmanın yolu, nonce’yi manuel olarak değiştirmektir. Genel olarak, madenci 1 Nonce değeriyle başlar ve oluşturulan karma belirtilen kriteri karşılayana kadar bunu artırmaya devam eder. Bu nedenle, önde gelen dört sıfır ile istenen karma oluşturulana kadar birkaç yineleme alabilir. Bitcoin sisteminde bir blok oluşturmak için beklenen süre 10 dakikadır. Madenci başarılı bir şekilde bloğu kazdığında, o bloğu sistemde serbest bırakır ve onu zincirdeki son blok haline getirir. Böylece madenci ödüllendirilmiş olur.

Anders Brownworth Hash Programında resimdeki gibi mine butonuna tıkladığımızda geçerli bloğu verecektir. Bu blok, başlangıçta dört sıfırdan oluşan hash ile benzersiz bir nonce’ye sahiptir.

block hash harf sifre

Blok Hash’leri Blockchain’de Nasıl Çalışır?

Blockchain, verileri dijital olarak depolama kavramıdır. Bu veriler bloklar halinde gelir. Bu bloklar birbirine zincirlenir ve verileri değişmez kılar. Bir veri bloğu diğer bloklarla zincirlendiğinde, verileri bir daha asla değiştirilemez. Onu bir daha görmek isteyen herkesin kullanımına açık olacak ve blok zincirine eklendiği sırayla erişilebilir olacak. Bilgileri blok zincirine eklendikten sonra kimse değiştiremez.

Önceki bölümde, bloğun nasıl oluşturulacağını ve tüm sürece kriptografik hash bağlarının nasıl kurulacağını öğrendik. Burada, blok zincirinin tam bir blok zincirinin bütünlüğünü korumak için tüm bu kavramları birlikte nasıl kullandığını görebilirsiniz.

Aşağıdaki görüntüdeki gibi bir grup işlem verisi bloğu hayal edin .

blok zincileri
blokzincileri

Yukarıdaki görsellerde bloğun kronolojik sıraya göre toplandığını görebilirsiniz. Birinci bloktan sonra iki numaralı blok, ardından üç numaralı blok, ardından dört numaralı blok gelir ve buna istediğiniz kadar devam edebilirsiniz. Burada bir blok numarası alanıveri alanınonce alanıkarma değer alanı ve önceki alan olduğunu göreceksiniz. Önceki alan, önceki bloğun karma değeri alanına karşılık gelir.

Bir blok zincirindeki her bloğun bir sonraki bloğa kriptografik olarak bağlı olduğunu biliyoruz. Yukarıdaki örnekte, birinci bloktaki önceki alan sıfırdır, çünkü birinci blok önceki bir karma değerine sahip değildir, dolayısıyla değeri sıfırdır. İkinci blokta, önceki alanda, önceki blok karma değerine atıfta bulunan bir karma değeri olduğunu göreceksiniz. Bu işlem son bloğa kadar devam eder.

Şimdi herhangi bir bloktaki verilerin değiştirildiğini hayal edin. Diyelim ki 2 numaralı blokta değişiklik yaptık, 2 numaralı bloktaki veriler artık farklı ve blok madenciliği de yeni bir imza alıyor. Bu yeni veri kümesine karşılık gelen imza artık diğer bloklara zincirlenmiyor. Sadece 2 numaralı bloğu kırar çünkü hash artık geçerli değildir ve ondan sonra gelen her bir bloğu zincirin sonuna kadar geçersiz kılar. Bu blok zincirinin diğer kullanıcılarına, 2. bloktaki bazı verilerin değiştirildiğini ve blok zincirinin değişmez olması gerektiği için, tüm blokların hala birlikte zincirlendiği blok zincirinin önceki bir kaydına geri dönerek bu değişikliği reddederler. Blok zincirinin ana avantajı budur.