search delete menu

Teknik Detayları İle Blockchain

Bitcoin dendiğinde akla Blockchain gelmese olmaz. Evet dağıtık bir veritabanı diyoruz fakat bu Blockchain’in altyapısında tam olarak neler dönüyor, işlemler nasıl gerçekleşiyor, neden Blockchain bu kadar mükemmel gelin detaylarıyla inceleyelim.

Blok

Adından da anlaşılabileceği gibi Blockchain yaklaşımında verilerin saklandığı yapılar blok (block) olarak adlandırılır. Ve bu blok yapıları bir zincir şeklinde (zaman açısından doğrusal bir dizi yapısında) düzenlenir. Bu zincir kapsamındaki ilk blok yapısına “genesis” (başlangıç) blok denir.

Dağıtık Ağ Yapısı

Günümüz yaklaşımlarında kapalı merkezi sistemler kullanılmakta. Blockchain yapısında ise tüm bilgiler dağıtık (distributed), katılımcılara açık bir ağ yapısı üzerindeki tüm makinelerde eşlenik (bir birinin kopyası) halde tutulmaktadır. Bu şekilde tekil bir ara kuruma ihtiyaç ortadan kalkmakta, bu durumun getirdiği maliyetler ve riskler (tekil kırılma noktası: çalışmaması durumunda içinde bulunduğu tüm sistemin çökmesine neden olma) ortadan kaldırılmaktadır.

Mutabakat Mekanizması

Bir üst madde de ağ yapısı üzerindeki tüm makinelerde Blockchain ağındaki verinin eşlenik bir kopyasını barındırdığını belirtmiştik. Eşleniklik durumunu sağlamak için ağ genelinde Mutabakat (Consensus) yapılması gerekir. Blockchain ağlarında verilerin blok adı verilen yapılarda tutulduğunu biliyoruz. Blockchain ağlarında “güvenlik” tanımı, blokların içerdiği bilgilerin dış dünyadan saklanması değil, oluşturulduktan sonra içerdiği bilgilerin fark edilmeden değiştirilemeyeceğini ifade eder. Bunu sağlamak için Kriptografik Özetleme (Cryptographic Hashing) ve zaman bilgisi kullanılmaktadır. teknochain.com

Temel olarak blok iki parçadan oluşur:

  • Blok içerisindeki veriler
  • Blok içerisindeki veri bütünlüğünü kontrol etmek amaçlı üst bilgi/başlık (Block Header). Bir blok başlığı temel olarak aşağıdaki bilgileri içermektedir
  1. Bir önceki bloğa (üst blok) ait özet (hash) değeri
  2. Blok içerisindeki verilere ait Merkle kök değeri (bunu kısaca tüm verilerden tek bir özetleme verisine erişme şekli olarak düşünebiliriz)
  3. Zaman bilgisi

Blok başlığı içindeki bilgilerin toplu bir şekilde bir güvenli özetleme algoritmasından geçirilmesi ile o bloğa ait olan özetleme bilgisine (block hash) ulaşılır.

Fark edebileceğiniz gibi her blok kendisinden önceki bloğa ait özetleme bilgisini içermektedir. Bu bilgiyi içeren bloğun özeti ise bir sonraki blok için kullanılacak özetleme bilgisini elde etmekte kullanılmaktadır.

Bu yapıda kötü niyetli birisinin, Blockchain ağı üzerinde hedef aldığı bir blok içeriğini değiştirebilmesi için hem hedef bloğu hem de ondan sonra gelen tüm blokları değiştirmesi gerekmektedir. Blok üretiminin sürekliliği (saldırgan değişim yaparken Blockchain’e yeni blokların katılıyor olması) ve blok üretim yaklaşımlarının yapılarından dolayı bu senaryo teorik olarak gerçekleştirilebilecek olsa da pratikte gerçekleştirilmesi normal koşullarda mümkün görülmemektedir. Dağıtık bir mimaride bulunan her bir düğüm (alternatif olarak “makine” ifadesi kullanılabilir. İngilizce orijinal kullanımı ise “node” kelimesi ile ifade edilir.) üzerindeki blokların eşlenik bir yapıda olabilmesi için bu makinelerin sisteme eklenmek istenen her yeni blok için bir mutabakat yaklaşımı sergilemesi gerekmektedir. Blockchain platformları bu konuda farklı çözümler sunmaktadır. Bunlardan en çok kullanılan üç tanesini incelersek

Proof of Work

