Skip to content

Blockchain Konsensüs Nedir? (Consensus)

    Konsensüs (Consensus) Türkçe karşılığı uzlaşma olan ve tanım olarak “tartışmalı bir konuda uzlaşılarak ulaşılan genel görüş birliği” olarak adlandırılır. Daha genel ve basit bir dil ile anlatmak gerekirse, bir grup içerisinde karar vermek ya da fikir birliğine ulaşmak anlamını taşımaktadır.

    Blockchain mimarisinde ise konsensüs yapısı ve işleyişi bir zincirin güvenli bir şekilde hayatta kalması için elzem olan bir durumdur. Küçük gruplar içerisinde uygulanması kolay konsensüs mekanizmaları, karara fikir beyan eden insan sayısının artması ile daha karmaşık ve sonuca varılması bir güç halini alıyor. Örneğin 10 kişilik bir grup içerisinde akşam yemeğinin ne olacağına karar vermek ile 1000 kişilik bir grup içerisinde karar vermekten daha kolaydır. Blockchain yapılarında dağıtık bir şekilde bulunan binlerce node (düğüm) nasıl birbirleri ile iletişime geçip, hepsi aynı kararı almayı başarabilmektedirler? ve bir blockchain için en önemli karar, zincirde bir sonraki bloğun hangisi olması gerektiği sorusu nasıl çözülmektedir? Bu yazıda ise en çok bilinen klasik konsensüs ve Nakamoto konsensüs yapılarından bahsedeceğim.

    Consensus Protocols: How Are Blockchains Secure? | Ledger
    Merkezi ve Merkezi Olmayan Konsensüs
    Fotoğraf: Ledger.com

    Ancak ondan önce konsensüs neden önemli o konuya değinelim. Örneğin bir bankadan başka bir bankaya yapacağınız 100 liralık transfer ve bu işlemin kontrolünü yani karar mekanizmasını banka sağlıyor. Sonuç olarak banka sizin hesabınızdan 100 lirayı alıyor, gönderdiğiniz hesaba tanımlıyor ve bunu yaparken bütün kayıtlar banka veri tabanlarında tutuluyor. Bu örnekte işlemin sonuca ulaşması için tek bir yapının onayına (banka) ihtiyacımız var ve bütün kayıtlar tek bir noktada toplanıyor. Dağıtık defter teknolojisinde ise işlem kayıtları birden fazla yerde tutulur ve işlemlerin sonuca ulaşması için birden fazla onaylayana (validator) ihtiyaç duyarız. İşte tam bu noktada validator sayısı ve işlem sayısı arttıkça hangi işlemin doğru olduğu ve kayıt altına alınacağı önem kazanmaya başlıyor. Burada yardımımıza konsensüs yapıları yetişiyor. Birden fazla validator barındıran yapılarda bunların birbirleri ile iletişimi ve aynı sonuca ulaşması için bir karar mekanizması gerekmektedir. Tam bu noktada karşımıza konsensüs mekanizmaları çıkmaktadır.

    Klasik Konsensüs Nedir?

    Klasik konsensüs yapısı günümüzde kullanılan blockchain sistemlerinden çok uzun süre önce 1980 ve 1990 yıllarına kadar dayanmaktadır. Klasik olarak adlandırılmasının en büyük sebeplerinden birisi ise 2008 yılında Satoshi Nakamoto’nun Bitcoin ile Nakamoto konsensüsü tanıtmasıdır. Bu yapılar ilk çıktıklarından itibaren merkeziyetsizlik önem derecelerine göre dağıtık veri tabanlarında kullanılmaya başlanmıştır. Bunun ilk örneği Leslie Lamport tarafından ortaya atılan Paxos mekanizmasıdır. Ancak bu ilk yapılara baktığımızda bazı noktalarda yetersiz kaldıklarını görüyoruz. Örneğin validator sayısı fazla olan yapılarda, validatorların iletişimi zorlanmaya başlıyor ve genel bir fikir birliğine (konsensüs) varılamamış oluyor. Bu da yapı içerisinde büyük sıkıntılara sebep olmakta. Ancak bu tip konsensüslar, karar verici validator sayısı az olan yapılar için kullanışlı olamaya devam etmekte. Karar verici validator nedir peki? Örneğin bazı yapılarda 500 tane validator varken bir karar birliğine varılmaya çalışılırken sadece 50 tanesi karara katılabilmekte. İşte bu noktada o 50 tane validator karar verici validator olmuş oluyor. Ancak klasik konsensüslarda büyük problemler ve zorluklar vardır. Bunları genel olarak 3 başlık altında toplayabiliriz. Bunlardan ilki sistem içerisinde çalışan validatörler birbirleri ile iletişim kurarken, birinci dereceden önemli bilgilerini gizleyemiyorlar. Örneğin 1 numaralı validatör 3 numaralı validatör ile iletişim halindeyken IP adresleri açık bir şekilde iletişim kuruluyor. Açık IP adresinden kaynaklı, bu zincir ya da yapıya zarar vermek isteyen bir kullanıcı validatorlere saldırarak onları ağ dışına atabilmekteydi. İkinci en büyük sorun ise ağ içerisine yeni bir validator ekleneceği zaman bunun diğer tüm validatörler tarafından kabul edilmesi gerekmekteydi. 100 validatörden 1 tanesi bile yeni gelecek olan validatörleri kabul etmediği sürece yapıya yeni bir validator eklenememekteydi. Bu durumdan dolayı bu tarz yapılar izne tabi (permission) yapılardır. Üçüncü ve en büyük problem ise ölçeklenebilirlik sorunudur. Ölçeklenememe sorunu bir önceki sorun ile bağdaşmaktadır. Sistem üzerine yeni validatörlerin katılması giderek zorlaştığı için yapı her ne kadar dağıtık şekilde olsa da bu dağıtık defterler küçük bir azınlığın elinde bulunuyor. Tam anlamıyla merkeziyetsiz bir yapıdan bahsedemiyoruz.

    Nakamoto Konsensüs Nedir?

    2008 yılına geldiğimizde Satoshi Nakamoto, günümüzde birçok blok zincirin kullandığı Nakamoto konsensüsünü tanıtıyor. Nakamoto konsensüsü en basit tabir ile en uzun zincir kuralına göre riayet eder. Bunun yanı sıra Nakamoto klasik konsensüslarda bulunan zorlukları ortadan kaldıran bir teknoloji sunuyor. Klasik konsensüs yapılarında yer alan sorunlardan olan validatorün IP adresini gizleyememe sorunu, Satoshi Gossip Protokol ile çözüyor. Gossip protokol nodeların birbirleri ile hızlı ve güvenli bir şekilde iletişim kurmasını sağlar. Her bir node ağda senkronize kalabilmek için durum bildirimleri yapar bu durum bildirimleri diğer nodelar tarafından izlenir. Böylece ağ üzerinde node çalıştıran kişinin bilgileri açığa çıkmadı için bir siber saldırıya maruz kalmıyor. Nakamoto konsensüs aynı zamanda diğer konsensüslarda olan bir diğer problem permission yapısını da değiştiriyor. Önceki ağlarda validator olmak için diğer validatorların hepsinin onayına ihtiyacınız varken, Nakamoto’da bu durum permissionless (onaysız) bir şekilde yapılmaktadır. Yani ağ üzerinde node çalıştırmak isteyen bir kişi diğer validatorlardan izin almak zorunda değil. Sadece en güncel versiyonu indirip node kurup hızlıca sisteme adapte olabilir. Bu sebeple Nakamoto Konsensüsü diğer yapılara göre çok daha dağıtık bir defter yapısına ve merkeziyetsizliğe sahiptir. Nakamoto bir diğer problem olan ölçeklenebilme sorunu da çözmektedir. Yapılan bu iki değişiklik ile ağa hızlı ve güvenli bir şekilde katılınabiliyor olması, ağı güvenli bir yapıya dönüştürmektedir.

    Why Proof of Work Based Nakamoto Consensus Is Secure and Complete –  Etherplan
    Nakamoto Konsensüs ve Çalışma Şeması

    Elbette Nakamoto konsensüsünün da problemleri vardır. Örneğin diğer yapılarda sonuçlar kesinlik kazanırken, Nakamoto konsensüsünde sonuçlar hiçbir zaman kesin değildir. Daha da güzel bir örnek ile açıklamak gerekirse, Bitcoin ağı üzerinde yaptığınız sonuçlar hiçbir zaman %100 oranında kesinlik kazanmayacaktır. (Buna probabilistic finality diyoruz) Öte yandan klasik konsensüslarda ise bu durum kesin bir sonuca bağlanır. Yapılan bir işlem %100 oranında kesindir ve sonradan değiştirilemez. Bitcoin tarafında yapılan bir transferin ise 6 blok onayından sonra %99 oranında kesinlik derecesine ulaştığı söylenebilir. Bu durumu daha iyi inceleyebilmek adına zincir yapılarında %51 atak konusuna bakabilirsiniz.  

    Konsensüs Algoritmaları Nedir?

    Proof of Work (POW) ya da iş ispatı olarak bilinmektedir. Proof of Stake (POS) ise pay ispatı olarak bilinmektedir. Blockchain teknolojisinde en çok karıştırılan ve teknik olarak yanlış anlaşılan yapılar bunlardır. POW ve POS teknik olarak bir konsensüs türü değildir ancak kolay kullanım ve anlamlandırma açısından o şekilde algılanmaktadırlar. POW ve POS temel olarak sybil atak için bir koruma oluştururken, zincir üzerine eklenecek bir sonraki bloğun kim tarafından eklenileceğinin seçilmesi için kullanılan bir mekanizmadır. Ethereum ve Bitcoin gibi en uzun zincir kuralını kullanan yapılar en uzun blok zinciri hangisiyse, diğer düğümlerin geçerli olarak kabul ettiği ve birlikte çalıştığı blok zinciri olacağı anlamına geliyor. Sıradaki bloğun kim tarafından ve nasıl zincire ekleneceği sorunları için POW ya da POS kullanana zincirler belirli koşullar uygulamaktadır. Örneğin POW ile çalışan bir zincirde, en uzun zincir, zincirin toplam kümülatif iş ispatı zorluğu ile belirlenir. Yani bir kişi iş ispatı (enerji harcamadan) bir blok üretip zincire eklediği zaman bu blok kabul edilmez ve o eklenen bloktan sonra zincir devam etmez. POS kullanan zincirlerde ise bu durum pay ispatı ile gerçekleşir. POW mekanizmasında biz yüksek verimliliğe sahip cihazlar kullanarak siteme bağlanıp iş ispatı yaparken, POS’da ise zincir üzerine kitlendiğimiz token ile bu ispatı yapıyoruz.

    Özetlemek gerekirse, konsensüs mekanizmları ağlardaki valitadorlerin birbirleri ile iletişime geçip ortak bir karar vermeleri için gereken bir yapıdır. POW ve POS ise sistemi dışarıdan gelecek olan saldırılara karşı koruyacak olan bir güvenlik mekanizmasıdır.