Bu Blockchain de Neyin Nesi??!
- Melih Çöl
- 27 Eki 2017
- 7 dakikada okunur
Mağrada yaşıyor olsanız bile, eminim herkes Blockchain’i ve Bitcoin’i duymuştur. Bugünlerde medyanın da gündemini oldukça meşgul eden bu kelimeler, bugüne kadar kripto para konusunda en ufak bir bilgisi olmayanların bile dilinden düşmez oldu. Bu tür teknik konularda bilgisi olmayan birkaç arkadaşım, benden ısrarla bu kelimeleri açıklamamı istiyorlardı. Arkadaşlarım gibi bu konuları pek bilmeyen ama öğrenmek isteyen binlerce kişi vardır diye düşünüp herhangi bir internet kullanıcısının anlayacağı şekilde konuya açıklık getirmek istedim.
Blockchain: Bu karmaşık sisteme neden ihtiyacımız var ki?
‘Her karmaşık problemin, açık, basit ve yanlış bir cevabı vardır.’ — H.L. Mencken
İnternetteki diğer yazıların aksine, Blockchain’in ne olduğunu açıklamadan önce, hangi soruna çözüm getirdiğini anlayalım.
Ahmet adında bir kankanızın olduğunu hayal edin. Ahmet yurtdışına seyahate gider, tatilinin beşinci gününde seni arar ve “Kanka beş kuruşum kalmadı, biraz para gönderebilir misin?” der.
Sen de “Hemen gönderiyorum” dersin.

Bankadaki temsilcini arayıp arkadaşına 1000$ transfer etmesini istersin. Banka temsilcin kaydını açar, hesabında 1000$ transfer için yeterli bakiyen var mı diye kontrol eder. Tabi zengin olduğun için bakiyen de yeterlidir, temsilcin kayıt açma işlemine başlar.
Arkadaşın Ahmet’i arayıp ‘Parayı gönderdim, gidip bankadan 1000$’ını çekebilirsin’ diyebilirsin.
Peki şimdi ne oldu? Hem sen hem de Ahmet, bu işlem için paranızı bankaya emanet etmiş oldunuz. Ortada para transferini yapacak somut bir evrak akışı da yok. İşlem için sadece bir kayıt açılmış oldu. Ya da daha doğrusu ne senin ne de Ahmet’in kontrol edebildiği veya sahiplenebildiği bir giriş kaydı oluşturuldu.
İşte bu, tam da şu anki sistemlerin başlıca sorunu.
Aramızda güveni kurmak için, üçüncü şahıslara bağlı kalırız.
Yıllardır bu adamlara güveniyoruz, şimdi gelmiş ‘Ne var bunda?’ diyebilirsiniz.
Aslında sorun bu kişilerin tekil olmaları. Toplumda bir kargaşa çıksa, bir kişi veya kuruluşun isteyerek veya istemeyerek de olsa yolsuzluk yapması yeterli.
İşlemin girildiği kayıt yangında yansa ne olur peki?
Ya da banka temsilcin yanlışlıkla 1000$ yerine 1500$ yazsa ne olur peki?
Hatta bunu bilerek yaparsa?
Yıllardır malımızı mülkümüzü bir sepete koyup, bu sepeti de başkalarının kucağına bırakıyoruz…
Bankaya ihtiyaç duymadan paralarımızı transfer edebileceğimiz bir sistem olabilir mi?
Bu soruyu cevaplamak için, daha da derine inip konuyu irdeleyen soruları sormamız gerek.
Bir düşünsenize para transferi ne demek mesela? Sadece bir giriş kaydı. O zaman sormamız gereken şey;
Başkalarına ihtiyaç duymadan bu kaydı kendimiz edinebilir miyiz?
İşte sorulması gereken soru bu. Cevabı tabi tahmin etmiş olmalısınız ‘Blockchain’.
Blockchain bu kaydı kendi aramızda açabilmemizi sağlayan bir yöntem.
Buraya kadar anlaşılmayan bir şey var mı? Çok iyi, muhtemelen şu an aklınıza birçok soru gelmiştir.
Bu dağıtılmış kaydın nasıl çalıştığını öğrenelim şimdi de.
Tamam da bu sistem nasıl çalışır?
Bu yöntemin başlıca şartı, üçüncü şahıslara bağlı kalmayı reddeden yeterli sayıda insanın olmasıdır. Ancak yeterli sayıda insan bir araya geldiğinde kendi kendilerine bir kayıt edinebilirler.
“Ya tutarsa deyip birkaç Bitcoin almak çok da mantıksız değil. Yeterli sayıda insan bu şekilde düşünse, kendi kendine gerçekleşen bir kehanete dönüşür.” - Satoshi Nakamoto, 2009
Böyle bir sistem için üç kişinin bir araya gelmesi yeterli, örneğin bankalara veya üçüncü şahıslara parasını emanet etmek istemeyen on kişinin bir grup oluşturduklarını ve anlaşmaya vardıklarını varsayıp birbirlerinin kim olduğunu bilmeden sadece hesap detaylarını paylaştıklarını düşünelim.

