Blockchain’de Ölçeklenme Problemi ve Gayri Merkezilik

Hakan Yalçınsoy
UniChain
Published in
9 min readOct 20, 2018

“Ne zaman kendinizi çoğunluğun tarafında bulursanız, durup düşünme vakti gelmiştir.” — Mark Twain

Popüler blockchain protokolleri (Bitcoin, Ethereum vb) düzenli olarak yavaş işlemlerden ve yüksek ücretlerden acı çekiyorlar. Ekipler ağları ölçeklendirmek için çeşitli çözümler önermiş olsalar da altta yatan bir kusur vardır; blockchain, market için ya da finans sisteminin bel kemiği olarak hareket etmek için gerekli olan seviyeye kadar ölçeklendirilemez; bununla birlikte, halihazırda var olan çok sayıdaki geniş kullanım durumları da göz önünde bulundurulmalıdır. Bu beklenen talebi karşılamak için ölçeklenemezse, o zaman söylenmemiş gerçek, teknolojinin amacına uygun olmadığıdır.

Blockchain’in en büyük başarısı, trustless ortam sağlamasıdır. (Üçüncü tarafa ihtiyaç duymadan iki taraf arasındaki iletişimin nasıl güvence altına alınacağı problemini çözmesidir.) Bunu yapmak için tasarlanmıştır. Ancak, Blockchain hızlı işlem yapma konusuna geldiğinde elinden bir şey gelmemektedir.

PayPal, saniyede 200 işlem gerçekleştirebilir (Transaction per Second- TPS). VISA, günlük ortalama yüklerin 2.000'e yaklaşmasına rağmen, daha da yüksek sayıları karşılayabileceğini söylüyor. Bitcoin ise yaklaşık olarak 7 tps, Ethereum 15–20 tps kapasiteye sahiptir.
On binlerce TPS’e ulaştığını iddia eden bazı blockchainler hali hazırda mevcuttur, ancak bunlar istisnasız; gerçek dünya senaryolarını, optimize edilmiş ve ideal donanım üzerinde kurulu düğümler ile özel testler yaparak simüle ederler.

Protokollerin neden bu kadar yavaş olduğunu anlamak önemlidir. Blockchain protokollerin doğal sınırlamaları olmadığını da söylemeliyiz; Kısıtlama, gayri merkezi bir ağa öncelik vermek için kasıtlı bir tasarım seçiminin sonucudur. Her düğüm, tüm blok zincirinin bir kaydını tutan her bir işlemin içeriğini barındırır. Bu işlemler bloklar oluşturur, bu bloklar yeni zincirin ve düğümlerin bir parçası haline gelmek üzere işlenir, daha sonra bunu genel şebekeyle senkronize kalmaları için kullanırlar. İşlem hacimleri arttıkça, her blokun boyutu da artar, bu da düğümlerin bilgileri almasının daha uzun sürmesi anlamına gelir. Zamanla, bazı düğümler diğerlerinden daha güncel olduğundan, bu tutarlılık sorunlarına neden olur. Bu, düğümlerin indirilmesi ve yükün artığı zamanlarda hayati önem taşıyan bir konu olan geçersiz blokların üretilmesine neden olabilir. Blockchain ve gayri merkezilik sonucu ortaya çıkan anlaşamamazlık budur.
Bu durum geliştiricileri gayri merkezilik, güvenlik ve ölçeklenebilirlik arasında bir üçlü çıkmaza sürüklüyor. Aynı anda en fazla iki özellik barınabiliyor üçüncüsüne yer kalmıyor.

Protokol geliştiricileri ise çözüm olarak blok boyunu artırma, sharding, zincir dışı kanallar (off-chain channels), dPoS, DAG gibi özel çözümler üretmişlerdir. Bu çözümleri incelemeden işe yarayıp yaramayacaklarını ölçecek cevap verilmesi gereken soruları belirlemek istiyorum;

1- Ağ gayri merkezi kalmakta mı?

2- Ağ güvenliği korunuyor mu?

3- Gereksinimi karşılayacak kadar ölçeklenebiliyor mu?

Çözüm Önerileri

Blok Boyutunu Artırmak

Blok boyutu tartışmaları Bitcoin çatallanması sürecinde çok konuşuldu, süreç sonunda Bitcoin Cash adında yeni bir coin(protokol) ortaya çıktı.

