Neden Full Node(Tam Düğüm) Çalıştırmalıyız? İdeal Bir Düğümün Sınırları Nelerdir?

Bu yazı temel blokzincir mantığını, herkesin neden kendi tam düğümünü çalıştırması gerektiğini ve %51 saldırılarının sınırlarını anlatmak için derlenmiştir.

0xemre
6 min readMay 28, 2021

Genel Veritabanı ve Blokzincir Arasındaki Fark

Genel Veritabanları:

Veri tabanları güvenilir, merkezi bir otorite tarafından yönetilir. Merkezileştirme, hız ve yönetme kolaylığı gibi faydalar sağlar. Ama çok kritik bir dezavantaj olarak verilerin bozulma olasılığı vardır. Bu güvenilen yönetici tarafından yapılabileceği gibi çok daha farklı senaryolarla da karşımıza karşımıza çıkabilir.

Genel bir veri tabanı için kullanıcı veri tabanına güvenmek zorundandır, gelen cevabın doğru olup olmadığını kontrol etmez. Sadece istemci, protokole göre uygun bir biçimlendirildiğinden emin olur. Burada hiçbir şeyi doğrulayamayan istemci aptal konumundadır.

Blokzincir Mimarisi:

Blokzincir mimarisinde ise peer-to-peer yani eşler arası bir ağ vardır. Zinciri iş kanıtı sistemlerde madenciler yada hisse kanıtı sistemlerde varlıklarını kilitleyenler oluşturur. Aynı zamanda istemci dediğimiz clientler blokları ve işlemleri ileterek ağdaki düğümlerden en son zincir güncellemelerini alırlar. Node yani düğüm dediğimiz cihazlar blokzincirin bir kopyasını saklarlar, blokzincirin bütünlüğünün korunmasında önemli rol oynarlar. Bazı düğümler zinciri bozmaya kalksa dahi en az bir düğümün doğru çalışması o zincirin geçerli bir zincir olarak devam etmesine olanak sağlar.

Burada önemli nokta kullanıcının görselde karenin içinde sarı silindir şeklinde gösterildiği gibi istemcisinde bir full-node yani tam düğüm çalıştırmasıdır. İstemci, peer-to-peer yani eşler arası ağdaki bir madenci veya sadece bir düğüm olsun, yeni bir blok aldığında bu bloğun geçerli bir durum geçişi olup olmadığını doğrulayacaktır.

Eğer geçerli bir durum geçişi değilse blok görmezden gelinir. Madenciler bu sebepten geçersiz durum geçişi oluşturma eğiliminde değillerdir. Peki yukarıda geçen full node ve diğer bir kavramımız light node nedir?

Full Node ve Light Node

Full Node, blokzincirinde gerçekleşen her işlemin, bloğun, cüzdanın verilerinin kopyasını içeren düğümdür. Örnek vermek gerekirse Bitcoin ağında bir tam düğüm oluşturmak için şu an 347 GB’lık bir yere ihtiyacımız olurdu. Bu boyut Bitcoin ağı kullanılmaya devam edildikçe sürekli artar, şuan sıfırdan bir tam düğüm kurup bu veriyi indirip senkronize etmemiz gereken veri miktarı ile bundan bir yıl sonraki aynı olmayacaktır. Bu artış miktarı blok boyutu, blok üretim hızı, blok içindeki veri miktarı gibi parametrelere bağlı olarak değişir.

Herkesin tam bir düğüm kurabilmesinin kolaylığı çok önemlidir. Herkesin tam düğüm kurabildiği bir blokzinciri daha dağıtık, merkeziyetsiz, ölçeklenebilir ve doğrulanabilir olacaktır. Tam düğüm kurabilme kolaylığı derken tam olarak neyi kastediyoruz, kurma maliyetinin düşüklüğü, ve senkronizasyon süresinin düşüklüğü diyebiliriz. Kurabilme kolaylığının yanında çalıştırma kolaylığı da önemli bir etkendir. Mesela tam bir düğümün çok sayıda işlemi işleyebilme yeteneği üç şeye bağlıdır :

  • Hesaplama Gücü: CPU’nun yüzde kaçını güvenli bir şekilde düğüm çalıştırmak için kullanabiliriz?
  • Bant Genişliği: Herkesin aynı internet hızına sahip olmadığı göz önüne alındığında bir blok kaç byte veri içermelidir?
  • Depolama: Kaç GB’lık depolama alanına ihtiyacımız var? Daha hızlı okuma yazma için HDD yerine SSD’ye ihtiyacımız var mı?