1. Boş Bir Dosya
Her bir kişinin kendisine ait bir dosyası olur, zaman geçtikçe her bir birey boş olan dosyalarına sayfalar eklemeye devam eder. Bu sayfalar topluluğu da banka işlemlerini takip eden kaydı oluşturur.
2. Banka İşlemi Gerçekleştiğinde
Daha sonra, ağdaki herkes ellerinde bir kâğıt kalem, oturup sistemde meydana gelecek herhangi bir banka işlemini yazmaya hazır bir şekilde beklerler.

Bu işlemi gerçekleştirmek için #2, herkese ‘#9’a 10$ göndermek istiyorum’ ‘Herkes sayfasına bunu not etsin’ der.
Herkes #2’nin bu transferi yapabilecek bakiyesi olup olmadığını kontrol ettikten sonra, eğer yeterli miktar varsa boş sayfalarına işlem notunu alırlar.
Sayfadaki ilk işlem:

İşlem tamamlandı.
3. İşlemler Devam Eder
Zaman geçtikçe, ağdaki diğer insanlarda başkalarına para gönderme ihtiyacı duyarlar. İşlem yapmak istedikçe, diğerlerine bunu bildiriler. Bunu duyan her kişi, hemen sayfasında bu işlemin notunu alır.
Bu uygulama herkesin sayfası dolana kadar devam eder. Bir sayfanın on işlemi not edebildiğini düşünürsek, onuncu işlem yapılır yapılmaz herkesin sayfası dolar.

Dolan sayfa dosyaya konur ve herkes yeni bir sayfa çıkarır. İşlemler gerçekleştikçe, 2. aşamadan başlayarak aynı adımlar tekrarlanır.
4. Dolan Sayfayı Kaldırma
Dolan sayfayı bir kenara kaldırmadan önce, ağdaki herkesin anlaşmaya vardığı özel bir anahtarla sayfayı mühürlemesi gerekir.
Mühürlenen sayfada hiç kimse hiçbir zaman değişiklik yapamaz ve bu sayfanın bir kopyası herkesin dosyasına konur. Böylelikle mühüre güvenenler, sayfanın da içindeki bilgilere güvenir. Sayfanın mühürlenmesi bu yöntemin en can alıcı noktası.
Sayfa da güven altına almak için ‘madencilik’ dense de daha anlaşılır kılmak için buna mühürleme diyeceğiz.
Üçüncü şahıslar/Aracılar daha önceleri bize kayıtlarda yazılanların hiçbir zaman değişmeyeceği yönünde bir güven aşılamışlardı. İçinde bulunduğumuz dağınık ve merkezi olmayan toplumda, bu güveni bu mühür sağlayacaktır.
Evet, Çok İlginç, Peki bu sayfayı nasıl mühürleriz?
Sayfayı nasıl mühürleyeceğimize geçmeden önce, bu mühürün nasıl çalıştığına bir bakalım.
Sihirli Makine
Etrafı kalın duvarlarla örtülü bir makine hayal edelim. Soldan içi dolu bir kutuyu gönderirsen, makine de içi dolu başka bir kutuyu dışarıya atacaktır.
Normalde bu makine ‘Özet Fonksiyonu’ (Hash Function) olarak adlandırılır, ama çok da teknik konulara girmeye gerek o yüzden biz bunlara şimdilik ‘Sihirli Makineler’ diyelim.
Diyelim ki 4 sayısını bu makinenin içine sol taraftan gönderdin, sağ tarafta ‘dcbea’ kelimesinin ortaya çıktığını görürüz.

