Mutabık olmak için Madencilik

Ali Orhun Akkirman
4 min readJun 4, 2022

--

Blokzincir ile ilgileniyorsanız mutabakat yani konsensus (consensus) kelimesini çok fazla duymuşsunuzdur. Fakat neyin mutabakatı olduğu konusunda araştırma yapılmadıkça çok fazla sezgisel yanlışlıklar yapıldığını görmekteyim. Bunlardan en önemlisi Bitcoin ile Blokzincir’i eşdeğer tutmak ve hatta diğer coinleri de blokzincir ile eşdeğer tutmak olduğunu gördüm.

Bu nedenle “mutabakat ne için?” derken öncelikle blokzincir’in en temeline gideceğiz. Yani blokzincir’i blokzincir yapan şey: “bloklar”. Öncelikle blokzincir bir “kayıt” teknolojisidir. Kayıtlar üzerinde düzenleme yapılamayan fakat işlemlerin ardı ardına işlendiği bir “kayıt defteri” olarak çalışmaktadır.

Bir işlem nasıl kayıt ediliyor?

Bir işlemin kayıt edilmesi için öncelikle detay içermeyen bir anlatımla süreci anlatmamız uygun olacaktır. Bu süreci tüm blokzincir yapılarıyla uygun olacak şekilde anlatmaya çalışacağım.

Öncelikle bir işlem talebi oluşturulması gerekmektedir. Bu işlem talebi bir düğüme (node) geldikten sonra diğer node’lara dağıtılır. Bu adım önemlidir. düğüm kavramının önemi için belki de başka bir yazıda açıklama yapabilirim. Düğümler kendi aralarında belirli bir mütabakat algoritması ile işlemi onaylar (validate). Bu adım da önemlidir. Çünkü çoğunlukla tüm düğümlerin birebir şekilde mütabık olması gerekmemektedir, belirli bir algoritmaya göre mutabık olması yeterlidir. Bu da tam olarak mütabakat yani konsensus algoritmasının konusu olduğu için bu kısmı da geçiyorum. Bu adımda elimizde konsensus sonucunda blokzincir ağı tarafından onaylanmış bir işlem bulunmaktadır. Ağ tarafından onaylanması aynı zamanda diğer nodeların da bunu kabul etmesi anlamına gelmektedir.

Bu adımdan sonrası biraz daha basit. Kendinden önceki işlem ile art arda birleştirilir ve belirli işlem sonrasında blok oluşturulur. Bu blok boyutu da blokzincir uygulamasından uygulamasına değişebilmektedir. Daha sonra bu blok da kendinden önceki blok’a eklenme şeklinde zincire eklenir. Bu şekilde en başta belirtilen işlem onaylanmış ve tamamlanmış olur.

Mutabakat dedik, peki ne bu mutabakat? Madencilik mi?

Öncelikle kısa cevap, hayır. Daha doğrusu madencilik mutabakat için bir yöntemin uygulaması. Aslında dahiyane bir fikir olmasına rağmen yavaşlık ve enerji tüketimi doğuran bir kavram.

Öncelikle aşağıdaki kıyaslamaya göre anlaşalım ki mutabakat algoritmalarını özel ve herkese açık ağ algoritmaları şeklinde kabaca ikiye ayırabiliriz. Bu şekilde ayırmamızın ana nedenlerinden birisi özel ağlarda izinli bir yapı oluşturulmasından dolayı oradaki mutabakat algoritmalarını ayrı şekilde incelemek olacaktır.

Herkese açık blokzincir ağı için de aslında sadece burada bahsedeceğimiz PoW (İş Kanıtı) ve PoS (Hisse Kanıtı) yöntemleri bulunmuyor fakat anlaşılması için ilk olarak bu ikisinden bahsedeceğim.

PoW, yani “İş Kanıtı” 1993 yılındaki bir makalede bahsedilmiş olan ve 1999 yılında literatüre dahil olan bir protokoldür. Tabi ki ilgili yıllarda daha fazla DDoS gibi saldırıların engellenmesi alanında kullanılmakta idi. 2008 yılında Satoshi Nakamoto’nun Bitcoin’in altyapısını anlattığı makalede kullanılması ile blokzincir dünyasına da girmiş oldu ve blokzincir’in daha fazla incelenmesine neden oldu da denebilir. Hem de şuan Kriptopara’larda en yaygın kullanılan protokol olarak karşımıza çıkmaktadır.

Blokzincir’e en önemli katkısı, merkezi bir otorite olmadan hesaplama gücü ile yeni bir işlemin onaylanması için belirli bir ödül karşılığında yapılması olarak özetlenebilir. Tekrar yazmak isterim ki bu mutabakat tüm Blokzincir ağlarında bu şekilde değildir.

