5 soruda blok zinciri – 4: Zincire yeni bloğu kim ekleyecek?

Cem Say
5 soruda blok zinciri – 4: Zincire yeni bloğu kim ekleyecek?

Blok zinciri yazı dizimizin bu bölümünde, kopyaları on binlerce bilgisayarda tutulan veri tabanına yeni bir bloğun nasıl eklendiğini göreceğiz.

“Ali, Veli’ye 3 Bitcoin yolladı” gibilerden işlem bilgilerinin (istenirse kullanıcıların gerçek isimleri kullanılmadan) tüm ağa duyurulduğunu daha önce görmüştük. Böyle bir duyurunun yapılması işlemin o anda gerçekleştiği anlamına gelmiyor. Paranızın yerine ulaştığından emin olmanız için işlem bilginizin (genelde başkalarınca duyurulmuş başka birkaç işlem bilgisiyle birlikte) bir bloğa yazılmasını, o bloğun adının hesaplanarak zincire eklenmesini, hatta (bir sonraki yazıda göreceğimiz nedenlerden) işi sağlam tutmak için onun da ardına birkaç bloğun daha eklenmesini beklemelisiniz.

Zincire eklenecek her yeni blok için yeni bir ad hesaplandığından söz etmiştik. İşte bu ad bir kriptografik özüt olacak. (Kriptografik özütlerin ne olduğunu hatırlamak için bir önceki yazıya göz atabilirsiniz.) Her yeni blok, o bloktan bir önceki (yani halihazırdaki zincirin sonundaki) bloğun adını, kullanıcılarca duyurulmuş ve henüz zincire eklenmemiş bir dizi işlem bilgisini, bu bloğu üretmeyi başaran madencinin ödülü olacak sanal paranın yaratılış bilgisini ve “joker” diyeceğim (ne olduğunu az sonra göreceğimiz) bir diğer sayıyı içeriyor. Bloğun adı da bu içeriğin bütününü oluşturan metnin kriptografik özütü olacak. Önceki yazılarda kriptografik özütlerin hızlıca hesaplanabildiklerini, ad hesaplama işininse zor olmasını istediğimizi belirtmiştim.


Bu zorluğu sağlamak için blok adlarının uyması gereken ek bir şart koyuyoruz, mesela ilk 30 rakamlarının 0 olması gibi. Bu şart işi değiştiriyor, çünkü hatırlarsanız bir metnin kriptografik özütü rastgele seçilmiş gibi görünen 0 ve 1 rakamlarından oluşan bir karışım oluyor.

Görünürdeki bu rastgelelik nedeniyle tipik bir metnin özütünün ilk rakamının 0 olma ihtimali 1/2, ilk iki rakamın ikisinin birden 0 olma ihtimali 1/4, ilk üçününki 1/8 oluyor. Yani ilk 30 rakamın da 0 çıkma ihtimali, hilesiz bir paranın üst üste 30 kere atılıp 30’unda da yazı çıkması ihtimaline eşit, bu da bir milyarda birden az bir olasılık.

Blokta “joker” diye bir sayı olacağından söz etmiştim ya? Bloğun içindeki her değer gibi o sayı da özütü etkiliyor. Bloğun geri kalanını aynı tutup sadece jokerini değiştirirseniz özütü çok değişik (ve yine rastgele yazılmış izlenimi veren) başka bir sayı oluyor. Madencilerin blok üretirken yaptıkları işlem, joker için art arda bir sürü (örneğimizde, belki yüzlerce milyon) değer deneyip oluşan blokların özütlerini hesaplayarak istenen “ilk 30 rakam 0” şartına uygun bir ad çıkartmaya çalışmak. Tek bir bilgisayarın böyle bir bulmacayı çözmesi ortalamada çok uzun sürer, ama bir değil, on binlerce madenci bu işi yapmak için aynı anda çalışıyorlar, ve problemin zorluk seviyesi (bin kat daha zorlaştırmak için 30’u 40 yapabilirsiniz örneğin) kabaca her on dakikada bir ağdaki bilgisayarlardan birinin bir çözüm bulabileceği şekilde sürekli ayarlanıyor.

Bir madenci, hazırladığı paketin aranan şarta uygun bir özütünün olmasına el veren bir joker bulduğunda hemen bloğunu herkese duyuruyor. Ağda kimse kimseye güvenmediği için, bu mesajı alan herkes onu önce bir kontrol ediyor. Eğer yayımlanan bloktaki işlemler geçerliyse, yani imzalar tutuyorsa, harcama yapanların harcadıkları şeylerin gerçek sahipleri oldukları blok zincirinde yazılı geçmiş kayıtlardan teyit edilebiliyorsa ve bu blok içeriğine bu joker değeri eklenip kriptografik özüt hesaplandığında gerçekten bu madencinin duyurduğu blok adı çıkıyorsa o zaman blok sınavı geçiyor ve kurallara göre herkesin böyle bir bloğu kabul edip kendi bilgisayarındaki zincirin sonuna eklemesi gerekiyor.

Peki ama neden bunu yapsınlar? Eğer herkes kendi çıkarını önemsiyorsa, diyelim bir madenci bileğinin hakkıyla yeni bir blok üretmeyi başardığında yukarıda anlattığım kurala uymayıp kendi denemelerini sürdüren, neden sonra bulduğu bir jokerle kendi bloğunu tamamlayıp “Bakın, ben buldum!” deyip kendi zincirini ona göre uzatan madenciler olursa, ya da bir dolandırıcı önceden duyurup karşılığında bir mal satın aldığı 5 Bitcoin’lik bir ödeme kaydının hiç yer almadığı başka bir blok üretip zinciribu yeni sürümünü kullanarak aynı 5 Bitcoin’i tekrar harcamaya kalkarsa?

Yani insanlar herkeste zincirin aynı kopyasının bulunması için hazırlanan bu kural kitabına niye uysunlar ki? Bu sorunun cevabını bir sonraki yazıda vereceğiz.

Cem Say / [email protected]


Cem Say

1987'den beri Boğaziçi Üniversitesi Bilgisayar Mühendisliği Bölümü'nde çalışıyor. Çalışmaları Yapay Zeka ve Kuramsal Bilgisayar Bilimi üzerine. Sahte dijital deliller üzerine incelemeleri var. Bilimkurgu, uzay yolculuğu, seçim hileleri ve başka bir çok konuya da meraklı.