Mutabakat Algoritması Nedir?
Mutabakat Algoritması Nedir?
Ana sayfaMakaleler

Mutabakat Algoritması Nedir?

Başlangıç Seviyesi
Published Dec 13, 2018Updated May 11, 2021
7m


İçerik


Giriş

Mutabakat algoritması, kullanıcıların ya da makinelerin dağıtılmış bir çevre içinde koordine olmasını mümkün kılan mekanizmadır. Sistemdeki tüm birimlerin tek bir gerçek kaynağına yönelik fikir birliğine varmasını sağlamalı ve bunu bazı birimler başarısız olsa bile yapabilmelidir. Diğer bir deyişle sistem, hataya toleranslı olmalıdır (bknz: Bizans Hata Toleransı Nedir?).

Merkezi bir düzende tek bir birim sistem üzerinde güce sahiptir. Çoğu durumda bu birim keyfi değişiklikler yapabilir – çok sayıda idarecinin fikir birliğine varmasına yönelik karmaşık bir idari sistem bulunmaz. 

Fakat merkezi olmayan bir düzende sistem tamamen başka şekilde çalışır. Dağıtılmış bir veritabanı ile çalışıyorsak hangi girdilerin ekleneceğine yönelik nasıl fikir birliğine varabiliriz?

Birbirlerini tanımayan kişilerin karşılıklı güven duymadığı bir çevrede bu zorluğun üstesinden gelinmesi muhtemelen blockchainler için yolu açan başlıca gelişmedir. Bu makalede kripto paraların ve dağıtılmış kayıt defterlerinin çalışabilmesinde mutabakat algoritmalarının önemini inceleyeceğiz.


Mutabakat algoritmaları ve kripto para