Bu yapıda sistemin bir blok yapısını hazırlayıp, ilgili Blockchain ağına eklenmesinin yönetimi için çözülmesi zor ama çözümün doğruluğun kontrolünün kolay olduğu bir problem üzerinden ilerlenir. Bu konuda en çok kullanılan problem türü, hazırlanan bloğa ait özetleme (hash) değerinin belirli bir yapıya (tanımlanmış bir değer aralığı içerisinde olma, belirli bir karakter dizisi ile başlama gibi) uymasıdır. Özetleme (hash) fonksiyonları yapı itibari ile tek yönlü olduklarından ve çıktıları tahmin edilemediğinden uygun bir değer üretilmesi için oldukça fazla sayıda deneme yapılması gerekmektedir. Örneğin Bitcoin yapısında ağustos 2017 itibari ile saniyede ortalama 4×10^20 hash işlemi yapılmakta ve ortalama olarak 10 dakikada bir Proof of Work yapısına uygun blok üretilebilmektedir. Ancak paylaşılan bir özetleme (hash) değerinin kontrolü için sadece ilgili blok içerisinde özetleme (hash) değerinin bir defa hesaplanması yeterlidir.

Şu andaki en popüler Blockchain platformu olan Bitcoin üzerinde bu mutabakat yaklaşımı kullanılmakta ve ilgili süreç madencilik (mining) olarak adlandırılmaktadır. Basit bir şekilde bu süreci incelersek:

  1. Yeni blok içerisinde yer alması istenen işlemler/veriler seçilir.
  2. Bu işlemler/veriler kullanılarak Merkle ağacı yapısı ve Merkle kök değeri oluşturulur.
  3. Merkle kök değeri, bir önceki bloğun özetleme değeri, zaman bilgisi ve ardışık olarak artan bir sayaç olarak tanımlanabilecek “nonce” değeri kullanılarak blok başlığını oluşturulur.
  4. Blok başlığı özetlenerek (hashing) uygun bir değer (belirli bir karakter kümesi ile mi başlıyor gibi) oluşup oluşmadığı kontrol edilir.
  5. Eğer uygun bir blok özetleme değeri oluştu ise yeni blok başarılı bir şekilde oluşturulmuş demektir, bu bilgi ağ üzerindeki tüm makineler ile paylaşılır.
  6. Eğer uygun bir blok özetleme değeri oluşmadı ise nonce değeri arttırılarak uygun özetleme değeri yaratılmaya çalışılır. Nonce değeri limitine geldiğinde hâlâ geçerli bir blok oluşturulamadı ise (yani geçerli bir özetleme değeri oluşturulamadı ise) bu durumda blok başlığını oluşturan diğer değerlerde (blok içerisinde yer alacak işlemler kümesinin sırası, içeriği gibi) güncelleme yapılır ve akış tekrar baştan ele alınır.

Başka bir popüler Blockchain platformu olan Ethereum’da bu yaklaşımı kullanmaktadır. Proof of Work yaklaşımı, yapısındaki işlemin özel yapısı ve yüksek frekansta tekrarlanma ihtiyacından dolayı yüksek enerji tüketimi ve özel donanım gereksinimleri ortaya çıkartabilmektedir. Bu durum çalıştığı ağ yapısını bu gereksinimlerin daha elverişli olduğu (ucuz elektrik, düşük maliyetli donanım üretebilme yetkinliği) ortamlara yönlendirmesine ve dağıtık, merkezi olmayan ağ yapısının bu özelliğini zaman içerisinde belirli ölçüde kaybetmesine neden olabilmektedir. Bu durum gerek kullanılan problemlerin farklılaştırılması, gerek enerji tüketimi çıktılarının farklı şekillerde değerlendirilmesi gibi yaklaşımlarla çözülmeye çalışılmaktadır.

Proof of Stake

Bu yaklaşım kapsamında ise blok üretim ve geçerlilik onay mekanizması bloğu üreten makinenin ilgili Blockchain ağı üzerinde sahip olduğu pay ile ilişkilendirilmektedir. Bu tarz sistemlerde genellikle sistem içerisinde üretilebilecek tüm kripto para miktarı ilk başta üretilir, sistemdeki üyeler yatırımlarına göre paylarına düşen kripto paralarını alırlar, sonradan yeni eklemeler yapılmaz. Sistem kapsamındaki pay değeri temel olarak sahip olunan kripto para miktarına göre hesaplanır. Pay miktarına göre işlem yapmada farklı davranış şekilleri görülebilmektedir bunlar:

  • Bir sonraki bloğu üretecek olan makine sahip olduğu pay ile ilişkilendirilmiş bir rastlantısal fonksiyon ile belirlenebilir zira payı yüksek olan makinenin seçilme şansı daha yüksektir. İlgili makine belirli bir süre içerisinde uygun bir blok paylaşmaz ise bir sonraki makineye geçilir.
  • Bir makine belirlemesi yapılmaz, ancak pay bilgisi makinenin çözmesi gereken problemin (Proof of Work yaklaşımına benzer bir şekilde) zorluk derecesini değiştirir. Örneğin daha fazla pay sahibi olan makine için daha kolay bir problem çözüm aralığı sağlanır.

