Blockchain nedir Part 1 için bu linke tıklayabilirsiniz
Dağıtılmış networkler (distributed)bir konsensus modeline ihtiyaç duyarlar. Bunun sebebi de lidersiz (merkezsiz yapılar) demokratik olarak karar almak durumunda olduklarında bunu oldukça hızlı ve adil bir şekilde yapabilme gereksinimleridir. Yani decentralize sistemlerde transferleri onaylayacak bir merkez olmadığı için (bazılarında var bkz. IOTA’ nın koordinatörü) sistemin içindeki diğer bireylerin kendi için fikir ayrılığına düşmemesi gerekli.
Konsensus kelimesinin türkçeleştirecek olursak aslında “Fikir birliği” diyebiliriz. Konsensusun blockchaindeki işlevin ise bir örnekle anlatayım bitcoin networkune işlenen herhangi bir para transferinin sistemdeki tüm nodlar tarafından kabul edilmesi gerekiyor. Yani bu para transferini tüm nodlar onaylarsa “fikir birliğine” erişilir. Konsensus sağlandığında ise bu transfer blockchaine kaydedilir.
1- Klasik Konsensus metodu
Bu konsensuslardan ilki klasik konsensus metodudur. Blockchainin esamesi okunmazken bilinen bir üzerine çalışılan bir terim zaten bitcoin ile birlikte decentralize konsensuslar yani “nakamoto consensus”tan bahsetmeye başlayacağız. Klasik konsensus metodları çeşitli dağıtık networklerde belli bir skalaya kadar decentralizasyon sağlarlar. Leslie Lamport ve Barbara Liskov adındaki iki bilim insanın katkısı bu metodun geliştirilmesinde çok önemlidir. Bu iki kişide Turing ödüllüdür. Turing ödülü de bilgisayar bilimlerinde Nobel gibidir diyebiliriz.
Klasik konsensus modellerinin avantajı hızlı olmalarıdır. Buna karşın diğer tüm nodların birbirini tanıması gerekmektedir. Bu da gizlilik konusunda büyük bir handikap demek. Bitcoin ve nakamoto konsensusundan önce Nick Szabo (NS) ki kendisi de Satoshi Nakamato (SN) olabilir yani en azından adaylar arasında bitgold isimli bitcoinin atası konumundaki projesinde klasik konsensus metodu kullanmayı planlamıştır. Klasik konsensus metodları decentralize sistemlerde çok tercih edilen konsensus metodları değillerdir. Scaling (ölçeklenme) konusunda sınırlıdırlar.
Konsensus metodlarının tamamı BFT (Byzantine Fault Tolerance) ye sahip olmak durumundadırlar. Bu Bizans generali problemi olarak da bilinir. Daha önce duymuş olmanız mümkün.
İlk olarak 1972' de aşağıdaki makaleyle ortaya konulmuş bu sorun çözülemez olarak kanıtlanmış.
http://citeseerx.ist.psu.edu/viewdoc/download doi=10.1.1.126.9525&rep=rep1&type=pdf
Bizim blockchainle ne alakası var derseniz sadece blockchain ile alakalı değil elektronik cihazların çalışma prensipleri ya da nasa uzaya bir roket gönderirken bu bizans hata toleransını göz önünde bulunduruyor.
Aslında yapılan bir çalışma düzeneğinin hangi şartlar altında bozulacağını çalışmayacağını test etmektir.
İsmin nereden geldiğini de yazacağım.
Eski zamanlarda 2 bizanslı generalin bir şehri kuşattığını düşünün lakin bir sorun var ki iki generalin kumanda ettiği ordular aynı anda şehre saldırmaz ise saldırı başarısız olacak. Bu yüzden ne zaman saldıracaklarını koordine olmaları gerekli. Koordinasyonu da bir ulak ile yapıyorlar. Sıkıntı ulak iki general arasında gidip gelirken düşman tarafından yakalanıp başka bir sahte ulak ve yanlış saldırı anı diğer generale iletilebilir. Dahası generallerden birisi hain olabilir. Nasıl koordine olup aynı günde şehre saldırabiliriz ?
Blockchainde de merkez olmadığı için kötü niyetli aktörler maddi olarak müthiş bir teşviğe sahip oldukları için kötü devamlı bir hain general tehlikesi altındadır. Bizim sistemimizde nodların art niyetli ya da yanlış bilgiyi yayanlardan ya da generalin saldırı sisteminde hainlerin oranı 1:3 olarak kaldıkça bu kabul edilebilir sayılıyor. BFT ise bu sorunu kendi metodlarımızla nasıl azaltabileceğimizle ilgileniyor. Blockchaindeki proof of work ya da proof of stake (iş kanıtı ya da senet kanıtı) aslında bu general problemine bir çözümdür. BFT nin olmadığı ortamda blockchainin güvenliği sorgulanır.
Satoshinin BFT için POW çözümünün mailini ekliyorum sayfa silinmiş önbellekten link attım