Peki Bitcoin blok boyutunu artırmak gerçekten bir çözüm olabilecek miydi? Basit bir hesaplamayla bunun bir çözüm değil, sorunları halı altına süpürmek olduğunu anlayabiliriz. Örneğin; basit bir akıllı sözleşme yazdığımızda bunun boyutu yaklaşık 300–350 bayt gibi bir kaplasa ve blok başına 2000 işlem gerçekleşse bu 700MB’lık bir veri oluşturacaktır. Bu verinin düğümler arası senkron olması gerekmekte, eğer yeteri kadar hızlı olmazsa ağın güvenliği tehlikeye girecektir.(32 MB’lık blok boyutuna sahip Bitcoin Cash, 64MB’a çıkarma önerisini bu tehlike yüzünden ertelemiştir.)

Şu an ki durumda, blok boyutunu artırmak bant genişliği fazla, işlem gücü yüksek olan kişilere yakınsayacaktır ve gayri merkeziyetlikten ödün verilmiş olacaktır.

Yani; 1. Sorunun cevabı hayır, 2 sorunun cevabı hayır iken 3. Sorunun cevabı evet oluyor.

Sharding

Ethereum ağı için çokça adı geçen bir çözüm olan sharding eski bir yöntemdir. Kısaca, bir bütünü(blockchaini) parçalayıp (başta koyduğunuz kuralları koruyacak şekilde) onaylama işleminin hızlandırılması denilebilir.

Bu çözüm ölçeklenme sağlamaktadır, sonuçta zinciri 100–150 parçaya bölüp her biri için farklı madenciler doğrulama yapar, bu da doğal olarak ağ üzerindeki işlemlerin hızlanması demektir.

Fakat, unutmayın ki mutabık kalınması gereken bir veri var. Güvenli bir şekilde veri üzerinde mutabık kalınamazsa sistem güvenliği tehlikeye düşer ve çift-harcama gibi saldırılara karşı korumasız kalınır. Bir de üstüne yüzlerce ağın mutabık kalması gerekirse iş daha da zorlaşır.
Ayrıca, yeni zincirler oluştukça o zincir üzerindeki çalışan hash gücü az kalırsa %51 atak meydana gelme olasılığı artacaktır ve tabii ki PoW’dan PoS’a geçiş sharding için pozitif bir etki yapmakla beraber muhtemelen PoS havuzlarına ve madenciliğin merkezileşmesine de çözüm olmayacaktır.

Önemli nokta, ölçeklenebilirliği “master-node” olmadan ve merkezileşmeyi önleyecek, en azından daha ilerletmeden çözmektir. Sharding’in Ethereum tarafından yıllardır konuşup hayata geçirememesinin nedenleri işte bunlardır.

Yani; 1. Sorunun cevabı hayır, 2. Sorunun cevabı hayır iken 3. Sorunun cevabı evet oluyor.

Delegated Proof of Stake (DPoS)

DPoS, ağdaki tüm kullanıcıların blokları onaylamasına izin vermek yerine ağdaki az kullanıcı arasında oylayarak (hodl ettikleri coin sayısına orantılı olarak), seçilen kullanıcılara blok üretme iznini vermesine deniliyor. Doğrulayıcıların sayısını azaltarak ve asgari performans gereksinimlerini karşılamayı gerektiren DPoS, ağı daha hızlı hale getirir.

Ağın ihtiyaç duyduğu saniye başına işlem sayısı arttıkça, tüm ağ tarafından senkronize edilmesi gereken bilgi miktarı da artar. DPoS, bu sorunu, ağın konsensüsünü sadece birkaç, iyi donanımlı, geniş bant internet sahibi düğümlere vererek azaltır. Bu, daha fazla ve daha büyük blokların oluşturulmasına, işlem sürelerinin ve genel ağ verimliliğinin önemli ölçüde hızlandırılmasına olanak tanır. Seçilenler, “Delegate”, “Witnesses” veya “Producers” olarak adlandırılır, fakat ağ üzerinde PoW / PoS’taki madenciler ve onaylayıcılara benzer sorumlulukları alırlar.