İyi de bu 4 nasıl oldu da bu kelimeye dönüştü? Kimse bunun cevabını bilmiyor. Üstelik bu işlem geri de alınamaz. ‘dcbea’ kelimesine bakıp, makinenin soldan neyle beslendiğini söylemek de imkânsız. Ama makineye her 4 sayısını gönderdiğinde, her zaman ‘dcbea’ kelimesi çıkacaktır.
Öyleyse; Hash(4)==dcbea
Başka bir sayıyı daha deneyelim. Mesela 26?
Baksanıza bu sefer de 94c8e geldi. Çok ilginç. Demek ki ortaya çıkan değerler harf de içerebilir. Hash(26)==94c8e
Peki, size şu soruyu sorsam, cevabınız ne olur:
Makinenin solundan neyi göndermeliyim ki sağdan 000’la başlayan bir kelime almalıyım? Örneğin; 000ab, 00098 veya 000fa gibi.
Girdiyi tahmin etmek…
Soruyu önce biraz düşünün.
Size sağdan gelen çıktının beklentimiz yönünde olması için soldan göndermemiz gereken girdiyi tahmin edemeyeceğimizi söylemiştim.
Bu şekilde çalışan bir makine de bu sorunun cevabı ne olur?
Evrendeki tüm sayıları tek tek deneyip başı 000’la başlayan çıktıyı elde etmeye çalışabiliriz mesela.
İyimser olalım, eninde sonunda böyle bir sayıya ulaşırız.
Çıktı değeri verilen girdiyi tahmin etmek çok zor, ama aynı zamanda tahmin edilen girdinin neden olduğu çıktıyı doğrulamak da çok basit. Çünkü makine her seferinde aynı kelime için aynı numarayı veriyor.
Size 72533 sayısının makineye verildiğinde üç sıfırla başlayan bir kelimenin ortaya çıkıp çıkmadığını sorsam, cevabı bulmanız zor olmayacaktır. Makineye 72533 sayısını verirsiniz, sağdan gelen kelimeye bakarsınız.
Çıktı değeri verilen bir girdinin ne olduğunu tahmin etmek zor, ama girdi ve çıktı değerleri verildiğinde sonucun doğru olup olmadığını kontrol etmek kolay.
Sihirli Makinelerin (ya da Özet Fonksiyonlar) bu özelliğini aklımızda tutalım ve devam edelim.
Bir sayfayı mühürlemek için bu makineleri nasıl kullanırız?
Bu sihirli makineyi sayfamız için bir mühür üretmek için kullanacağız.
Size iki kutu verdiğimi düşünün. İlk kutu 20893 sayısını taşıyor. Size ‘Sence sana hangi numarayı verirsem, 20983’e eklediğinde ve makineye beslediğinde üç sıfırla başlayan bir kelime çıktısı elde edersiniz?’ diye sorsam.

Daha önce de dediğim gibi evrendeki tüm sayıları tek tek deneyerek bulmak tek çözüm olur. Eninde sonunda bir sayı elbet tutar. Hadi diyelim 21191; 20893’e eklendiğinde 42084 olur, bunu makineye beslediğimizde bizim kriterlerimizi karşılayan bir kelime verdi.