Bu maddeleri biraz açalım.

Hesaplama Gücü

  • Yanlış Cevap: CPU gücünün %100’ü blok doğrulamaya harcanabilir.
  • Doğru Cevap: CPU gücünün %5–10’u blok doğrulamaya harcanabilir.

Peki neden?

  • DoS saldırılarından korunmak için güvenlik sebebiyle bir miktar tolerans aralığına ihtiyacımız var.
  • Düğümlerin olası bir elektrik kesintisi gibi çevrimdışı kalabilme ihtimaline karşı tekrar çevrimiçi olduğunda hızlıca tekrar senkronize olabilmesi için.
  • Bir düğüm çalıştırmak pili hızlı tüketmemeli ve diğer işlemlerinizi yavaşlatmamalı.
  • Düğümlerin bahsettiklerimizden farklı başka görevleri de vardır.

Bant Genişliği

  • Yanlış Cevap: Her 2–3 saniyede 10 MB’lık bir blok üretildiğini düşünürsek, çoğu kullanıcının interneti saniyede 10 MB’lık hıza sahiptir bu yüzden sorun yaşamayız.
  • Doğru Cevap: İyi ihtimalle her 12 saniyede 1–5 MB’lık bloklarda sorun yaşamayız.

Peki neden?

  • İnternet sağlayıcıları pazarlama stratejisi olarak internet hızınızı bayt cinsinden değil bit cinsinden söyler,”Mbps”, “saniyede milyon bit” anlamına gelir ; bir bit bir baytın 1 / 8'idir, bu nedenle bayt cinsinden internet değerinizi elde etmek için reklamı yapılan bit numaralarını 8'e bölmeniz gerekir.
  • Dünyanın her yerinde herkesin hızı aynı değildir, bazı yerlerde internet sağlayıcısı vaat ettiği hızı veremeyebilir, kopmalar yada kesilmeler yaşanabilir.
  • Her zaman aynı internet bağlantısını kullanan başka uygulamalar vardır, düğüm tüm bant genişliğini kullanamaz.
  • Peer-to-peer yani eşler arası ağlar kaçınılmaz olarak kendi ek yüklerini ortaya çıkarır örneğin düğümler genellikle aynı bloğu birden çok kez indirir ve yeniden yükler.

Depolama

  • Yanlış Cevap: 10 TB
  • Doğru Cevap: 512GB

Peki neden?

  • Daha önce yukarılarda bahsettiğimiz gibi bir tam düğümün indirmesi gerek veri miktarı önemli bir etkendir. Bu etken düğümün çevrimiçi olabilmesi ve ağa katılabilmesi için gerekli süreyi belirler. Aşağıda küçük geliştirici grubunda yapılan katılımcıların ne kadar disk alanına sahip olduğunu gösteren bir anket sonucunu görüyoruz.
  • Bu şuan için bize yeterli alanı sağlıyor olabilir gibi gösterse de sürekli katlanan veri miktarı düşünüldüğünde bunun ne kadar sürdürülebilir olduğu soru işaretidir. Artan veri miktarı tam düğüm çalıştıran kullanıcıları daha çok veri alanı almaya itebilir, ekstra maliyet gerektirir.

Gelin beraber son zamanlarda popüler olan Solana ağında bir tam düğüm oluşturmanın maliyetine göz atalım. Aşağıdaki görsel Solana’nın kendi sitesinden alınmıştır.

Sadece 128 GB bir RAM’lik sistem oluşturmanın maliyeti ülkemizde 8–9 bin Türk Lirasına karşılık gelmektedir. Buna ek olarak CPU ve disk maliyeti var. Bu durumu göze aldığımızda herkesin bir tam düğüm kurabilmesi pek olanaklı değildir.