DPoS ile ilgili sıkıntı, az sayıda delegeye güvenme ihtiyacıdır. Bu, sadece kullanıcıların seçilenlere güvenmeleri gerektiği anlamına gelmez, aynı zamanda iktidarın az sayıda delegede yoğunlaştığı ve dolayısıyla merkezileşmeyi artırdığı anlamına gelir.

Bu tür bir sistem, seçmenlerin delegeleri “dürüst” tutmaları için aktif katılımını (oy kullanmalarını) zorunlu kılar, ancak seçmen ilgisizliği gerçek dünya siyasetinde olduğu gibi DLT sistemleri için de geçerlidir. Bu seçmen katılımı eksikliği de büyük çıkarların oylamayı kontrol etmesini ve dolayısıyla kimin blok ödülleri alacağını belirlemesini kolaylaştırmaktadır. Bu ödüller, aynı zamanda, delegelerin seçmenlere rüşvet vermeleri ve temsilci rolünü güvence altına alacağı anlamına gelir.

Yani; 1. Sorunun cevabı hayır, 2. Sorunun cevabı evet iken 3. Sorunun cevabı evet oluyor.

Directed Acylic Graph (DAG)

DAG’lar, işlemleri neredeyse anında işleyebilir. IOTA ve Nano gibi DAG’lar da geleneksel madencileri denklemden çıkarırlar, böylece hem hızlı hem de serbest işlem yaparlar. Blockchain projelerine zarar veren ölçekleme sorunlarına bir son veriyorlar ve Nesnelerin İnterneti (IoT) ve finansal ödeme gibi sistemleri destekleyen dünya çapındaki ağların vizyonunu vaat ediyorlar. Ancak, blockchainlerin de ölçeklenmesi zorlaştığı gibi, aşılması zor olan temel aşama tasarım seçimleri nedeniyle DAG’lar da görülecektir. Önemli bir merkezileşme olmadan ölçeklemenin mümkün olmadığı bir an gelecektir.

DAG’lar, giderek daha yoğunlaşan madenciler grubunun elinde kontrol altında kalan blockchainlerden daha fazla gayri merkezi olduğunu iddia ediyorlar. Ağın genel güvenliğinden sorumlu olan nispeten az sayıda madencinin yerine, DAG’deki tüm aktif katılımcılar sadece yeni işlemlerin onaylanması sorumluluğu ile görevli değillerdir, ayrıca projelerin gelecekteki ihtiyaçları karşılamak için blok zincirinden saniyede daha fazla işleme (tps) kapasitesi sağlar. Ağa daha fazla katılımcının ve daha fazla işlemin işlenmesinin daha yavaş bir ağa yol açtığı blockchainin aksine, DAG’da daha fazla katılımcının ve işlemlerin teorik olarak daha fazla işlemin daha çabuk çözülmesini sağlamaktadır.

Blokchainler, bir kerede tüm deftere(ledger) genel bakış sunan ağ katılımcıları aracılığıyla çalışır. Bu sayede, tüm katılımcılar (veya düğümler) defter tarihçesine karşı bir işlemi kontrol edebilir ve çift harcama tehdidine karşı kontrol edebilirler. Bu, tüm katılımcıların tüm işlemlere açık ve eşit erişime sahip olmasıyla birlikte, blockchain teknolojisinin özünde yatmaktadır.

Ancak DAG’ler farklı şekilde çalışır. Tek bir küresel durum yoktur. (transaction-transaction yaklaşımından dolayı)

Tüm düğümler tüm işlemleri görebiliyorsa bu bir sorun değildir, çünkü düğümler ikili harcama olmaması için geçmiş işlemleri kontrol edebileceklerdir. Örneğin, IOTA Tangle’ın her düğümde tam olarak depoladığı veri budur. Veritabanının boyutu, denetimsiz bırakılırsa ve sabit sürücü gereksinimleri yeteri kadar olmazsa veri çok büyük olacağından, veritabanı gerektiğinde budanır. Bu, esas olarak, alınan tüm işlemlerin alt düğümlerden silinmesi için ve yeniden düğümlerin etkinleştirilmesini sağlayan bir anlık görüntü(snapshot) şeklini almasıdır.

