5 soruda blok zinciri – 3: Birbirine güvenmeyen binlerce kişi nasıl işbirliği yapabilir?

Cem Say
5 soruda blok zinciri – 3: Birbirine güvenmeyen binlerce kişi nasıl işbirliği yapabilir?

Kriptopara Bitcoin için icat edilen, ama çok daha geniş ve çarpıcı uygulamalarının da olabileceği şimdiden görülen “blok zinciri” veri yapısını anlatmaya devam ediyoruz. Geçtiğimiz haftalarda, kopyaları on binlerce bilgisayarda tutularak merkezî bir merciye tabi olma zorunluluğunu ortadan kaldıran bu yapının art arda eklenen veri bloklarından oluştuğunu, her bloğun içine kendisinden önceki bloğun adının da yazıldığını, böylece mesela Ali’nin kaç Bitcoin’i olduğunu merak eden bir kişinin tek yapması gerekenin sondan başa bütün zinciri tarayarak Ali’nin tarih boyunca kimden ne kadar alıp ne kadar verdiğini okumak olduğunu görmüştük.

Hâlâ her bilgisayarın her zaman blok zincirinin hep aynı kopyasını tutmasını, birbirini tanımayan on binlerce kişinin bilgisayarlarında bu işi, hem de bu dediğimiz kurallara uygun olarak yapmalarını nasıl sağlayacağımızı söylemedik. Aslına bakarsanız, yukarıda bahsettiğimiz blokları ağdaki binlerce bilgisayardan hangisinin hazırladığını da söylemedik. Tek bir bilgisayara bu görevi vermek “merkez”i yok etme fikrimize temelden karşı değil mi?

Çözüm şu: Zincire eklenecek bir sonraki bloğu hangi bilgisayarın üreteceği bir yarışmayla belirleniyor. Yarışmayı kazanan bilgisayarın sahibi, bundan bir çıkar sağlıyor (örneğin Bitcoin ağında bu işi yapan – ve “madenci” diye anılan – bilgisayarlar başarılı olduklarında sahiplerinin hesabına hem yeni ödül Bitcoin’leri, hem de bu blokta kayda geçen işlemleri yapanların belirtmiş olabilecekleri “işlem ücretleri” geçiyor) ve ağdaki herkes mantıken o kazananın ürettiği bloğu (kontrol ettikten sonra) kendi bilgisayarındaki zincire ekleyip çalışmaya devam etme eğiliminde oluyor, çünkü bu oyunun kuralları işlemci gücünü onlara uymaya harcayanların hile yapmaya çalışanlardan daha çok “para” kazanacağı şekilde ayarlanmış. İşte bu nedenle ağın büyük çoğunluğundaki bilgisayarlar hep aynı veri tabanına sahip oluyor.


Bu harika düzenin kurulup işleyebileceğine ikna olmak için birkaç matematiksel tanım gerekecek. Buyurun: Kriptografik özüt fonksiyonları bilgisayar programlarına verilen bilgiye “girdi”, programın cevaben çıkardığı bilgiye de “çıktı” dendiğini hatırlayalım. “Özüt fonksiyonu” dediğimiz şey, girdi olarak herhangi bir metni verebileceğiniz, verdiğiniz metinlere karşılık gelen çıktılar olarak da size hep aynı sabit uzunlukta (diyelim ki hep 256 harf boyunda) metinler döndüren hızlı bir programdır. (Bilgisayarcılıkta sadece “bit” adı verilen 0 ve 1 rakamlarını kullanarak her şeyi ifade edebiliriz, özütlerimizi de bit dizileri olarak düşünün.) Girdi olarak aldığı M metni için programın verdiği çıktı metnine “M’nin özütü” denir. Fonksiyonunuzun iki farklı girdi metni için aynı özütü döndürmesi olayına “çarpışma” denir, ve iyi özüt fonksiyonlarının olabildiğince az çarpışmaya yol açması istenir.

Buraya kadar anlattığım, özüt fonksiyonuydu. Peki bu ismin önüne şu korkunç “kriptografik” sıfatını koymak ne anlama geliyor?

Bazı programların verdikleri çıktıya bakarak almış oldukları girdiyi kolayca hesaplayabilirsiniz. Mesela görevi kelimeleri ters yüz etmek olan bir program “CAT” çıktısını verdiyse, girdisinin “TAC” olduğunu rahatça bulabiliriz. Bazı programlar içinse ilgilendiğimiz bir metni çıktı olarak çıkartacak bir girdiyi bulmak çok zordur, hatta aklımıza bütün olası girdileri teker teker programa verip denemekten başka bir yol gelmez. İşte, “tersinin” hesaplanmasının bu anlamda zor olduğu düşünülen özüt fonksiyonlarına “kriptografik özüt fonksiyonu” denilir.

İyi bir kriptografik özüt fonksiyonu aldığı girdiği öyle karışık bir şekilde çıktıya dönüştürür ki, ona verilen bir metnin özütü (aslında kesin kurallara göre hesaplanmış olsa da) sanki o 256 rakamın tüm olası kombinasyonları arasında piyango çekimiyle belirlenmiş izlenimi verir.

İşte bu matematiksel özelliklerden yararlanarak blok zincirine yeni bloğu kimin ekleyeceğini belirleyen yarışmanın kurallarını bir sonraki yazıda anlatacağım.

Cem Say / sayster@gmail.com

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ı.