Bu durumda 21191, 20893 sayısının mührü haline gelir. Farz edelim ki bir sayfada (içeriği değiştirilemez) 20893 sayısı var. Bu sayfayı mühürlemek için sayfaya ‘21191’ yazılı bir etiket konur. 21191 sayısı sayfaya konar konmaz, sayfa mühürlenir.

Mühürleme sayısı ‘İş Kanıtı’ olarak adlandırılır. Bu numaranın hesaplanmasında yeterli çabanın sarf edildiğinin kanıtı olduğu anlamına gelir. Biz şimdilik mühürleme sayısı diye bahsedelim bundan.
Eğer birisi sayfanın değiştirilip değiştirilmediğini doğrulamak isterse, yapması gereken tek şey sayfanın içeriğini ve mühürleme sayısını sihirli makineye koymak. Eğer makine üç sıfırla başlayan bir kelime verirse, o zaman sayfa değiştirilmemiş demektir.
Sihirli makineden çıkan kelime, bizim kriterlerimizi karşılamıyorsa, o zaman sayfayı atabiliriz çünkü içeriği bozulmuş demektir. Bütün sayfalarımızı mühürlemek için benzer bir mühürleme mekanizması kullanacağız. En sonunda da sıralı dosyalarımıza yerleştireceğiz.
Son olarak — sayfamızı mühürleyelim
Ağın işlemlerini içeren sayfamızı mühürlemek için, işlemler listesine konulduğunda ve makineye verildiğinde üç sıfırla başlayan bir kelime veren bir sayıyı bulmamız gerek.

Not: ‘Üç sıfırla başlayan bir kelime’yi sadece örnek olarak kullanıyorum. Bu örnek sadece Özet Fonksiyonların nasıl çalıştığını anlatıyor. Gerçek örnekler bundan kat kat daha karmaşık oluyor. Makine üzerinde yeterli vakit ve elektrik harcanıp sayı hesaplandıktan sonra, sayfa bu sayı ile mühürlenir. Böylelikle mühürleme sayısı herkesin bu sayfanın doğruluğundan emin olmasını sağlayacaktır.
Şimdi tekrar onuncu işlemden sonra dolan sayfanın olduğu bölüme tekrar gidelim.
Herkesin sayfası dolar dolmaz, herkes sayfanın dosyada saklı kalmasını sağlayacak olan mühürleme sayısını bulmaya çalışır. Sayıyı ilk bulan kişi diğerlerine bunu duyurur.