Bu, blockchain’in faydalarından biri olan değişmez ve her zaman mevcut olan defter için optimal bir çözüm değildir. DAG’ların bu gerekli silme işleminden kaçınmasını sağlamak için shardingte olduğu gibi DAG farklı parçalara bölünebilir. Fakat blockchain shardingte yaşanan sorunlar DAG’lar daha şiddetli hissedeceklerdir.

Kötü huylu aktörler, ağa saldırabilmek için hash gücünün % 33'ün üzerinde kazanç elde etmelidir ve ağda işlem gören işlem sayısının az olması beklenmelidir. (örneğin IOTA, şu anda 1.2–2.4 tps arasında işliyor, bunların arasında içi boş işlemler(transaction) vardır) Ki şuan IOTA’nın asgari işlem seviyeleri onu bir saldırıya karşı savunmasız bırakmaktadır.

İkincisi, blok zincirinden farklı olarak, bir blok numarası ya da doğrulanabilir blok oluşturma zamanı DAG’larda yoktur, DAG’da gecikmeler/ işlem yürütme süresi düğümler arasında değişeceğinden, DAG’lerin garantili ve güvenli zaman damgaları yoktur. Bu sadece çift harcama için değil, aynı zamanda tam bir zaman damgası gerektiren DAG üzerinde çalıştırmak için oluşturulan herhangi bir uygulama(dApp) için sorunlara neden olur. Şu anda, bir DAG’nin çift harcamalara ve %34'lük saldırılara karşı garanti etmesinin tek yolu, merkezi bir otoritenin yardımıdır. Başka bir DAG olan Byteball, 12 “Şahit Düğümüne” sahiptir ve IOTA’nın “Koordinatör” vardır.

IOTA, ağ üzerinde kullanım arttığında Koordinatör’ü kaldıracağını söylemektedir. Fakat, kötü niyetli bir aktör, düğümlerin önemli bir bölümünü etkisiz hale getirmeyi başarırsa ne olacağını düşünün. Bu, merkezi otoritenin yeniden etkinleştirildiği anlamına mı geliyor? Ve merkezi düğümlerin kendilerine DDoS saldırısı durumunda ne olur?

DAG’lar mevcut blockchainlerin ötesine ölçeklenebilir. Ancak tıpkı blockchainlerin ne kadar ölçeklendirilebileceğine dair bir sınır olduğu gibi, DAG’ler aynı sorundan muzdariptir. Ağ, bir süre sonra, merkezi otorite olmaksızın, kendi ağırlığı altında güvenlik ya da ademi merkeziyet ya da performanstan ödün vermeden problemlerle mücadele etmeye başlayacaktır.

Yani; 1. Sorunun cevabı hayır, 2. Sorunun cevabı hayır iken 3. Sorunun cevabı evet oluyor.

Buraya bir parantez açmak istiyorum;
PoW + DAG + Nakamoto Konsensüs(Blockchain) = G.H.O.S.T. (Ethereum)
PoS + DAG + Avalanche = AVA (Rocket Team — Emin Gün Sirer)

Farklı kombinasyonlar daha efektif sonuçlar doğuracaktır. Fakat biz burada hali hazırda çalışan sistemler üzerinde konuşuyoruz ve mevcut yaklaşımların eksik taraflarını tartıştığımızı vurgulamak isterim.

Zincir-Dışı Kanallar (Off-chain state channels)

En güzel örnek Lightning Network’tür.

Bu çözüm önerisinde, ana zincir üzerinde kilitlenen coinin zincir dışında tekrar oluşturulup kapalı bir kanal üzerinden alım-gönderim yapılmasıdır. Yapılacak işlemler bitince bütün olarak yan zincirden ana zincire yazılır.
Bu çözümde ana zincirin kısıtlamalarından kurtulabilir, az komisyon ücretleriyle daha hızlı işlemler yapabilirsiniz. Fakat yeni oluşturulan zincirde bulunan düğümler merkezidir ve işlemler herkese açık değildir. Düğümler istedikleri işlemleri engelleyebilir. Ayrıca herhangi bir kanala bağlı değilseniz ödeme yapmanız da mümkün değildir. Bu durum bizi yine merkezi bir yapıya götürmektedir.

Sorulara cevap verirsek; 1. Sorunun cevabı hayır, 2. Sorunun cevabı hayır, 3. Sorunun cevabı evet oluyor.