Light Node yani hafif düğümler ise blokzincirin tam bir kaydını tutmaz. Bunun yerine sadece başlık bilgilerini tutarlar. Bu yüzden indirme ve depolama gereksinimleri düşüktür. Tam düğümler sayesinde ağla etkileşim kurarlar. Ethereum örneğini düşündüğümüzde hafif düğüm kurmak, tam bir düğüm kurmaktan daha az maliyetlidir. Öyle ki Raspberry Pi 4 ile Ethereum hafif düğümü kurabilirsiniz. Bu herkesin ağa kolayca katılabilmesini ve etkileşime girmesini teşvik eder.

Peki %51 Saldırıları?

Bitcoin, Ethereum ve benzeri İş Kanıtı(Proof-of-Work) mekanizmasını kullanan zincirler için hash gücünün %50 ve fazlasını kontrol eden kişi veya grubun her şeyi yapabileceği efsanesi vardır. Aynı ifade Proof-of-Stake zincirler için kilitli miktarın üçte ikisinden fazlası kontrol edildiğinde ortaya atılır. Bu aslında tam anlamıyla doğru değildir, böyle bir saldırı olduğunda saldırıyı yapan taraf istediği her şeyi YAPAMAZ.

Hash gücünün %51’lik kısmının kontrol edilmesiyle şunlar YAPILABİLİR:

  • İstemedikleri bir işlemi bloke edebilirler, yani zinciri kullanmanızı engelleyebilirler.
  • Zinciri geri döndürebilirler, yani belirli sayıdaki bloğu geri alabilir ve içlerindeki işlemlerin sırasını değiştirebilirler.

Hash gücünün %51’lik kısmının kontrol edilmesiyle şunlar YAPILAMAZ:

  • Kuralların dışında yeni coin basamazlar, yani şu an her yeni blok için 6.25 BTC olan ödül miktarını 50.000 BTC yapamazlar.
  • Private keylerine sahip olmadıkları cüzdanlara giremezler, yani siz private keylerinizi onlara kaptırmadıkça cüzdanlarınızı boşaltamazlar.
  • Consensus kurallarının dışına çıkıp daha büyük bloklar üretemezler, yani şuan 1.5 MB olan blok boyutunu 10 MB yapamazlar.

Bunu tüm blokzincirler için genelleyebilir miyiz?

Söylediklerimiz tam bir düğüm çalıştırmanın maliyetinin düşük olmadığı noktalarda geçerli olmayabilir. Eğer tam bir düğüm çalıştırmak için 5000 dolara yeni bir cihaz ve kesintisiz 1Gbit/s internet hızına ihtiyaç duyuyorsanız bunu yapmak istemeyebilirsiniz. Bu durumda muhtemelen kendi düğümünüzü çalıştırmayıp, bunun yerine başkasının bir düğümüne güvenmek zorunda kalacaksınız.

Öyle ki tam bir düğüm çalıştırmanın maliyetini sadece hisse sahiplerinin ve borsaların karşılayabildiği bir zincir hayal edin. Bu güven modelinizi değiştirir, pay sahipleri ve borsalar bir araya gelerek zinciri değiştirmek isteyebilir. Kullanıcılar eski zinciri devam ettirmek istese dahi tam bir düğüm çalıştırmadıkça söz hakları olmayacaktır.

Ethereum ve Bitcoin için zaman zaman blok boyutunu arttırma fikri karşımıza çıkar. Bu madenciler için sorun olmayabilir ama madenciliğe göre çok daha az maliyetli olan düğüm çalıştırıcılarını etkiler. Çünkü blok boyutunu arttırarak kendi düğümünü çalıştıran kullanıcıların yükünü arttırmış olursunuz.

Bu da güç dengesini kullanıcılardan madencilere kaymasına sebep olur, bunu istediğimizi pek söyleyemeyiz.

Yazının veritabanı, blokzincir ve %51 saldırıları kısımları Dankradfeist’den, full-node sınırları kısmı Vitalik Buterin’in yazılarından, bazı kısımları da Tobby Kitty’nin çeşitli tweetlerinden derlenmiştir. Kendisini üstat olarak gördüğüm Tobby Kitty’e teşekkürlerimi sunarım.

--

--