İnsanoğlu genellikle sistemlerdeki karmaşık problemleri günlük hayatımızdaki basit olaylarla açıklamaya çalışarak çözmeye çalışmıştır. İşte bu basit olaylardan önemli bir tanesi de Bizans Generalleri Problemi’dir. Bu problem ile geçmişten günümüze kadar insanlık için oldukça önemli bir sorun olan güven problemini dağıtık sistemler tarafından nasıl bir problem olabileceği basitçe anlatılmaya çalışılmıştır.
Bizans Generalleri Problemi Neden Ortaya Çıkmıştır?
Bizans generalleri problemi yada ingilizce olarak “The Byzantine Generals Problem” olarak bilinen bu problemin hikayesini anlatmaya geçmeden önce neden böyle bir hikayenin ortaya çıktığını ve amacının ne olduğunu bilmemiz gerektiğini düşünüyorum.
Aslında günlük hayatımızda ve internet ortamındaki yaptığımız birçok şey güven kontrolünden geçiyor. Örnek vermemiz gerekirse, eğer siz internet üzerinden bir ödeme yaparsanız ödeme ekranı sizi ödeme aracı olarak kullanacağınız bankanın sistemine yönlendirir ve bankanız sizden işlemi onaylamanızı ister. İşleminizi onayladıktan sonra ödeme yapacağınız kurum, bankanıza “Bu kişinin yeteri kadar parası var mıdır?” gibi bir soru yöneltir. Bankanız bu durumda eğer hesabınızda paranız varsa karşı tarafa “Evet var” işlemi onaylarsan senin alacağın paranın güvencesi benim gibi bir güven ibaresi gösterir. Güven ibaresini alan karşı taraf ise sizin işleminizi onaylar ve böylece herkes mutlu bir şekilde hayatına devam eder.
Fakat merkezi olmayan sistemlerde bu örnekteki banka gibi güven problemini ortadan kaldıracak bir sistem nasıl kurulabilir ki? İşte bu nokta da sorunu kurgulamak adına 1982 yılında bir makalede yayınlanan Bizans Generalleri Problemi, bilim insanları tarafından ortaya atılmıştır. Unutmayın, bir problemi ne kadar iyi modelleyebilirseniz çözümü de o denli iyi bir şekilde yapabilirsiniz. Bizans Generalleri Problemi sayesinde de yazımızın ilerleyen bölümünde bahsedeceğimiz merkezi olmayan sistemler için Bizans Hata Toleransı yada İngilizce tabiriyle “Byzantine Fault Tolerance (BFT)” çözümü bulunmuştur.
Bizans Generalleri Problemi Nedir?
Bizans Generalleri Problemi, aslında birden fazla general ve ordularının bir şehri kuşatması ile başlar. Her bir general kendi ordularıyla şehrin farklı konumlarına konuşlanır. Bu konuşlanmanın ardından otoriteden gelecek mesaja göre “Saldıracak” veya “Geri çekileceklerdir”. Buna ek olarak savaşı kazanabilmeleri veya kayıpsız şekilde geri çekilmeleri ortak bir karar ile hareket etmelerine bağlıdır. Yani eğer saldırı olursa hep birlikte saldırarak şehri çok kolay bir şekilde alabileceklerdir veyahut karar geri çekilmekse, organize bir şekilde ortak bir karara varıp hepsi geri çekilirse hiç asker zayiatı olmayacaktır. Bunun için bazı öncüllerin uygulanması gerekmektedir.
- Her bir general karar vermelidir: Saldır ya da Geri çekil (evet ya da hayır).
- Karar verildikten sonra değiştirilemez.
- Tüm generaller aynı karar üzerinde hemfikir olmalıdır ve kararı eş zamanlı bir şekilde uygulamalıdır.
Tabi ki bu öncülleri yapabilmek zor olmasına rağmen birde işin içine her bir komutanın kendi arasında ulaklar ile haberleşmesi durumunu katarsak eğer ulaklar tarafından iletilen mesajın tam veya doğru olup olmadığını bilemediğimizden ötürü problemimizdeki fikir birliği sorununu çözmek oldukça karmaşık bir hale geliyor. Son olarak da problemimize komutanların hain olabileceği durumunu da eklediğimizde oldukça karmaşık ve çözülmeyi bekleyen bir problem olarak karşımıza çıkıyor.
Bu problemi blok zincir teknolojisinde önemli bir yere sahip olan dağıtık sistemler üzerinde kurgularsak, her bir general bir ağ düğümünü temsil eder ve düğümlerin sistemin mevcut durumu üzerinde fikir birliğine varması gerekir. Başka bir deyişle, başarısızlığın önüne geçmek için dağıtılmış bir ağın içindeki katılımcıların çoğunluğunun aynı aksiyon üzerinde fikir birliğine varması ve bu aksiyonu uygulamaya koyması gerekir.
Sonuç olarak dağıtık sistemlerde fikir birliğini sağlamanın tek yolu ağ düğümlerinin en az ⅔’ünün dürüst ve güvenilir olmasıdır. Eğer sistemdeki düğümlerin çoğunluğu art niyetli davranma konusunda fikir birliğine varırsa sistemin arızalara ve saldırılara açık olacağı anlamına gelir.
Bizans Hata Toleransı (BFT) Nedir?
Yukarıda da bahsettiğimiz gibi Bizans Generalleri Problemimizi dağıtık yapıdaki sistemler üzerinde modellediğimizde generaller yerine bilgisayarlarımız yada düğümlerimiz yer alabilir gibi düşünebiliriz. Buradaki bütün generaller yani düğümler, sistemin mevcut durumu üzerinde fikir birliğine varmalıdır. Fikir birliğine varılması için ağdaki doğrulayıcıların aynı fikir doğrultusunda çalışması gerekmektedir. Eğer fikir birliğine varıp birlikte çalışabilirlerse sistemdeki başarısızlıklar ve sorunlar ortadan kalkar. İşte bunu yapmak için Bizans Hata Toleransı sistemi çözüm olarak ortaya atılmıştır.
Bizans Hata Toleransı sistemi, ağ üzerindeki bazı düğümlerin hata yapabileceğini ya da kötü niyetli olabileceklerini göz önünde bulundurarak nötr bir yaklaşım izler. Üretilen verilerin kesinlikle doğru ya da yanlış olduğu kanısına varmaz. Üretilen veriye doğru ya da yanlış olduğuna karar verebilmek için ağ içindeki katılımcıların %51’den fazlasının aynı düşünce yönünde fikir birliğine varmasını bekler. Daha sonrasında çıkan fikir birliğine göre verinin doğru veya yanlış olduğunu kesinleştirir. Bu sayede “çifte harcama” olarak da adlandırılan bir problemin önüne geçilmiş olunur.
Blok zincir ağlarında fikir birliğine varma sürecinde kullanılmak üzere tasarlanan birçok mutabakat protokolü vardır. Örnek olarak “Proof of Work (PoW)” ve “Proof of Stake (PoS)” protokolleri verilebilir. Bu protokoller sayesinde üstte anlattığımız birçok problem sorunsuz bir şekilde çözüme kavuşabilmektedir.
Son olarak Bizans Hata Toleransı çözümü sadece blok zincir teknolojilerinde değil aynı zamanda havacılık, uzay araştırmaları ve nükleer santral sistemlerinde de kullanılmaktadır. Verinin sağlıklı biçimde ulaşması istenilen kişiye ulaşamaması veya o kişi tarafından uygulamanın hatalı şekilde yapılması ihtimalinin bulunduğu birçok büyük projede kullanılmıştır ve kullanılacaktır.
Sonuç
Blok zincir ağlarında mutabakat protokolleri ölçeklenebilirlik probleminde önemli bir yere sahiptir. Şu ana kadar geliştirilen PoW veya PoS gibi protokollerle ölçeklenebilirlik sorununa bir nebze çözüm olmaya çalışılmıştır. Gelecekte ortaya çıkacak yeni mutabakat algoritmalarıyla ölçeklenebilirlik sorunundaki önemli bir faktörün etkisi azaltılabilir. Bu amaçla Bizans Generalleri Probleminin çözümü olan Bizans Hata Toleransını iyi anlayarak yeni mutabakat sistemleri geliştirmek dağıtık sistemlerin ve dolaylı olarak blok zincir teknolojisinin geleceği için çok önemlidir.