“Ahh ama kopuktu kopuktu zincir olduramadım, ne yaptım ne ettimse olduramadım.“ — Özkan Uğur (MFÖ)

Merkezileşmeden Ölçeklenme (?)

Blockchain günlük hayatımızda önemli bir yere sahip olacaksa ya başta koyduğu kurallarına bağlı kalacak şekilde merkezi olmadan ölçeklenmesi gerekecektir ya da bu kurallar farklı bir biçimde amacına uygun değiştirilecektir.

Dağıtık sistemler iki şekilde ölçeklenebilir:

Yatay: daha fazla düğüm-madenci ekleyerek,

Dikey: mevcut düğüm-madencilerin kaynaklarını (hash gücü, bellek vs) artırarak.

Yatay olarak ölçeklenme konuştuğumuz gibi ağı yavaşlatacaktır ve kullanışsız hale getirecektir.

Dikey olarak ölçeklenme ise düğümlerin sayısını azaltacağından merkezileşmeye yol açacaktır.

Bu sorunlardan sıyrılan bir Blockchain projesi ortaya çıkmamıştır. Çünkü problem; kriptolojik olarak yeteri seviyede olamamamız, daha efektif konsensüs algoritmaları geliştirememiz ve dünyada teknoloji üretiminin eşit olarak dağılmamasıdır.

Yukarıda konuştuğumuz çözümler şu an kullanabilir durumdadır, fakat gerçekten çözüm olamayacağını da görmüş olmamız lazım.

Bu yüzdendir ki, son zamanlarda blockchain olmayan çözümleri duymaya başladık. Blockchain’in koyduğu kurallara uymak gerçekten çok zor, ya konulan hedefe (trustless) farklı açılardan bakıp yeni çözümler üretmek gerekiyor ya da kör düğüm olan problemlerin etrafında debelenmek gerekiyor ve buna bağlı olarak şimdi ki problemleri küçümseyip, gelecek hakkında umutlanacak cümleler (“İnternet de ilk zamanlar böyleydi, bak sonra ne oldu?” vb.) kurarak (belki de) zaman kaybetmemiz gerekiyor.

Kitle hareketleri “umut” sayesinde varlığını sürdürür, bu yüzden kitle hareketlerinde “şimdi” küçümsenir, aşağılanır, gelecek kutsanır. Kitlelere katılan birey, artık birey olmaktan çıkmıştır. O, artık kendini grubuyla tanımlar. Özellikleri bireysel özellikleri değil grubunun özellikleridir. Sorumluluğu da artık kendi grubuna karşıdır. — Eric Hoffer (Kesin İnançlılar)

Gayri Merkezilik (Decentralized) Neden önemli?

Gayri Merkezlilik, merkezi otoritelerin iktidarı kötüye kullanmasını önler. Ancak bu, her bir katılımcının kendi sorumluluğunu üstlenmesinin maliyetine de denk gelmektedir.

Peki decentralized nereye kadar mümkün? Bizi tatmin edebilecek noktaya kadar gidebilir mi? Açıkçası ben sanmıyorum.

Herhangi bir madenciliği olan coinde “işlemci” üretebilen ülkelerde ki kişilerin en güçlü olması rastlantı mıdır? Şu bir gerçek ki internet alt yapısı, bilim-teknoloji alt yapısı yüksek olan ülkeler her zaman “merkez” olacak.

Governance” konusunu konuşmadan “decentralized” konuşmanın anlamsız olduğunu düşündüğüm için ve “decentralized systems” kavramının yerini “trustless systems” kavramına nasıl bırakacağını, bırakmak zorunda olduğunu metodolojinin değişmesi gerektiğini, başka bir yazıda daha detaylı konuşmak üzere burada noktayı koyuyorum. Sonraki yazılarımda bu konuları irdeleyip, fikirlerimi paylaşacağım.

Okuduğunuz için teşekkür ederim. Diğer yazılarda görüşmek üzere.

“Şimdi, asladan daha iyidir.
Ama asla, genellikle hemen şimdiden daha iyidir.” — Zen of Python

Hoşça Kalın,
Hakan.

Twitter: https://goo.gl/HwCRVS

--

--

Hakan Yalçınsoy
UniChain

EEE. Blockchain. Cryptocurrencies. Algoritmic Trading.