Blockchain nedir?
(Yazının daha anlaşılabilir olması için bire bir çeviriden ziyade, kimi terimleri dilimize uyarlamaya çalıştım. Hatalı olduğunu düşündüğünüz bir çeviri varsa yorum bölümü aracılığıyla ulaşabilirsiniz.)
Mağarada yaşamıyorsanız, Bitcoin ve Blockchain’i duyduğunuza eminim. Sonuçta, bu yılın en popüler konu başlıklarından ve aynı zamanda medyanın da sevdiği konulardan biri. İnsanlar hayatlarında hiç bir zaman kripto para madenciliği yapmamış olmalarına ve sistemin nasıl çalıştığını anlamamalarına rağmen, Blockchain hakkında konuşuyorlar. Teknik konuları anlama seviyesi yüksek arkadaşlarımdan daha fazla sayıda bu konulara yabancı arkadaşım var. Bu yeni terimleri onların anlayabilmesi için haftalarca beni dinlemeleri gerekti. Sanırım aynı şeyi hisseden binlerce kişi var. Bu yazının amacı da normal bir internet kullanıcısının anlayacağı şekilde “Blockchain nedir?” sorusunun cevabını verebilmek.
Bu arada, haftalık bir bültenin küratörüyüm Unmade: mail kutularınıza gelecekten bir fikir getiriyor.
Blockchain: Neden böyle karmaşık bir şeye ihtiyacımız var?
“Her karmaşık problem için açık, basit ve yanlış bir cevap var” – H. L. Mencken
İnternetteki her yayının aksine, Blockchain’i tanımlamak yerine Blockchain’in çözümlediği sorunu anlamaya çalışacağız.
Başlayalım!
Joe’nun en yakın arkadaşınız olduğunu düşünün. Denizaşırı seyahat ediyor ve tatilinin beşinci gününde sizi arıyor ve “Kanka, biraz paraya ihtiyacım var.” diyor.
Siz de “Hemen gönderiyorum.” yanıtını veriyorsunuz ve telefonu kapatıyorsunuz.
Ardından, banka şubenizi arayıp müşteri temsilcisine “Lütfen benim hesabımdan Joe’nun hesabına 1000 $ aktarın.” şeklinde taliamt veriyorsunuz.
Müşteri temsilciniz “Tabii efendim!” diyor.
Daha sonra hesabınızı açıyor ve Joe’ya 1000 dolar aktaracak kadar paranızın olup olmadığını kontrol ediyor. Zengin bir adamsınız ve yeterince paranız var. Müşteri temsilcisi, hesabınıza şöyle bir kayıt düşüyor:
26 Haziran 2017 tarihinde saat 11:00’de sizin hesabınızdan Joe’ya 1000 Dolar transfer edildi.
Not: İşlemleri daha basitleştirmek için kayıtların defterlerde yukardaki şekilde tutulduğunu düşünün.
Joe’yu arayıp ona, “Parayı aktardım. Bankaya gittiğinde az önce transfer ettiğim 1000 doları çekebilirsin.” dediniz.
Az önce ne oldu? Siz ve arkadaşınız, para transferi için bankaya güvendiniz. Fiziksel olarak banknotlar transfer edilmedi. Tek gereken hesap defterindeki bir kayıttı. Ya da daha net bir ifadeyle, sizin veya Joe’nun kontrol etmediği veya sahip olmadığı bir kayıt.
Ve günümüzdeki mevcut sistemlerin sorunu tam olarak bu.
Kendi aramızda güven oluşturabilmek için, üçüncü şahıslara güveniyoruz.
Yıllarca birbirimize güvenmek için bu aracılara bağımlı olduk. “Aracılara bağlı olmaktaki sorun ne?” diye sorabilirsiniz.
Sorun şu ki, bunlar tekil. Toplumda bir kaos yaratılacaksa, tek yapılması gereken kasten yozlaştırılmış ya da istemeden yozlaşmış bir kişi ya da kuruluş.
- İşlemin kaydedildiği hesap defteri bir yangında kül olursa ne olur?
- Müşteri temsilciniz $ 1000 yerine yanlışlıkla 1500 $ yazmış olsaydı ne olacaktı?
- Peki bütün bunları bilerek yaparsa?
Yıllardır bütün yumurtalarımızı tek bir sepete koyuyoruz ve bu sepet bizim bile değil.
Bankaya ihtiyaç duymadan para transfer edebilecek bir sistem olabilir mi?
Bu soruyu cevaplamak için daha detaylı incelememiz ve kendimize daha iyi bir soru sormamız gerekecektir (sonuçta, yalnızca daha iyi sorular daha iyi cevaplara yol açar).
Bir saniye düşünün, para transferinin anlamı nedir? Sadece hesap defterine giriş. Daha iyi bir soru daha sonra –
Kayıtlarımızı başkası yerine kendi aramızda tutmamızın bir yolu var mı?
Şimdi, araştırmaya değecek soru bu. Ve cevap da zaten tahmin ettiğiniz gibi: Blockchain teknolojisi bu sorunun cevabı.
Blockhain, kaydın başka birine bağımlı olmadan kendi aramızda tutulmasını sağlamaya yarayan bir yöntemdir.
Okumaya devam ediyorsunuz değil mi? Güzel. Zira tam da aklınızda yeni soru işaretlerioluşmaya başlamışken, biz bu dağıtılmış yani merkezi olmayan kayıt sisteminin nasıl çalıştığını öğreneceğiz.
Evet, Blockchain teknolojisi nasıl çalışıyor?
Bu yöntemin gerekliliği, aracılara güvenmeyen yeterli sayıda insanın olmasıdır. Ancak o zaman bu grup kayıtları kendi kendilerine tutabilir.
“Bitcoin’in tanınması için biraz Bitcoin almak mantıklı olabilir. Yeterli insan aynı şekilde düşünürse, bu kendi kendini gerçekleştiren bir kehanet olur “- Satoshi Nakamoto, 2009
Kaç kişi yeter? En az üç. Örneğimiz için, on kişinin bankaları ya da diğer tüm aracıları bırakmak istediğini varsayacağız. Karşılıklı anlaşma gereği, bu 10 kişi birbirlerinin asıl kimliklerini bilmeden hesaplarıyla ilgili bütün ayrıntılara haiz olacaklardır.
1. Boş bir Klasör
Sistem gereği herkesin kendiliğinden boş bir klasörü var. İlerledikçe, on kişi şu anda boş olan klasörlerine yeni sayfa eklemeye devam edecek ve bütün bu sayfalar, işlemleri izleyen kayıtları oluşturacaktır.
2. Bir İşlem Olduğunda
Sistemdeki herkes elinde boş bir sayfa ve bir kalem ile oturuyor. Yani sistemde gerçekleşecek bir işlemi yazmaya herkes hazır.
Şimdi yukarıdaki görselde belirtilen 10 kişiden 2 numaralı kişi 9 numaralı kişiye 10 dolar göndermek isterse:
İşlemi yapmak için, 2 numara bağırarak herkese şu mesajı iletir: “9 numaraya 10 dolar transfer yapmak istiyorum. Bu işlemi herkes lütfen not etsin.”
Herkes 2 numaranın 9 numaraya transfer yapabilmesi için yeterince bakiyesi var mı kontrol eder. Yeterince bakiyesi varsa, sistemdeki herkes boş sayfalarına bu işlemi kaydeder.
Herkes işlemi kaydettikten sonra işlem tamamlanmış olarak kabul edilir.
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?
Harika soru. Teşviklerin sistemin içine girdiği yer tam olarak burası. Blockchain’in parçası olan herkes ödül almaya hak kazanır. Mühür numarasını hesaplayan ilk kişi çabaları için (yani, işlemci -CPU- gücü ve harcadığı elektrik için) ödüllendirilir.
Hayal edin, eğer 5 numaralı katılımcı sayfanın mühür numarasını hesaplarsa, bir miktar havadan bedava para ile ödüllendirilir (Diyelim ki 1 Dolar). Başka bir deyişle, 5 numaralı katılımcının hesap bakiyesi, sistemdeki diğer katılımcıların hesap bakiyesini azaltmaksızın 1 dolar artar.
Bitcoin de böyle var oldu. Bir Blockchain’de işlem gören ilk para birimi Bitcoin idi. Ve bunun karşılığında, sistemdeki çabaları sürdürebilmek için insanlar Bitcoin ile ödüllendirildiler.
Yeterince insan Bitcoin’e sahip olduğunda, diğer insanlar da Bitcoin’i istemeye başlar ve Bitcoin değerlenir. Bitcoin değerlendiğinde; daha fazla insan Bitcoin’i istemeye başlar ve Bitcoin daha da değerlenir.
Ödüller herkesin sistemde çalışmaya devam etmesini sağlar.
Herkes dolan sayfayı klasörlerine eklediğinde, yeni bir boş sayfa çıkarır ve tüm süreci bir kez daha tekrar eder. Bu işlemler sonsuza kadar yapılır.
[Jargon] Tek bir sayfayı blok (Block) olarak ve klasörü de zincir (Chain) olarak düşünün, böylelikle Blockchain‘in (Blok zinciri) nasıl oluştuğunu anlayabilirsiniz.
Evet arkadaşlar, Blockchain’in çalışma sistemi bu şekilde.
Bunun dışında size henüz söylemediğim küçük bir şey var.
Klasöre beş sayfa geldiğini düşünün. Hepsinin mühür numarası ile mühürlenmiş olsun. Peki ben ikinci sayfaya geri dönüp bir işlemi kendi lehine çevirirsem ne olur? Mühür numarası, işlemlerdeki tutarsızlığın fark edilmesine olanak tanır, değil mi? Peki ben değiştirdiğim işlemler için de yeni bir mühür numarası hesaplayıp sayfayı bununla etiketlersem ne olur?
Birinin geriye dönüp mühürlenmiş sayfaları değiştirmesini önlemek için mühür numarası hesaplanırken küçük bir şarşırtmaca yapılmıştır.
Mühür numaralarındaki değişiklikleri korumak
Size iki kutu verdiğimi hatırlayın. Birinde 20893 sayısı varken, diğeri sizin hesaplamanız için boştu. Gerçekte ise Blockchain’deki mühür numarasını hesaplamak için iki kutu yerine ikisi önceden doldurulmuş ve bir tanesinin hesaplanması gereken toplam üç kutu verilir.
Bu üç kutunun içeriği eklenip makineye verildiğinde, sağ taraftan gelen cevap, gerekli koşulları sağlamalıdır.
Tek bir kutunun işlemlerin listesini içerdiğini ve bir kutunun da mühür numarasını içerdiğini zaten biliyoruz. Üçüncü kutu ise sihirli makinenin bir önceki sayfa için çıktısını içerir.
Bu küçük şaşırtmaca ile her sayfanın bir önceki sayfaya bağlı olduğundan emin olabiliyoruz. Dolayısıyla, birisinin arşivlenmiş bir sayfayı değiştirmesi için -zincirin tutarlı kalması adına- bu sayfadan sonra arşivlenmiş tüm sayfaların içeriğini ve mühür numarasını da değiştirmesi gerekir.
Başlangıçta hayal ettiğimiz on kişiden biri, Blockchain’in içeriğini (işlem listesindeki sayfaları içeren klasör) aldatmaya ve değiştirmeye çalışırsa, diğer sayfaları da düzenlemesi ve yeni mühür hesaplaması gerekmektedir. Tüm bu sayfalar için mühür numaralarının hesaplanmasının ne kadar
Dürüst davranmayan kişi, değiştirmeye başladığı sayfadan itibaren yeni bir zincir yaratmak durumundadır. Yalnızca bir adamın çabaları ve hızı diğer dokuz kişinin çabasına ve hızına yetişemeyeceği için sistemde dürüst davranmayan kişinin yarattığı zincir asla doğru zincire yetişemeyecektir. Dolayısıyla, bu durum bir sistemdeki en uzun zincirin en doğru zincir olduğunu da garantiler.
En uzun zincir en doğru zincirdir.
Dürüst olmayan bir adamın dokuz dürüst adamı yenemeyeceğini söylediğimde, kafanızda bir ampül yandı mı?
Peki, bir yerine altı kişi dürüst davranmazsa?
Bu durumda, protokol başarısız olacak. Buna “%51 Saldırısı” deniyor. Sistemdeki bireylerin çoğunluğu dürüst davranmaz ve geri kalanını aldatmaya karar verirse, protokol başarısız olur.
Blockchain’in çökmesine neden olabilecek tek sebep budur. Bunun gerçekleşmesi pek mümkün değildir ancak hepimiz sistemin savunmasız noktalarını da bilmeliyiz. Blockchain, bir sistemde çoğunluğun her zaman dürüst davranacağı varsayımına dayanır.
Evet sevgili arkadaşlar, Blockchainle ile ilgili konular bu kadar. Arkada kalan birilerini bulursanız ve “Blockchain nedir?” diye merak ediyorlarsa, nereye yönlendireceğinizi artık biliyorsunuz.
“Blockchain nedir?”, “Blockchain teknolojisi nedir?” ve “Blockchain nasıl çalışır?” gibi konulara Mohit’in ağzından yanıt vermeye çalıştık. Blockchain, bitcoin ve diğer kripto paralar ile ilgili görüş ve sorularınızı aşağıda yer alan yorum bölümü aracılığıyla bizlere iletebilirsiniz.
Hocam çok tesekkür ederim. Türkçe kaynaklar içerisinde Blockchain’in çalisma prensibini anlatan en açiklayici metin olmus. Ellerinize saglik.
Yorumunuz için ben teşekkür ederim. Yazının başında da belirttiğim üzere, çeviri bir metin. Daha iyi olabilirdi ama şimdilik eldekiler içerisinde Blockchain teknolojisinin özü ile ilgili en basit ve geniş metin bu sanırım.