Özetle, PoW protokolü ile işlemci gücünün çoğunluğunu elinde tutan daha fazla söz hakkına sahip olduğu bir sistemdir. Ve bu işlemi yapanlara madenci denmektedir.

PoS, yani “Hisse Kanıtı” ise 2012 yılında, özellikle PoW protokolündeki yüksek enerji tüketimi sorununa karşı olarak bir makalede sunulmuştur. PoS’da ise işlemci gücüne bakılmaz dolayısıyla blokzincir üzerinde bir blok oluşturabilmek için farklı kullanıcıların (doğrulayıcı) işlemi gerçekleştirmesi ve çoğunluğu sağlamasını beklemektedir. Dolayısıyla işlem ücreti kazanmanın devam ettiği fakat zor bir hash çözmek yerine farklı hisselere sahip doğrulayıcıların onaylaması mütabakatına dayalı bir sistem olarak düşünülebilir.

Tabi ki PoS’un tek bir çeşidi olmamasına rağmen bu giriş yazısında bu seviyede keseceğim. Yazının yazıldığı tarih açısından bir bilgi olarak Etherium 2.0 ile PoS altyapısına geçilmesi planlanmakta ve azalan hesaplama maliyetleri ile çeşitli kullanım alanlarına yönelik uygulamaların daha çoğalacağı ve geliştirileceği düşünülmekte.

Madencilerden generallere

PoW ve PoS için herkese açık ağ üzerinde iş(emek) ve hisseye dayalı olarak madencilerle mütabakat yapılma sürecini anlattım. Fakat “özel ağ” işin içine girince madalyonun yönü değişiyor.

Öncelikle 1982 yılında bir makalede açıklanan ve Bizans Generalleri Problemini çözen BTF (Bizans Hata Toleransı) algoritmasından bahsedeceğim. Öncelikle bunu neden anlatacağımızı tekrarlayayım: Mutabakat (konsensus) için.

Hikaye bu ya generaller bir şehri farklı noktalardan kuşatıyorlar. Saldırı veya geri çekilme konusunda mutabakat sağlamak istiyorlar. Bu da %50'sinden fazlasının saldırı emrini gerçekleştirmesi gibi düşünebiliriz. Fakat birbirlerine sadece ulak yolu ile haber yollayabilmekteler. Dolayısıyla bugünkü gibi anlık iletişim kurmaları pek mümkün değil.

Generaller birbirlerine ulak vasıtasıyla saldırı emrini söyleyebilirler fakat içlerinden bazıları mesajı alamama, mesajı yanlış yayma veya mesajı desteklememe (ihanet) gibi durumlar da olabilmektedir. Özellikle general sayısı arttıkça bu iletişimdeki sıkıntıların artacağı da kesindir.

1982'deki makale bu durumda mutabakat için toplam general sayısının 2/3'sinin dürüst-yaşayan general olması gerektiğini ve bu şekilde Bizans Hata Toleransı’nın sorun oluşturmayacağını söylemekte.

Peki ya blokzincirde bunlar ne anlama geliyor?

Özel blokzincir ağı üzerinde bu dürüst-yaşayan generaller sağlandığında BTF üzerinde sorun olmamaktadır. Açık ağda ise PoW ve PoS’ta burada yer alan risklerin çözümü olarak iş ve hisse ispatı ile süreci dağıtık ortamdaki madencilere verdiklerini söyleyebiliriz. Yani madenciler veya generaller blokzincir üzerinde birer node’u temsil ediyor.

Aslında tüm bu süreçler blokzincir ağının içerisindeki işlemlerin doğru şekilde devam etmesi için kullanılmaktadır. Çok klasik bir örnek olarak 1 coin’i Ali kişisi Veli’ye göndermişse, tekrardan Ali’deki 1 coin’in başka bir hesap olan Zeki’ye gidememesi gerekmektedir. Çünkü 1 coin Veli hesabına gitmiş olmalıdır. Bu konuda mutabakat sağlanmış olmalıdır.

Tüm mütabakat algoritmaları bunlar mı?

Hayır değil, bir çok mütabakat algoritması ve türü gelişmeye devam etmekte. Bunlar hem akademik hem pratik olarak yoğunlukla çalışılmakla birlikte aşağıdaki ana başlıklarda bir çok konsensus algoritması bulunmaktadır.

  • Proof of Work (PoW)
  • Proof of Stake (PoS)
  • Byzantine Fault Tolerance (BFT-bazlı)
  • Proof of Capacity/Space
  • Proof of Burn
  • Directed Acyclic Graphs (DAG)
  • Hibrit modeller

--

--

Ali Orhun Akkirman
Ali Orhun Akkirman

Written by Ali Orhun Akkirman

Sistem Yönetim Yazılım Geliştirme Takım Lideri @HAVELSAN

No responses yet