Blockchain & Kripto Para Eğitmeni

Devrim Danyal  

 

Blockchain & Kripto Para Eğitmeni Devrim Danyal, Fintechtime okurları için kaleme aldı,”Veri İletişiminde İki Generalin Ne Problemi Olabilir”.

İki general paradoksu veya iki ordu problemi olarak da bilinen iki general problemi, herhangi bir karışıklığı önlemek için klasik bir bilgisayar bilimi ve bilgisayar iletişim hatası deneyidir.

İki General problemi, Bizans generalleri problemi ile ilgili olmasına rağmen aynı şeyler değildir. Bizans general problemi, iki general probleminin daha genel bir versiyonudur ve genellikle dağıtılmış sistemler hata toleransı ve blokzinciri hakkında konuşurken tartışılır.

İki generalin ortak bir düşmana saldırı düzenlediğini, iki ordunun düşman şehrin vadisinde olduğunu ve iki generalin sahip olduğu tek bir orduyla kolayca savaşabilecek güçlü bir savunmaya sahip olduğunu hayal edelim. Senkronize bir saldırı planlamak için birbirleriyle iletişim kurmaları gerekir. Çünkü birbirleriyle iletişim kurmak onların kazanmak için tek şansıdır. Bu iletişimi kurmak için habercilere ihtiyaç bulunur.

İki General arası gönderilen habercilerden biri ele geçirilirse ve taşıdığı mesaj kaybolursa sorun gündeme gelir. Her general, diğer generalin ne zaman saldıracağını bildiğini bilmek ister, aksi takdirde bir general, diğerinin tek başına saldırıp saldırmadığından emin olamaz ve bildiğimiz gibi tek başına saldırmak oldukça anlamsız olur.

Şimdi basit bir senaryo işletelim, generallerimizi A ve B olarak adlandıralım ve her şeyin mükemmel gittiğini varsayalım. General A lider olarak yarın saldıracağına dair bir haberciyi General B’ye yolluyor. General B mesajı alıyor ve saldırıyı onayladığına dair bir onay mesajını General A’ya geri gönderiyor. General B’nin bu onayı, generaller arasında bir fikir birliği oluşturmaya yetecektir. Buraya kadar her şey tıkır tıkır işliyor.

Ancak General B, General A tarafından onayının alınıp alınmadığını hala bilemiyor zira General A’dan herhangi bir teyit alamamış durumdadır.

Teyit gelmediği sürece General B nasıl emin olacak? Yarın saldırıya geçecek mi? geçmeyecek mi? Bu teyide muhtaç bir bilgi olarak havada kalmış pozisyondadır.

İkinci bir senaryoda ise her seferinde birbirlerine teyit habercisi gönderirlerse, bu da ayrı bir sorun oluşturur ve sonsuz bir haberci trafiği ve teyit alışverişi ile sonu gelmez.

İlk senaryonun farklı bir versiyonunu göz önüne alırsak, General A’nın göndermiş olduğu mesaj üzerinden bir süre geçti ve General A, mesajına ne olduğunu merak etmeye başladı, çünkü General B’den geri dönen bir onay yok…

Burada iki olasılık var;

İlki; general tarafından gönderilen mesajı taşıyan haberci yolda yakalandı ve mesajı General B’ye teslim edemedi.

İkincisi ise; General A habercisi mesajı başarıyla iletti ancak General B’nin mesajı aldığına dair onayı taşıyan General B habercisi yolda yakalandı ve mesajı General A’ya ulaşamıyor.

Her iki senaryoda da gönderilen haberci ya da teyit mesajı ele geçirildi. Bu doğrultuda; General A’nın mesajının kaybolup kaybolmadığını ya da General B’nin onayının ulaşıp ulaşmadığını bilemedikleri için bir daha fikir birliğine varamazlar.

