3. İşlemler Olmaya Devam Eder
Zaman geçtikçe, sistemdeki daha fazla kişi başkalarına para transfer ihtiyacı hisseder. Bir işlem yapmak istediklerinde bunu herkese ilan ederler. Bir kişi ilanı duyduğunda, onu kendi sayfasında yazar.
Bu işlemler, herkesin elindeki sayfada boşluk kalmayana kadar devam eder. Bir sayfanın on işlem kaydedebileceğini varsayarsak, onuncu işlem gerçekleştiğinde herkesin elindeki sayfa tamamen dolmuş olur.
Şimdi sayfayı klasöre koyup yeni bir sayfa çıkarmanın ve yukarıdaki 2. adımdan itibaren işlemleri tekrarlamanın zamanı geldi.
4. Sayfayı Saklamak
Sayfayı klasörlerimize koymadan önce, sistemdeki herkesin kabul ettiği benzersiz bir anahtarla sayfayı mühürlememiz gerekiyor. Sayfayı mühürlememizdeki amaç, herkes klasörüne bu sayfayı koyduktan sonra hiç kimsenin bugün, yarın ya da bir yıl sonra bir değişiklik yapmayacağından emin olmaktır. Sayfa klasöre girdiğinde, mühürlü olarak daima klasörde kalacaktır. Ayrıca, herkes mühüre güveniyorsa, sayfanın içeriğine de güvenmek zorunda ve sayfanın mühürlenmesi, Blockchain yönteminin temel unsurudur.
[Jargon] Sayfayı güvenli hale getirmeye ‘madencilik‘ denir, ancak basit şekilde anlatabilmek için bunu ‘mühürleme‘ olarak adlandırmaya devam edeceğiz.
Daha önce üçüncü şahıslar ya da aracılar, bize kayıtlarının hiçbir şekilde değişmeyeceğine dair güvence verdiler. Bizimki gibi dağıtılmış ve merkezi olmayan bir sistemde ise bu mühürleme işlemi güven sağlayacaktır.
İlginç! O zaman sayfayı nasıl mühürleyeceğiz?
Sayfayı nasıl mühürleyebileceğimizi öğrenmeden önce, mühürlemenin genel olarak nasıl çalıştığını öğreneceğiz.
Sihirli Makine
Kalın duvarlarla çevrili bir makine düşünün. Makinenin sol tarafından içinde başka bir şey olan bir kutu gönderdiğinizde, makinenin sağ tarafından daha farklı bir şey içeren bir kutu çıkıyor.
[Jargon] Bu makineye “Hash Fonksiyonu” denir ancak şu an çok teknik konuşmaya hazır olmadığımız için bunu ‘Sihirli Makine’ olarak adlandıracağız.
Diyelim ki makinenin sol tarafında 4 rakamını gönderiyorsunuz ve sağdan şu kelime olarak çıkıyor: ‘dcbea‘.
4 rakamı, bu kelimeye nasıl dönüştü? Kimse bilmiyor. Dahası, bu geri dönüşü olmayan bir süreç. Makinenin sağından ‘dcbea’ sözcüğünün çıkması için sol taraftan neyle beslendiğini söyleyebilmek mümkün değil. Fakat 4 rakamını makineye verdiğiniz her işlemde, makine aynı kelimeyi ‘dcbea’ üretecektir.
Makineye başka bir sayı göndermeyi deneyelim. 26′ya ne dersiniz?
Bu sefer makine ’94c8e’ verdi. İlginç! Yani, makinenin ürettiği sözcükler rakamları da içerebilir.
Şimdi size şu soruyu sorarsam:
“Sağ tarafatan çıkan kelimenin ilk üç basamağının sıfır olması için (000ab, 00098 veya 000fa gibi) sol taraftan ne göndermeliyiz?”
Soruyu tekrar düşünün.
Daha önce size sağdan çıkan veriye bakarak makinenin sol tarafından ne gönderilmiş olduğunu hesaplayamayacağımızı belirtmiştim. Peki, bu şartlar altında yukarıda sorduğum soruyu nasıl cevaplayabiliriz?
Bir yöntem düşünebilirim. Neden üç sıfır ile başlayan bir kelimeyi bulana kadar evrendeki her sayıyı tek tek denemiyorsun?
İyimser bir tahminle, birkaç bin denemeden sonra, sağdan aradığımız çıktıyı verecek bir sayıyı bulabileceğiz.
Çıktıya bakarak makineye neyin gönderilmiş olduğunu tahmin edebilmek oldukça zor. Fakat aynı zamanda, girdinin istenilen çıktıyı üretip üretmediğini doğrulaması inanılmaz derecede kolay olacaktır. Makinenin her seferde aynı girdi ile aynı çıktıyı ürettiğini hatırlayalım.
Size bir numara verirsem, diyelim ki 72533, ve sana şu soru sorarsam: “Bu numarayı makineye verirsek önünde üçü sıfır olan bir çıktı alabilir miyiz?“, cevabın ne kadar zor olduğunu düşünüyorsun?
Tek yapmanız gereken, verilen numarayı makineye atmak ve sağ tarafından ne elde edeceğimize bakmak. Bu kadar basit.
Bu tür makinelerin en önemli özelliği, “Çıktı verildiğinde girdiyi hesaplamak son derece zordur ancak girdi ve çıktı göz önüne alındığında, girdinin çıktıya dönüşüp dönüşmediğini doğrulamak oldukça kolaydır.”
Yazının geri kalanında Sihirli Makinelerin (veya Hash Fonksiyonları) bu özelliğini hatırlayacağız:
Yalnızca çıktıya bakarak, girdiyi hesaplamak son derece zordur. Ancak bir girdi ve çıktı verildiğinde, girdinin çıktıya dönüşüp dönüşmediğini kanıtlamak oldukça kolaydır.
Bir sayfayı mühürlemek için bu makineleri nasıl kullanacağız?
Sayfamız için bir mühür üretmek için bu sihirli makineyi kullanacağız. Her zaman olduğu gibi hayali bir durumla başlayalım.
Size iki kutu verdiğimi hayal edin. İlk kutu 20893 sayısını içeriyor. Sonra, size şunu soruyorum: “Bu kutudaki sayıya hangi sayıyı eklemeliyiz ki ilk üç hanesi sıfır olan bir çıktı alabilelim?”
Bu, daha önce belirttiğimize benzer bir durum ve böyle bir sayıyı hesaplamanın tek yolunun evrende mevcut olan her sayıyı tek tek denemek olduğunu öğrendik.
Birkaç bin denemeden sonra, 20893′e 21191 eklendiğinde (yani 21191 + 20893 = 42084) istediğimiz şartları sağlayan bir çıktı üretebilecek sayıya ulaşıyoruz
Böyle bir durumda, bu sayı (21191), 20893 sayısı için mühür olur. Üzerinde 20893 yazan bir sayfanın olduğunu varsayalım. Bu sayfayı mühürlemek için (yani içeriğini kimsenin değiştiremeyeceği bir hale getirmek için), bunun üzerine ‘21191‘ etiketini yapıştıracağız. Mühür numarası (yani, 21191) sayfaya yapıştığında sayfa mühürlenmiş olacak.
[Jargon] Mühür numarasına “Proof of Work (İş Kanıtı)” deniliyor. Yani bu sayı, hesaplamak için çaba sarf edildiğinin kanıtı olarak gösteriliyor. Biz anlaşılmayı kolaylaştırmak için ”mühür numarası” diyelim.
Birisi sayfanın değişip değişmediğini doğrulamak istiyorsa, yapması gereken tek şey sayfanın içeriğini mühürleme numarasına eklemek ve sihirli makineye göndermek olacaktır. Makine, ilk üç hanesi sıfır içeren bir kelime veriyorsa, içeriğe dokunulmaz. Çıkan kelime, şartlarımızı taşımıyorsa, içeriği tehlikeye düştüğünden sayfayı atabiliriz. Sayfa artık kullanımda olmayacaktır.
Tüm sayfalarımızı mühürrlemek için benzer bir mekanizması kullanacağız ve nihai olarak ilgili klasörlerimize yerleştireceğiz.
Sonunda, sayfamızı mühürlüyoruz…
Sitemdeki işlemleri içeren sayfamızı mühürlemek için, işlem listesine eklenip makineye verildiğinde, makinenin sağ tarafından ilk üç hanesi sıfır olarak çıkan bir sayı bulmamız gerekecek.
Not: ‘İlk üç hanesi sıfır olan kelime‘ ifadesini, Hash Fonksiyonunun nasıl çalıştığını göstermek için örnek olarak kullanıyorum. Gerçekte işlemler bundan çok daha karmaşık.
Makineye yeterince zaman ve elektrik harcandıktan sonra gerekli sayı hesaplanır ve sayfa bu sayı ile mühürlenir. Daha sonra birisi sayfanın içeriğini değiştirmeye çalışırsa, mühür numarası herkesin sayfa bütünlüğünü doğrulamasına izin verir.
Sayfayı mühürleme konusunu da öğrendiğimize göre, sayfada onuncu işlemi yazmayı bitirdiğimiz ve sayfada yeni işlemin yazılacağı boş alanın kalmadığı zamana geri dönelim.
Dolan sayfayı klasöre ekleyebilmek için sayfası dolan herkes sayfa üzerindeki mühür numarasını hesaplamaya başlar. Sistemdeki herkes hesaplamayı yapar. Mühür numarasını hesaplayan ilk kişi bunu sistemdeki diğerlerine duyurur.
Mühür numarasını duyan herkes, mühür numarasının gerekli çıktıyı verip vermediğini doğrular. Eğer doğrulanırsa, herkes sayfalarını bu sayı ile mühürler ve ilgilli sayfayı klasörlerine koyar.
Diyelim ki 7 numaralı sistem katılımcısı için, ilan edilen mühür sayısı istenilen çıktıyı sağlamazsa ne olur? Bu tür olaylar olağandışı değildir. Bunun olası sebepleri şunlar olabilir:
- Sistemde duyurulan işlemleri yanlış anlamış olabilir.
- Sistemde duyurulan işlemleri yanlış yazmış olabilir.
- Kendisine veya sistemdeki bir başkası lehine fayda sağlamak için sahtekarlık yapmaya çalışmış olabilir.
Nedeni ne olursa olsun, # 7′nin tek bir seçeneği var – yazmış olduğu sayfayı atmak ve başkasından kopyalayıp kendi klasörüne koymak. Sayfasını klasöre koymazsa, işlem yapmaya devam edemez yani artık sistemin bir parçası olamaz.
Çoğunluğun üzerinde anlaşmaya vardığı bir mühürleme numarası, gerçek mühürleme numarası olur.
Öyleyse neden herkes, hesaplamanın sistemde diğerleri tarafından da yapılacağını bilmesine rağmen, öylece oturup mühür numarasının duyurulmasını beklemek yerine kendi kaynaklarını harcayarak hesaplama yapmaya çalışmaktadır?
Devamını okumak için 3. sayfaya geçiniz.