Tek başına sahip olunan pay değerinin kullanılmasının yüksek pay sahibi makineler için sürekli bir avantaj yaratmasından dolayı akış içerisindeki hesaplamalarda kullanılmak üzere bir “yaş” (age) kavramı getirilmiştir. Bu kavram ile birlikte blok üretimi için kullanılan pay kapsamındaki kripto paraların yaş değerleri sıfırlanır, bu kripto paralar ancak belirli bir süre sonunda yaş değeri kazanmaya başlarlar ve yaş değeri işlemlerde öncelik/geçerlilik kazanmada avantaj sağlayıcı olur. Bu yaklaşım kapsamında blok üretimi süreci para basma (forging, minting) olarak adlandırılmaktadır. Şu anda “Proof of Work” mantığı ile ilerleyen Ethereum ağının, yakın zaman içerisinde “Proof of Stake” yapısına geçirilmesi planlanmaktadır. Bu yapı aslında daha kompleks bir uygulama şekli olsa da, bu geçiş ile birlikte işlemlerin doğrulanma ve blok oluşturma süreci daha hızlı ve kolay bir hale getirilerek Bitcoin ağında olduğu gibi pahalı ve yüksek güç tüketimine sahip özel madencilik donanımlarına olan ihtiyacı (ve dolaylı olarak oluşan donanım tabanlı merkezciliği) ortadan kaldırılacaktır. Ayrıca katılımcıları platform ile daha derin sahiplik ilişkisine sokarak platformun çıkarına en uygun şekilde çalışmaları için teşvik edilmesi sağlanacaktır. Bu dönüşüm ile birlikte Ethereum platformu daha büyük uygulamaları barındırmak için daha ölçeklenebilir bir hale getirilecektir.

Practical Byzantine Fault Tolerance (PBFT)

Bu yapıyı adını Bizanslı generallerin kullandığı bir yöntemden alır. Bizans ordularında generaller, imparatordan gelen emirlerin gerçek olup olmadığını anlamak için oldukça basit ve etkili bir yöntem takip ediyorlardı. İmparator ordusuna bir emir vereceği zaman bunu generallere ulaştırmak için birden fazla ulak yolluyor ve generaller de emri aldıklarında kendi aralarında ulaklar ile bu emirleri paylaşıyorlardı. Bu süreç içinde eğer imparatordan gelen emir ulakların çoğunluğu tarafından doğrulanmış ise bu emrin doğru olduğu kabul ediliyordu. Aksi takdirde tekil emirlere itimat edilmiyordu. Bu çözümü Blockchain dünyasına getirirsek bu yaklaşımda ağ yapısına dahil her doğrulayıcı (validator) rolüne sahip makine için bir açık-özel anahtar ikilisi bulunmaktadır ve her makine diğer makinelerin açık anahtar bilgisine sahiptir. Her makine kendisine gelen bir işlem (transaction) bilgisini, kendi üzerinde tutulan veri yapısını kullanılarak kontrol eder, onayladığı bir işlemi imzalayarak ağ ile paylaşır. Eğer bir işlem belirli bir sayıda (mesela 2n makineden oluşan bir ağ için bu sayı n+1 olabilir) makine tarafından onaylanmış ise mutabakat sağlanmış kabul edilir, bu işlem ağ tarafından geçerli işlem olarak tanımlanır.

Proof of Work, Proof of Stake gibi yaklaşımlardan farklı olarak PBFT kaynak sahipliği (donanım, pay gibi) akış içerisinde soyutlanmıştır, bu sayede en küçük katılımcı bile dahil oldu- ğu ağın yapısında söz sahibi olmaktadır. Bu yaklaşım kapsamında ağa dahil olan tüm doğrulayıcı makinelerin birbirinden haberdar olması ve ağa dahil olacak yeni bir doğrulayıcı merkezi bir sistem/yapı tarafından onaylanması gerekmektedir. Bu durum Blockchain yaklaşımının temellerinden olan “herkese açık, merkezi olmayan ağ yapısı” kavramı ile çelişmektedir. Bundan dolayı bu mutabakat yaklaşımı açık (public) yapılar yerine daha çok özel (private) yapılar içerisinde değerlendirilmektedir. HyperLedger platformu kapsamında varsayılan mutabakat yapısı olarak PBFT kullanılmaktadır. Bu üç yaklaşım dışında proof of work ve proof of stake’in birlikte uygulanması ile gerçekleşen “proof of activity”, blok üretim sürecine dahil olmak için disk alanı tahsis edilmesi gereken “proof of capacity” gibi farklı mutabakat çözümleri bulunmaktadır ancak bu alternatifler daha çok küçük ölçekli denemeler kapsamında kullanılmaktadır.

Burada yer alan içerikler izinsiz kopyalanamaz, yayınlandığı mecrada kullanılırken mutlaka teknochain.com adresi kaynak gösterilmelidir!

Kaynakça

 

Teknochain - 28 Ağu 2017, 09:54
Soruların mı var?
Soruların mı var?
Sosyal medya hesaplarımızdan bize ulaş cevapları birlikte bulalım!
Etiketler
Sosyal Medyada Paylaş

Comments are closed.