Kripto paralarda kullanıcıların bakiyeleri bir veritabanına yani blockchaine kaydedilir. Herkesin (daha doğrusu her node'un) veritabanının birebir bir kopyasını tutması çok önemlidir. Aksi takdirde ortaya çelişkili veriler çıkar, bu da kripto para ağının tüm amacına aykırıdır.
Açık anahtar kriptografisi kullanıcıların kendilerine ait olmayan coinleri harcayamamasını garanti altına alır. Fakat yine de ağ katılımcıları fonların halihazırda harcanıp harcanmadığını belirleyebilmek için gerçeğe yönelik tek bir kaynağa ihtiyaç duyar.
Bitcoin'in yaratıcısı Satoshi Nakamoto katılımcıları koordine etmek için bir Proof of Work (iş ispatı) sistemi ortaya atmıştır. Birazdan PoW'un nasıl çalıştığını ayrıntılı inceleyeceğiz ama şimdilik mevcut birçok mutabakat algoritmasında ortak olan bazı özelliklerden bahsedeceğiz.
İlk olarak, blok eklemek isteyen kullanıcıların (bu kişilere doğrulayıcı diyeceğiz) ortaya bir stake koyması gereklidir. Stake, doğrulayıcıları dürüst davranmamaktan caydıracak, ortaya konan bir değerdir. Eğer hile yaparlarsa ortaya koydukları değeri kaybederler. Stake örneği olarak hesaplama gücü, kripto para ve hatta itibar bile verilebilir. 
Peki bu kişiler neden kendi kaynaklarını riske atar? Çünkü bunun karşılığında bir ödül alırlar. Bu ödül genellikle protokolün yerel para biriminden oluşur ve kullanıcıların ödediği işlem ücretlerinden, yeni yaratılmış kripto para birimlerinden ya da her ikisinin birleşiminden meydana gelir.
Son olarak ihtiyacımız olan şey şeffaflıktır. Bir kişinin hile yaptığını belirleyebilmek mümkün olmalıdır. İdealde bu kişilerin blokları yaratması masraflı olmalı fakat doğrulamalar herkes tarafından masrafsız bir şekilde yapılabilmelidir. Böylece doğrulayıcılar, standart kullanıcılar tarafından kontrol altında tutulur.


Mutabakat algoritması türleri

Proof of Work (PoW)

Proof of Work (PoW) blockchain mutabakat algoritmalarının atasıdır. İlk olarak Bitcoin tarafından uygulamaya konmuştur ama aslında kavramın kendisi Bitcoin'den önce de mevcuttur. Proof of Work'te doğrulayıcılar (madenciler olarak adlandırılırlar) eklemek istedikleri verileri belirli bir çözüme ulaşana kadar hash eder.
Hash, veriyi bir hash fonksiyonundan geçirdiğinizde ortaya çıkan rastgele görünümlü sayılar ve harflerden oluşur. Fakat aynı veriyi bir kez daha hash ettiğinizde her zaman aynı çıktı ile karşılaşırsınız. Veride tek bir ayrıntıyı bile değiştirmeniz tamamen başka bir sonuç verecektir.

Çıktıya bakarak fonksiyona sokulan girdiyi tahmin etmek imkansızdır. Bu nedenle hash'ler bilginin belirli bir tarihten önce elinizde olduğunu kanıtlayabilmeniz için kullanışlıdır. Verinin hash'ini bir kişiye verebilirsiniz ve daha sonra verinin kendisini de paylaştığınızda bu kişi çıktının aynı olduğunu kontrol etmek için veriyi hash fonksiyonundan geçirebilir.

Proof of Work'te, bir bloğu geçerli kılacak koşullar protokol tarafından belirlenir. Örneğin protokol, hash değeri yalnızca 00'la başlayan bloklar geçerlidir diyebilir. Madencinin bu kombinasyona uygun bir hash değerine ulaşmasının tek yolu birçok girdiyle deneme yapmasıdır. Doğru hash'i tahmin edene kadar farklı bir çıktı yaratmak için verideki bir parametrede küçük değişiklikler yapabilir. 
Büyük blockchainlerde zorluk seviyesi son derece yüksektir. Diğer madencilerle rekabet edebilmek için ancak özel hashing donanımlarıyla (ASIC'ler) dolu bir depoya sahipseniz geçerli bir blok yaratmak şansına sahip olabilirsiniz.
Madencilik yaparken ortaya koyduğunuz değer (stake) makinelerin ve bu makineleri çalıştırmak için gerekli elektriğin masrafıdır. ASIC'ler tek bir amaç için yaratılmıştır dolayısıyla kripto para madenciliği dışında kullanılmaları mümkün değildir. Başlangıçta yaptığınız yatırımın karşılığını alabilmenizin tek yolu, blockchaine başarıyla bir blok eklemeniz durumunda yüksek tutarda bir ödül sunan madenciliktir.

Ağın, geçerli bir blok oluşturduğunuzu doğrulaması oldukça kolaydır. Doğru hash'i bulmak için trilyonlarca kombinasyon da denemiş olsanız, doğrulama yapmak için verinin fonksiyondan bir kez geçirilmesi yeterlidir. Eğer veri geçerli bir hash üretirse kabul edilir ve siz de ödül kazanırsınız. Aksi takdirde ağ bloğu reddeder ve siz de boşuna zaman ve elektrik harcamış olursunuz.


Proof of Stake (PoS)

Proof of Stake (Stake İspatı/PoS), Bitcoin'in ilk günlerinde Proof of Work'e alternatif olarak sunulmuştur. Bir PoS sisteminde madencilik kavramı, özel donanımlar ya da çok yüksek enerji tüketimi yoktur. Tek ihtiyacınız standart bir bilgisayardır.
Aslında bu tam olarak yeterli değildir. Ortaya koyarak riske atacağınız bir şey de olması gereklidir. PoS'ta ortaya koyduğunuz bir dış kaynak (elektrik ya da donanım gibi) değil, bir iç kaynak yani kripto paradır. Kurallar protokole göre farklılık gösterir ama genellikle staking yapmaya uygun olabilmek için elinizde belirli bir tutarın üzerinde fon bulunması gerekir.
Bu aşamada fonlarınızı bir cüzdana kilitlersiniz (staking yaptığınız müddetçe fonları hareket ettiremezsiniz). Genelde diğer doğrulayıcılarla hangi işlemlerin bir sonraki bloğa ekleneceğine yönelik ortak karar alırsınız. Bir bakımdan seçilecek blok üzerine bahse girersiniz ve protokol de bir blok seçer.
Eğer sizin bloğunuz seçilirse, ortaya koyduğunuz değere bağlı olarak işlem ücretlerinden bir pay kazanırsınız. Ne kadar çok fon kilitlerseniz, kazancınız da o kadar yüksek olur. Fakat geçersiz işlemler önererek hile yapma girişiminde bulunursanız stake'inizin bir kısmını (ya da tamamını) kaybedersiniz. Dolayısıyla burada da PoW'a benzer bir mekanizma vardır:  dürüst davranmak hile yapmaktan daha karlıdır.
Genellikle doğrulayıcı ödülleri yeni yaratılan coinlerden oluşmaz. Bu nedenle blockchainin yerel para birimi başka bir yoldan çıkarılmalıdır. Bunu yapmak için ya başlangıçtaki dağıtımlar (örn. bir ICO ya da IEO) kullanılabilir ya da protokol PoW ile kullanıma açılır ve daha sonra PoS'a geçer.

Bugüne kadar saf Proof of Stake protokolleri yalnızca daha küçük kripto paralar tarafından kullanılmıştır. Bu nedenle PoW'a karşı geçerli bir alternatif olup olmadıkları net değildir. Teorik olarak geçerli gibi gözükseler de uygulamada sonuçlar çok farklı olabilir. 

PoS, yüksek değere sahip bir ağda kullanıma açıldığında sistem oyun teorisi ve finansal teşvikler için bir oyun alanı haline gelecektir. Bir PoS sisteminin nasıl “hackleneceğini” bilen bir kişi eğer kazanç elde edecekse yüksek ihtimalle bunu yapacaktır. Bu nedenle sistemin uygulanabilir olup olmadığı ancak canlı bir ağ üzerinde anlaşılabilir.
Yakın zaman içinde Ethereum ağına yapılacak yükseltmelerin (genel olarak Ethereum 2.0 olarak biliniyor) bir parçası olarak Casper'ın uygulamaya konmasıyla PoS'un büyük ölçekte test edilmesi mümkün olacaktır.


Diğer mutabakat algoritmaları

Proof of Work ve Proof of Stake en çok tartışılan mutabakat algoritmalarıdır. Fakat her biri kendi avantajlarına ve dezavantajlarına sahip başka birçok algoritma vardır. Aşağıdaki makalelerden daha fazla bilgiye ulaşabilirsiniz:


Son düşünceler

Mutabakata varabilmeye yönelik mekanizmalar dağıtılmış sistemlerin çalışabilmesi için çok önemlidir. Birçok kişi Bitcoin'in ortaya koyduğu en önemli yeniliğin, kullanıcıların ortak bir gerçeğe yönelik fikir birliğine varmasını mümkün kılan Proof of Work olduğunu düşünür.

Günümüzde mutabakat algoritmaları yalnızca dijital para sistemlerinin değil, geliştiricilerin dağıtılmış bir ağ üzerinde bir kod çalıştırmasını mümkün kılan blockchainlerin de temelini oluşturur. Mutabakat algoritmaları artık blockchain teknolojisinin dönüm noktaları olarak kabul edilmektedir ve mevcut ağların uzun vadede hayatta kalabilmesi için kritik öneme sahiptir.

Tüm mutabakat algoritmaları arasında Proof of Work sunduklarıyla en güçlü konumdadır. Daha güvenilir ve güvenli bir alternatif henüz sunulmuş değildir. Bununla birlikte PoW'un yerine geçecek bir algoritmaya yönelik çok sayıda araştırma ve gelişmekte yapılmaktadır ve önümüzdeki yıllarda yeni alternatiflerin ortaya çıkması olasıdır.