General A ya da B’nin kendi kendine saldırmasıyla sonuçlanacak tutarsız bir durum, ne kadar farklı senaryo denersek deneyelim ve kaç mesaj gönderdiğimizden bağımsız olarak, fikir birliğine varıldığını garanti edemeyeceğimizi ve her generalin müttefikinin iradesinden emin olduğunu çabucak anlayabiliriz. Saldırıyı netleştirmek için aynı anda iki general sorunun çözümü yok, bu yüzden de sorun çözülemez hale geliyor…

Şimdi burada iletişim iki general yerine iki bilgisayar sisteminin birbiriyle konuştuğunu hayal edelim… Buradaki asıl sorun yine emanet edilen iletişim kanalı ve iki makine arasındaki tutarsız durum, iki general sorunu hakkında konuşurken her zaman ortaya çıkan çok yaygın bir örnek iletimdir.

Bilgisayar veri iletimi protokollerinden kontrol protokolü olan TCP (Transmission Control Protocol), bu mekanizmada bağlantıyı sonlandırmak için dört yönlü el sıkışma adı verilen bir mekanizma kullanır. Gönderilen ilk iletişim talebi, iletişim kanalının diğer tarafındaki sistem bir ACK (Acknowledge) ile yanıtlayıp gönderdiği için bir bağlantıyı cevaplayarak karşı tarafa yardımcı olur. İlk mesaj ve takip eden tüm bu mesajların doğru bir şekilde alındığı, sonlandırmayı başlatan sistemden başka bir ACK tarafından takip edilir, her iki taraf da bağlantının şu ana kadar sonlandırıldığını bilir. Ancak burada sorun yine iki sistem arasındaki paylaşılan bilgidir.

Örneğin, ilk mesaj başarılı ancak ikinci mesaj kaybolursa yarı açık bir bağlantıyla karşılaşırız. İlk taraf, bağlantının kapatıldığının farkında değil, bu yüzden TCP çok güvenilir bir protokol olmasına rağmen, iki general problemini çözmüyor, bu yüzden belki de pragmatik bir yaklaşım gerektiriyor.

Çözülemeyen bu iki general problemini çözmek için birkaç pratik yaklaşım mevcuttur.

Buradaki ana varsayım, iletişim kanalının belirsizliğini kabul etmek ve bunu yeterli derecede azaltmak üzerine kuruludur.

Generallerimize geri dönelim… General A’nın tek mesajı yerine sadece bir haberci, General B’nin en az bir mesaj alacağını varsayarak 100 mesaj birden göndersin. Her mesajı 1’den 100’e kadar başlayan bir seri numarasıyla işaretlemek, dizideki eksik numaralara dayalı olarak iletişimin ne kadar güvenilir olduğunu ölçebilir kanaldır ve uygun sayıda teyidle yanıt verir. Gönderilen kayıtlı 100 mesajdan 98 alındı geri dönüşü olursa bu aradaki bağ trafiğinin %98 oranında başarılı bir ağ olduğu kabulü temeldir. Buradaki ana amaç iletişim güvenliğinin yüzdesini yüksek tutmaktır.

Bu yaklaşımlar oldukça pahalı olsa da generallerin birbirlerinin güvenlerini kazanmaları için haberciyi feda etmek bir sorunsa, bir fikir birliği, habercilerin yokluğunun generallerin güvenini artıracağı başka bir yaklaşım da bulabiliriz.

Diyelim ki habercinin mesajı iletmesi 20 dakika sürüyor ve genel olarak haberci başarıyla geri dönebiliyor. Bu doğrultuda General B’den bir teyit gelene kadar her 20 dakikada bir General A haberciler göndermeye başlasın. General B’nin onayı, General A’dan gelen diğer habercileri bekler, ancak bu sefer de habercilerin yokluğu bu güveni artırır, çünkü generallerin bu durumda anlaştığı şey, maliyete karşı net bir hıza sahip olmaları haline dönüşür.

Özetle yaklaşımlardan hangisi bizim sorunumuza daha uygun?

İşte burada hangisinin bizim işimize yaradığına karar vermemiz ve ona göre seçim yapmamız gerekiyor.

Sizin seçiminiz hangi doğrultuda olur 😉

Teknoloji ile Kalın…