Mühürleme sayısını duyan kişiler, gerekli çıktı değerini verip vermediğini kontrol ettikten sonra, eğer doğruysa sayfalarını bu sayı ile mühürleyip dosyalarına kaldırırlar.
Diyelim #7 kişisi mühürleme sayısını girdiğinde istenilen çıktıyı elde edemedi. Bu tür vakalarla çok da karşılaşmıyor değiliz. Bunun birkaç nedeni olabilir,
Ağda duyurulan işlemleri yanlış anlamış olabilir,
Ağda duyurulan işlemleri yanlış yazmış olabilir,
Kendini veya ağdaki başka birinin menfaati için işlemleri yazarken dürüst davranmamış olabilir.
Nedeni ne olursa olsun, #7’nin yapabileceği tek şey, sayfayı imha edip, başka birinden kopyasını alarak dosyasına koymaktır. Dosyaya sayfasını koyamazsa, daha fazla işlem yazamaz, bu yüzden de ağdan ayrılmış olur.
Çoğunluğun anlaştığı mühürleme sayısı neyse, o doğru mühürleme sayısı olarak kabul görür.
O zaman neden herkes hesaplama yapmakla uğraşmak yerine boş boş oturup başkasının duyuru yapmasını beklemiyor?
Güzel soru. İşte burada devreye teşvikler giriyor. Blockchain’deki herkes ödüllerden faydalanabilir. Mühürleme sayısını ilk bulan kişi çabalarından ötürü bedava para kazanır (örneğin; işlemci gücü ve elektrik).
Mesela #5 mühürleme sayısını ilk bulan kişi olduğu için, havadan hesabına 1$ eklenir.
İşte tam bu sırada Bitcoin ortaya çıktı. Bitcoin, Blockchain’de (yani dağıtılmış kayıtlar) transfer edilen ilk dövizdir. Sonuç olarak, ağdaki insanların hesaplama yapmalarını devam ettirmek için de insanlara Bitcoin’ler hediye edildi.
Yeterli sayıda insan Bitcoin’e sahip olunca da, Bitcoin’lerin değerleri artar, diğer insanların da Bitcoin almalarını sağlarlar, Bitcoin’lerin değerleri daha da artar, daha da fazla insan almak ister. Bu böyle devam eder.
Ödüller herkesin ağda çalışmasını sağlar.
Herkes sayfasını dosyasına sakladığında, yeni bir sayfa çıkarır ve bütün adımlar tekrarlanır — sonsuza kadar.
Tek bir sayfayı işlemler Bloğu (Block) dosyayı da sayfalar zinciri (Chain) olarak düşünürseniz Blockchain oluşmuş oldu.
İşte Blockchain bu şekilde oluşur.
Lakin şunu da eklemek gerek,
Ağdaki kişilerden biri kendi menfaati için 2. Sayfaya gidip, işlemlerden birini değiştirse ne olur? Mühürleme sayısı işlemlerde tutarsızlık olduğunu gösterir evet, ama işlemi değiştirdikten sonra sayfayı (Block) başka bir mühürleme sayısı ile mühürlerse ne olur?
Mühürlenmiş sayıları koruma
Size en başta makineye koymanız için iki kutu verdiğimi hatırlayın.
Gerçekte bu aslında üç kutu. İki tanesi önceden doldurulmuş, bir tanesi ise makineden gelecek olan çıktı değerini içeren kutudur. Bütün kutuların içerikleri makineye verildiğinde, oluşan çıktı değer gerekli şartları taşımalıdır.
Kutulardan biri işlemler listesini, diğeri mühürleme sayısını, üçüncüsü ise sihirli makinenin bir önceki sayfa için verdiği çıktı değerini içerir.

Böylelikle birisi sayfalardan birini değiştirmek isterse, bütün sayfaların içeriğini ve bu yüzden de mühürleme sayılarını da değiştirmek zorunda kalır.
Mühürleme sayısının hesaplanmasının ne kadar zor olduğunu düşünürsek, bir kişinin ağdaki diğer dokuz kişiyi alt etmesi pek de mümkün gözükmüyor.
Dürüst olmayan kişinin tek başına yarattığı zincirin, ağdaki diğer kişilerin sürdürdüğü doğru zinciri yakalayamayacağını da düşünürsek, çünkü mantıken de tek bir kişinin hızı ve çabası dokuz kişiyle aynı olamaz, ağdaki en uzun zincir doğru zincir olarak kabul edilir.
En uzun zincir doğru zincirdir.

Peki ya bir kişi değil de altı kişi menfaatleri uğruna doğru yoldan saparsa?
İşte tam bu nokta da sistem çöküyor. Buna da ‘%51 Saldırısı’ adı veriliyor. Eğer ağdaki kişilerin çoğunluğu menfaatleri uğruna yoldan saparlar ve kalanları aldatırlarsa, sistem amacından çıkmış olur.
Blockchain’lerin savunmasız kaldığı tek nokta da bu. Olma ihtimali ne kadar az da olsa, bu sistemin savunmasız noktasını bilmekte fayda var. Sonuç olarak bu sistem Topluluğun çoğunluğu her zaman dürüsttür çıkarımına dayanır.
Comments