
Subscribe to 0xBasar

Subscribe to 0xBasar
<100 subscribers
<100 subscribers
Share Dialog
Share Dialog


Yasal Uyarı : Bu yayın Fuel Topluluğunun bir üyesi tarafından yapılmış olan bir çeviridir. Çevirilerin doğru olması için dikkatli kontroller yapılmaktadır, ancak bu çevirilerde hatalar ya da eksiklikler olabilir. Fuel Labs çevrilen bilgilerin doğruluğundan, güvenilirliğinden veya güncelliğinden sorumlu değildir. Orijinal yayın bağlantısı: The Case for Modular Execution (Part1)
Modüler yürütme katmanları, hesaplama ile doğrulamayı birbirinden ayırarak ölçeklenmeyi nasıl sağlayacaklar?
Blok zincirler, gerçek ölçeklenebilirliğe ulaşabilmek için giderek daha fazla modüler mimariye doğru ilerlemektedir. Daha önce tamamen monolitik olan Ethereum gibi zincirler bile monolitik blok zincir tasarımlarının getirdiği zorlukların üstesinden gelebilmek için modüler tasarıma geçmektedir.
Modüler blok zincirlerin temel bileşenlerinden biri yürütme katmanıdır. Fuel, modüler blok zincirleri için en hızlı yürütme katmanını inşa etmektedir.

Modüler yürütme katmanı ne demektir? Ve daha ölçeklenebilir blok zincir sistemlerini nasıl mümkün kılacaktır?
Modüler yürütme katmanları, monolitik rakiplerine göre iki temel avantaj sunar:
Monolitik zincirler hesaplama ve doğrulamayı aynı katmanda birleştirir, bu da düşük seviyede güvenlik ve sınırlı bir ölçeklenebilirliğe sebep olur. Modüler yürütme katmanları ise, hesaplama ve doğrulamayı birbirinden ayırarak bu sorunu önler ve çok daha yüksek seviye bir güvenlik sağlar.
Monolitik zincirler, destekleyebilecekleri hesaplama hızı ve çeşitliliği konularında verimsiz teknolojilere bağlıdırlar. Öte yandan, modüler yürütme katmanları verimli hesaplama için optimize edilebilecek şekilde tasarlanabilir.
Bu yazıda birinci temel fayda üzerinde durulacak, ikincisi ise daha sonra yayınlanacak olan ikinci bölümde ele alınacaktır.
Modüler yürütme katmanlarının (MYK’ler) getirdiği yenilikleri anlamak için öncelikle monolitik blok zincirlerin hesaplama ve doğrulamayı nasıl ele aldığını anlamamız gerekir.
Blok zincirler, işlemleri gerçekleştiren ve bunları bir blokta bir araya getiren(bunlara blok üreticileri denir) bir varlıklar ağına dayanır. Denetimler ve bakiyeler olmadan, kötü niyetli bir blok üreticisi bir bloğa geçersiz işlemler dahil edebilir (örneğin, kendi adresine token basmak). Bunu önlemek için blok zincirleri, zincirin kendi versiyonuna eklemeden önce bir bloğun geçerliliğini belirlemek için diğer node’lardan oluşan bir ağa güvenir.
Bu da bir blok zincirin çalışması için gereken iki temel işlevi ortaya çıkarır:
Blok Üretimi (hesaplama) - Bir bloğu oluşturmak için işlemlerin yürütülmesi ve münferit durum geçişlerinin(individual state transitions) uygulanmasıdır.
Blok Doğrulama (onaylama) - Durum geçişlerinin geçerli olduğunun teyit edilmesidir.
NOT: Kolay anlaşılması için bu bölümde blok üretiminin ve doğrulamasının monolitik blok zincirlerde nasıl işlediğine dair basitleştirilmiş bir açıklama sunulmaktadır. Gerçekte bu süreç daha karmaşıktır ve zincirin tasarımına bağlı olarak farklılık gösterebilir. Ancak, temel ilkelerin çoğu geçerlidir.
Çoğu monolitik blok zincir tasarımında, hesaplama ve doğrulama validatörler (yani node’lar) tarafından gerçekleştirilir. Kullanıcı bir işlem gönderdiğinde, bir validatör işlemi gerçekleştirir ve ardından ilgili durum geçişini bir bloğa ekler. Bir blok oluşturulduktan ve paylaşıldıktan sonra, diğer node’lar bloğu indirir ve geçerli olduğunu teyit etmek için bloktaki işlemleri yeniden yürütür. Blok geçerliyse, dürüst olduklarını varsayarak, node’lar bu bloğu zincirin kendi versiyonlarına ekler ve böylece geçerliliğini onaylar.
Bazen uygulamalar veya kullanıcılar blok zincirin durumuna(state) erişmek isterler ancak tam bir node çalıştırmanın ve tüm işlemleri doğrulamanın gerektirdiği yüksek kaynak gereksinimlerine katlanmak istemezler. Bu amaçla, node’lar tarafından sağlanan blokların yalnızca geçerli işlemleri içerdiğini varsayan hafif istemciler çalıştırabilirler. Blok zincirin tamamını indirmezler ya da önceki tüm işlemlerin geçerli olduğunu doğrulamazlar. Bunun yerine, node’ların çoğunun dürüst olduğuna (yani zincirin kendi kopyalarına yalnızca geçerli blokları dahil ettiklerine) güvenmek zorundadırlar.

Buna dürüst çoğunluk varsayımı denir ve çoğu monolitik blok zincirin %51 saldırılarına karşı savunmasız olmasının nedenidir. Monolitik modelde, blok zincirin geçerli olduğunu(valid) doğrulamak için node’ların dürüst çoğunluğu olması gerektiğinden, hafif istemciler(light client) bu çoğunluğa güvenmek zorunda kalır. Node’ların yarısından fazlası dürüst değilse, hafif istemcilerin bunu bilmesinin bir yolu yoktur, bu nedenle de geçersiz bir zinciri takip edeceklerdir.
Monolitik zincirlerin ölçeklenebilirliği, bu dürüst çoğunluk varsayımına dayanmaları nedeniyle ciddi şekilde sınırlıdır. Bunun nedeni, işlem verimini artırmak için, aynı süre içinde daha fazla işlemin işlenmesini sağlamak üzere blok boyutunun ve/veya sıklığının artırılmasının gerekmesidir. Bu da node’lar için kaynak gereksinimlerini (ve ilgili maliyetleri) artırır; daha büyük/hızlı bloklar = daha fazla hesaplama = daha yüksek maliyet demektir.

Node çalıştırmanın maliyeti arttıkça, giderek daha fazla sayıda kullanıcı hafif bir istemci çalıştırmayı tercih edecek ve zincirin doğruluğunu onaylamak için giderek daha küçük bir node ağına güvenilecektir. Blok doğrulamasının giderek merkezileşmesi, monolitik zincirler için güvenlik açısından büyük bir tehdittir çünkü daha merkezi bir doğrulayıcı havuzu saldırılara karşı daha savunmasızdır ve bu doğrulayıcıların aralarında gizli anlaşma yapmaları daha kolaydır.
İyi haber şu ki, blok zincir sistemleri dürüst çoğunluk varsayımına dayanan tasarımlardan uzaklaşabilir. Monolitik tasarımın bu tuzağından kaçınmak için modüler blok zincir yığını(stack), hesaplamayı doğrulamadan ayırır. Yürütmeyi (yani hesaplamayı) temel zincirden (genellikle "ana zincir" olarak adlandırılır) uzaklaştırarak, merkeziyetsizlikten ödün vermeden daha fazla ölçeklenme elde edilebilir.
Modüler blok zinciri yığını içinde yürütme katmanı, işlemlerin işlenmesi ve tekil durum geçişlerinin gerçekleştirilmesi gibi hesaplamalardan sorumludur.
Fuel, modüler yürütme katmanını: modüler blok zinciri yığını için tasarlanmış doğrulanabilir bir hesaplama sistemi olarak tanımlar. Daha somut bir ifadeyle, veri kullanılabilirliği için modüler bir blok zincirden yararlanan, dolandırıcılık veya geçerlilik kanıtlı bir blok zincir (veya başka bir hesaplama sistemi).

Biraz daha açmak gerekirse, hesaplama sistemleri aşağıdaki durumlarda modüler yürütme katmanları değildir: 1) sahtekarlık veya geçerlilik kanıtlı değillerse veya 2) veri kullanılabilirliğini başka bir katmana yüklemiyorlarsa.
Monolitik blok zincirler gibi, modüler yürütme katmanları da kendilerine özel blok üreticilerinden oluşan bir ağ kullanır. Bu birimler, işlemlerin yürütülmesi ve blokların üretilmesi gibi yoğun kaynak gerektiren süreçlerle ilgilenir. Ancak, monolitik sistemlerden farklı olarak, doğrulama işlemi yürütme katmanında değil, modüler blok zincir yığınının daha alt seviyelerinde gerçekleştirilir.
Modüler yürütmenin dehası, doğrulamanın (yani blok doğrulama) merkeziyetsiz olduğu sürece, hesaplamanın (yani blok üretiminin) merkeziyetsiz olmasına gerek olmamasıdır. Blok boyutlarının artırılması blok üreten node’ların merkezileşmesine yol açar ancak doğrulama ayrıldığı sürece, geçersiz bloklar zincire eklenmeyecektir.
Fakat bu nasıl mümkün olabilir? Blok üretiminin merkezi olarak kalmasına izin verirsek güvenliğin korunmasını nasıl sağlayabiliriz? İşte bu noktada modülerlik devreye giriyor.
Modüler yürütme katmanları, yoğun kaynak gerektiren yürütme işlevini, işlem gruplarını bir araya getirip yürüten ve bunları bloklar halinde periyodik olarak ana zincire (uzlaşma/ konsensüs/ veri erişilebilirliği katmanları) gönderen güçlü blok üreticilerine devreder. Bu blok üreticilerini dürüst kılmak ve blokların yalnızca geçerli işlemleri içerdiklerinden emin olmak için ana zincire gönderilen blokları indiren ve yeniden yürüten, blok üretmeyen ek node’lar (bunlar genellikle "doğrulayıcılar" veya "kanıtlayıcılar" olarak adlandırılırlar) vardır.
Bu node’ların işlemlerin geçerliliğini veya geçersizliğini nasıl ilettiğinin özellikleri, modüler yürütme katmanının optimistik model ya da sıfır bilgi(zk) modeli kullanmasına bağlı olarak farklılık gösterir. Optimistik modüler yürütme katmanları söz konusu olduğunda, node’lar yalnızca geçersiz bir işlem tespit ettiklerinde harekete geçerler (sahtekarlık kanıtları aracılığıyla). Tersine, sıfır bilgi(zk) modüler yürütme katmanlarında, node’lar işlemlerin geçerliliğini aktif olarak onaylar (geçerlilik kanıtları aracılığıyla). Her iki durumda da, blok üreticisi tarafından sağlanan tüm işlemlerin geçerliliği veya geçersizliği modüler yürütme katmanında değil, ana zincirde onaylanır.
Daha detaylı bir örnek sunmak için optimistik modüler yürütme katmanlarının (aksi kanıtlanmadıkça tüm işlemlerin geçerli olduğunun varsayıldığı) durumunu inceleyelim. Modüler yürütme katmanındaki tek bir node bile ana zincirde yayınlanan bir blok içinde geçersiz bir işlem tespit ederse, işlemin geçersiz olduğunu kriptografik olarak kanıtlayan bir sahtekarlık kanıtı (önceden tanımlanmış bir "uyuşmazlık çözüm süreci" içinde) oluşturabilir.
Bu durum, belirli bir modüler yığının yapısına bağlı olarak çeşitli şekillerde ele alınabilir. Örneğin:
Uzlaşma katmanına sahip modüler zincirlerde:
Node’lar, sahtekarlık kanıtını, işlemi doğrudan yeniden yürüten uzlaşma katmanındaki özel bir anlaşmazlık çözüm sözleşmesine sunar (bunun, modüler yürütme katmanı işlemlerinin, uzlaşma katmanının sanal makinesinde deterministik bir şekilde sahtekarlık kanıtlanabilir hale getirecek şekilde yapılandırılmasını gerektirdiğini unutmayın - örneğin, FuelVM, Ethereum'da uzlaşmayı sağlayabilmek için EVM içinde sahtekarlık kanıtlanabilir olacak şekilde tasarlanmıştır).
Eğer işlem geçersizse, suç işleyen blok üreticisi slashing yoluyla cezalandırılır (yani fon kaybeder), "ihbarcı" bu fonların bir kısmı ile ödüllendirilir ve zincirin durumu geçersiz işlem öncesine döndürülür. Geçersiz işlemi takip eden herhangi bir işlemin geçerli bir duruma karşılık geldiğine dair bir garanti olmadığından, sonra gelen bu işlemler yeniden gerçekleştirilir.
Uzlaşma katmanına sahip olmayan modüler zincirlerde:
Node, hafif istemcileri bloğun geçersiz bir işlem içerdiği konusunda uyarmak için eşten eşe sistemle (p2p) sahtekarlık kanıtını iletir. Sahtekarlık kanıtını blok üreticisinin dürüst olmayan davranışının kanıtı olarak kullanan node’lar, ana zincirde blok üreticisinin fonlarını kesen bir ceza işlemi önerebilir.
Zincirin "meşru" versiyonunu saptayacak bir uzlaşma katmanı olmadığından, kötü niyetli node’lar teorik olarak bloğu reddetmemeyi seçebilir; ancak, sahtekarlık kanıtı zaten hafif istemcilere iletildiğinden hafif istemciler, kötü niyetli bir node’un zincir versiyonunu takip etmemeleri gerektiğini bilirler. Sonuç olarak, sosyal konsensüs geçersiz bloğun reddedileceğini taahhüt eder.
Her iki durumda da, doğrulama süreci yürütme katmanı yerine ana zincirde yer aldığından, güvenlik ana zincire devredilir. Yani yürütme katmanı kendi başına daha düşük güvenlik garantisiyle çalışabilir. Yürütme katmanındaki node’ların %99'u dürüst olmasa bile, yürütme katmanında yalnızca geçerli işlemlerin olmasını sağlamak için sadece bir dürüst node yeterlidir.
Bu, node’ların dürüst çoğunluğuna güvenmek yerine, modüler yürütme katmanlarının (ve modüler yürütme katmanı hafif istemcilerinin) tek bir dürüst çoğunluk varsayımıyla çalışabileceği anlamına gelir.

Monolitik sistemdeki geçersiz bir blok sadece node’ların çoğunluğu tarafından geri döndürülebilirken, modüler bir sistemdeki tek bir node, sahtekarlık/geçerlilik kanıtlarını kullanarak geçersiz bir işlemi geri döndürmeye zorlayabilir.
Hesaplamanın ana zincir dışında yapılması, işlem hacminde büyük artışlara sebep olur. Ayrı gerçekleşen blok doğrulama süreci blok üreticilerini dürüst hale getirdiğinden, blok üretiminin merkezileştirilmesi endişesi olmadan blok boyutu önemli ölçüde artırılabilir.
Daha büyük bloklar, doğrulama yapan tüm node’lara daha fazla yük bindirse de, dürüst olmayan bir çoğunluğa dayanan merkezileştirme tabanlı güvenlik açıkları imkansız hale geldiğinden, dürüst olmayan çoğunluk varsayımı, bu alandaki merkezileşmenin daha az tehdit olduğu anlamına gelir.
Hafif istemcilerin node’ların en az yarısının dürüst olduğuna güvenmesini gerektiren monolitik sistemlerin tersine, hafif istemciler modüler bir mimari altında çok daha yüksek güvenlikle çalışabilir, çünkü sahtekarlık kanıtları, tek bir dürüst node’dan gelen bir kanıta dayalı olarak geçersiz işlemleri tanımlamalarını sağlar.

Buna ek olarak, blok üreticileri herhangi bir kötü niyetli faaliyetin tespit edileceğinin ve ‘slashing’ ile sonuçlanacağının farkındadır, bu nedenle dürüst olmayan bir davranışa teşebbüs etme olasılıkları daha düşüktür. Bu nedenle, yürütme katmanı, modüler yığının güvenlik açısından optimize edilmiş alt seviyelerine dayanırken, hesaplama açısından optimize edilebilir (yani çok sayıda işlem gerçekleştirebilir).
Modüler mimari, bazı teknik ve oyun teorisi zorluklarını da beraberinde getirmektedir.
Sahtekarlık/geçerlilik kanıtları dürüst node’ların sahtekarlığı kanıtlamasını sağlarken, ek bir sorun daha vardır: veri erişilebilirliği. Kanıt oluşturmak ve geçerliliğini belirlemek için bir bloktaki tüm işlemleri indirmeleri ve yeniden yürütmeleri gerektiğinden, node’lar blok erişilebilirliğine güvenirler.
Kötü niyetli bir blok üreticisi, teorik olarak ana zincire yalnızca blok başlıklarını yollayabilir ve potansiyel olarak ilgili verilerin bir kısmını veya tamamını saklayabilir. Bu durum, node’ların hafif istemcileri konu hakkında uyarmak için sahtekarlık/geçerlilik kanıtları oluşturabilmesini engeller.
Bir bloğu doğrulamaya çalışırken, verilerin kötü niyetli bir blok üreticisi tarafından saklandığını tespit etmek node’lar için önemsizdir. Bu durumda, kolaylıkla zincirin geçersiz olduğunu varsayabilir ve ondan uzaklaşabilirler. Ancak hafif istemciler, tüm bloğu indirmeden verilerin bir blok üreticisi tarafından saklanıp saklanmadığını nasıl belirleyebilir?
Veri erişilebilirliği örneklemesi (Data Availability Sampling-DAS) adı verilen yeni bir teknoloji, hafif istemcilerin bir bloğun tamamının yayınlanıp yayınlanmadığını olasılıksal olarak belirlemesini sağlar. Kısacası, hafif istemciler node’lardan bloğun rastgele küçük bölümlerini (veya "örneklerini") talep eder.

İstenen tüm örnekler mevcutsa, veri erişilebilirliği örneklemesi yapan yeterli sayıda hafif istemci olduğu varsayılırsa, bu olasılıksal olarak tüm bloğun mevcut olduğunu kanıtlar. Bloğun herhangi bir kısmı mevcut değilse, hafif istemciler verilerin saklandığını bilir ve zincirin o versiyonundan uzaklaşabilir.
Bu teknolojinin daha detaylı açıklaması bu yazının kapsamı dışındadır, ancak daha fazlasını buradan okuyabilirsiniz. Sonuç olarak Veri Erişilebilirliği Örneklemesi, kötü niyetli bir blok üreticisi verileri saklasa bile hafif istemcilerin geçersiz blokları tespit etmesini sağlar.
** **Bir diğer potansiyel sorun ise " doğrulayıcı ikilemi" olarak adlandırılan olgudur. Basitleştirilmiş haliyle aşağıdaki gibidir:
Eğer blok üreticileri, node’ların dürüst olmayan faaliyetleri tespit edeceğini bilirlerse, slash’ten kaçınmak için dürüst davranacaklardır.
Zaman içinde, node’lar blok üreticilerinin dürüst davranmaya devam edeceğini varsayarsa, geçersiz bir işlemi tanımladıkları için asla ödül almayacaklarından blokları doğrulamaya devam etmek için hiçbir teşvikleri kalmaz.
Node’lar blokları doğrulamaya devam etmek için finansal olarak teşvik edilmezlerse, bunu yapmayı bırakabilirler. Bu noktada, blok üreticilerinin usulsüz şekilde davranması mümkün hale gelir. Hala sıfır olmayan miktarda node olsa bile, blok üreticisinin kalan node’lara geçersiz işlemleri görmezden gelmeleri için rüşvet vermesi finansal olarak mantıklı hale gelebilir.
Bu durum, modüler bir yürütme katmanının ne kadar güvenli hale gelirse (yani bir blok üreticisinin dürüst davranmaması için daha az teşvik varsa), daha düşük güvenliğe doğru o kadar fazla eğilim gösterdiği (yani node’ların artık blokları doğrulamaya teşvik edilmediği) döngüsel bir muamma ile sonuçlanır. Öte yandan, ne kadar az güvenli olursa, o kadar yüksek güvenlik eğilimi gösterir.

Bu ikilem bir takım yollarla hafifletilebilir (bu faktörlerin oyun teorisini baz alan analizi için bu yazıya bakınız):
Fedakarlık - Modüler Yürütme Katmanları yalnızca tek bir dürüst doğrulayıcı gerektirdiğinden, en az bir fedakar node çalıştığı sürece sistem güvenli kalırlar. Ancak bu, pratikte yeterince güvenli olsa da, büyük miktarda varlığı kontrol eden bir sistem için yeterli bir garanti değildir.
Ekonomik çıkar - Potansiyel ihbarcı ödülünün ötesine geçen node’ları çalıştırmak için finansal teşvikleri olan birçok kuruluş vardır. Örneğin, blok kaşifleri, likidite sağlayıcıları ya da dapp'ler gibi ürün ve hizmetlerin işlerini etkin bir şekilde yürütebilmeleri için Modüler Yürütme Katmanları'nın bütün durumuna(full state) erişmeleri gerekir. Ancak bu kuruluşlar (teoride) kötü niyetli bir blok üreticisi tarafından rüşvet almaya açıktır.
Balinalar - Bir Modüler Yürütme Katmanı üzerinde büyük miktarda varlığı olan kuruluşlar, çıkarlarının korunduğundan ve zincirin güvenli olduğundan emin olmak için node çalıştırmayı seçebilir.
Hızlı para çekme - Optimistik Modüler Yürütme Katmanları, modüler yığının alt katmanlarında sona ermeyi(finalise) gerçekleştirmeden önce bir anlaşmazlık çözüm süresine dayandığından, Modüler Yürütme Katmanı’ndan uzlaşma katmanına para çekme işlemleri bu süre dolana kadar sonuçlandırılmaz. Bu nedenle, hızlı para çekme işlemleri sunan, Modüler Yürütme Katmanı’nda tokenleri kabul eden ve aynı tokenleri anında (bir ücret karşılığında) uzlaştırma katmanındaki kullanıcıya gönderen üçüncü taraf hizmetleri için bir pazar bulunmaktadır. Modüler Yürütme Katmanı durumunun(state) uzlaşma katmanına fon gönderdikten sonra geri döndürülmemesini sağlamak için, hizmet sağlayıcı böyle bir işleme girmeden önce zincirin geçerliliğini doğrulamaya teşvik edilir.
Blok üreticileri - Önceki geçersiz blokların üzerine blok gönderen blok üreticileri için bir ceza getirilmesi mümkündür. Böyle bir uygulama yapıldığında, blok üreticileri bir blok göndermeden önce zincirin geçerliliğini doğrulamaya teşvik edilecektir.
Yukarıdaki risk azaltma stratejileri tek başlarına tamamen etkili olmayabilir, ancak bir araya geldiklerinde bir takım farklı grupların Modüler Yürütme Katmanları üzerinde node çalıştırmaya ve zincirin durumunu doğrulamaya devam etmeleri için açık bir teşvik söz konusudur.
Modüler blok zinciri yığını, tek bir dürüst azınlık varsayımı altında yüksek güvenlik sağlayan bir tasarım benimseyerek, daha önce monolitik tasarımlar için mümkün olandan çok daha yüksek verimli blok zincirlerin geliştirilmesine olanak tanır.
Bununla birlikte, hesaplamayı doğrulamadan ayırmanın getirdiği ölçeklenebilirlik avantajlarının yanı sıra, özellikle yığının en üst kısmına yani modüler yürütme katmanına odaklanarak ölçeklenebilirlik konusunda daha fazla ilerlenebilir. Bu katmanda hesaplamayı daha ölçeklenebilir ve verimli hale getirmek, daha iyi blok zincirleri oluşturmanın bir sonraki adımıdır.
Şu anda geliştirilmekte olan çoğu modüler yürütme katmanı, ana zincir olarak Ethereum'u kullandığı için EVM'yi de yürütme ortamı olarak kullanmaktadır. Bu, içten yanmalı bir motorun enerji verimliliğini artırmaya benzer bir tasarımdır yani, modası geçmiş bir teknolojide yapılan aşamalı bir iyileştirmedir.
Gerçekte, modüler yığın çok daha geniş bir tasarım alanı açarak modüler yürütme katmanlarının verimsiz EVM'ye dayanma ihtiyacını ortadan kaldırır. Fuel, EVM'nin ötesine geçen, verimli ve ölçeklenebilir hesaplama, üstün geliştirici deneyimi ve maksimum güvenlik için optimizasyon yapan modüler bir yürütme katmanı oluşturmak için bu yeni tasarım alanından yararlanıyor.
Bölüm 2'de, modüler yürütme katmanlarının gerçek ölçeklenebilirliğe ulaşmak için önceki nesil blok zincir tasarımının teknolojik sınırlamalarını nasıl aşabileceğini inceleyeceğiz.
** **
Yasal Uyarı : Bu yayın Fuel Topluluğunun bir üyesi tarafından yapılmış olan bir çeviridir. Çevirilerin doğru olması için dikkatli kontroller yapılmaktadır, ancak bu çevirilerde hatalar ya da eksiklikler olabilir. Fuel Labs çevrilen bilgilerin doğruluğundan, güvenilirliğinden veya güncelliğinden sorumlu değildir. Orijinal yayın bağlantısı: The Case for Modular Execution (Part1)
Modüler yürütme katmanları, hesaplama ile doğrulamayı birbirinden ayırarak ölçeklenmeyi nasıl sağlayacaklar?
Blok zincirler, gerçek ölçeklenebilirliğe ulaşabilmek için giderek daha fazla modüler mimariye doğru ilerlemektedir. Daha önce tamamen monolitik olan Ethereum gibi zincirler bile monolitik blok zincir tasarımlarının getirdiği zorlukların üstesinden gelebilmek için modüler tasarıma geçmektedir.
Modüler blok zincirlerin temel bileşenlerinden biri yürütme katmanıdır. Fuel, modüler blok zincirleri için en hızlı yürütme katmanını inşa etmektedir.

Modüler yürütme katmanı ne demektir? Ve daha ölçeklenebilir blok zincir sistemlerini nasıl mümkün kılacaktır?
Modüler yürütme katmanları, monolitik rakiplerine göre iki temel avantaj sunar:
Monolitik zincirler hesaplama ve doğrulamayı aynı katmanda birleştirir, bu da düşük seviyede güvenlik ve sınırlı bir ölçeklenebilirliğe sebep olur. Modüler yürütme katmanları ise, hesaplama ve doğrulamayı birbirinden ayırarak bu sorunu önler ve çok daha yüksek seviye bir güvenlik sağlar.
Monolitik zincirler, destekleyebilecekleri hesaplama hızı ve çeşitliliği konularında verimsiz teknolojilere bağlıdırlar. Öte yandan, modüler yürütme katmanları verimli hesaplama için optimize edilebilecek şekilde tasarlanabilir.
Bu yazıda birinci temel fayda üzerinde durulacak, ikincisi ise daha sonra yayınlanacak olan ikinci bölümde ele alınacaktır.
Modüler yürütme katmanlarının (MYK’ler) getirdiği yenilikleri anlamak için öncelikle monolitik blok zincirlerin hesaplama ve doğrulamayı nasıl ele aldığını anlamamız gerekir.
Blok zincirler, işlemleri gerçekleştiren ve bunları bir blokta bir araya getiren(bunlara blok üreticileri denir) bir varlıklar ağına dayanır. Denetimler ve bakiyeler olmadan, kötü niyetli bir blok üreticisi bir bloğa geçersiz işlemler dahil edebilir (örneğin, kendi adresine token basmak). Bunu önlemek için blok zincirleri, zincirin kendi versiyonuna eklemeden önce bir bloğun geçerliliğini belirlemek için diğer node’lardan oluşan bir ağa güvenir.
Bu da bir blok zincirin çalışması için gereken iki temel işlevi ortaya çıkarır:
Blok Üretimi (hesaplama) - Bir bloğu oluşturmak için işlemlerin yürütülmesi ve münferit durum geçişlerinin(individual state transitions) uygulanmasıdır.
Blok Doğrulama (onaylama) - Durum geçişlerinin geçerli olduğunun teyit edilmesidir.
NOT: Kolay anlaşılması için bu bölümde blok üretiminin ve doğrulamasının monolitik blok zincirlerde nasıl işlediğine dair basitleştirilmiş bir açıklama sunulmaktadır. Gerçekte bu süreç daha karmaşıktır ve zincirin tasarımına bağlı olarak farklılık gösterebilir. Ancak, temel ilkelerin çoğu geçerlidir.
Çoğu monolitik blok zincir tasarımında, hesaplama ve doğrulama validatörler (yani node’lar) tarafından gerçekleştirilir. Kullanıcı bir işlem gönderdiğinde, bir validatör işlemi gerçekleştirir ve ardından ilgili durum geçişini bir bloğa ekler. Bir blok oluşturulduktan ve paylaşıldıktan sonra, diğer node’lar bloğu indirir ve geçerli olduğunu teyit etmek için bloktaki işlemleri yeniden yürütür. Blok geçerliyse, dürüst olduklarını varsayarak, node’lar bu bloğu zincirin kendi versiyonlarına ekler ve böylece geçerliliğini onaylar.
Bazen uygulamalar veya kullanıcılar blok zincirin durumuna(state) erişmek isterler ancak tam bir node çalıştırmanın ve tüm işlemleri doğrulamanın gerektirdiği yüksek kaynak gereksinimlerine katlanmak istemezler. Bu amaçla, node’lar tarafından sağlanan blokların yalnızca geçerli işlemleri içerdiğini varsayan hafif istemciler çalıştırabilirler. Blok zincirin tamamını indirmezler ya da önceki tüm işlemlerin geçerli olduğunu doğrulamazlar. Bunun yerine, node’ların çoğunun dürüst olduğuna (yani zincirin kendi kopyalarına yalnızca geçerli blokları dahil ettiklerine) güvenmek zorundadırlar.

Buna dürüst çoğunluk varsayımı denir ve çoğu monolitik blok zincirin %51 saldırılarına karşı savunmasız olmasının nedenidir. Monolitik modelde, blok zincirin geçerli olduğunu(valid) doğrulamak için node’ların dürüst çoğunluğu olması gerektiğinden, hafif istemciler(light client) bu çoğunluğa güvenmek zorunda kalır. Node’ların yarısından fazlası dürüst değilse, hafif istemcilerin bunu bilmesinin bir yolu yoktur, bu nedenle de geçersiz bir zinciri takip edeceklerdir.
Monolitik zincirlerin ölçeklenebilirliği, bu dürüst çoğunluk varsayımına dayanmaları nedeniyle ciddi şekilde sınırlıdır. Bunun nedeni, işlem verimini artırmak için, aynı süre içinde daha fazla işlemin işlenmesini sağlamak üzere blok boyutunun ve/veya sıklığının artırılmasının gerekmesidir. Bu da node’lar için kaynak gereksinimlerini (ve ilgili maliyetleri) artırır; daha büyük/hızlı bloklar = daha fazla hesaplama = daha yüksek maliyet demektir.

Node çalıştırmanın maliyeti arttıkça, giderek daha fazla sayıda kullanıcı hafif bir istemci çalıştırmayı tercih edecek ve zincirin doğruluğunu onaylamak için giderek daha küçük bir node ağına güvenilecektir. Blok doğrulamasının giderek merkezileşmesi, monolitik zincirler için güvenlik açısından büyük bir tehdittir çünkü daha merkezi bir doğrulayıcı havuzu saldırılara karşı daha savunmasızdır ve bu doğrulayıcıların aralarında gizli anlaşma yapmaları daha kolaydır.
İyi haber şu ki, blok zincir sistemleri dürüst çoğunluk varsayımına dayanan tasarımlardan uzaklaşabilir. Monolitik tasarımın bu tuzağından kaçınmak için modüler blok zincir yığını(stack), hesaplamayı doğrulamadan ayırır. Yürütmeyi (yani hesaplamayı) temel zincirden (genellikle "ana zincir" olarak adlandırılır) uzaklaştırarak, merkeziyetsizlikten ödün vermeden daha fazla ölçeklenme elde edilebilir.
Modüler blok zinciri yığını içinde yürütme katmanı, işlemlerin işlenmesi ve tekil durum geçişlerinin gerçekleştirilmesi gibi hesaplamalardan sorumludur.
Fuel, modüler yürütme katmanını: modüler blok zinciri yığını için tasarlanmış doğrulanabilir bir hesaplama sistemi olarak tanımlar. Daha somut bir ifadeyle, veri kullanılabilirliği için modüler bir blok zincirden yararlanan, dolandırıcılık veya geçerlilik kanıtlı bir blok zincir (veya başka bir hesaplama sistemi).

Biraz daha açmak gerekirse, hesaplama sistemleri aşağıdaki durumlarda modüler yürütme katmanları değildir: 1) sahtekarlık veya geçerlilik kanıtlı değillerse veya 2) veri kullanılabilirliğini başka bir katmana yüklemiyorlarsa.
Monolitik blok zincirler gibi, modüler yürütme katmanları da kendilerine özel blok üreticilerinden oluşan bir ağ kullanır. Bu birimler, işlemlerin yürütülmesi ve blokların üretilmesi gibi yoğun kaynak gerektiren süreçlerle ilgilenir. Ancak, monolitik sistemlerden farklı olarak, doğrulama işlemi yürütme katmanında değil, modüler blok zincir yığınının daha alt seviyelerinde gerçekleştirilir.
Modüler yürütmenin dehası, doğrulamanın (yani blok doğrulama) merkeziyetsiz olduğu sürece, hesaplamanın (yani blok üretiminin) merkeziyetsiz olmasına gerek olmamasıdır. Blok boyutlarının artırılması blok üreten node’ların merkezileşmesine yol açar ancak doğrulama ayrıldığı sürece, geçersiz bloklar zincire eklenmeyecektir.
Fakat bu nasıl mümkün olabilir? Blok üretiminin merkezi olarak kalmasına izin verirsek güvenliğin korunmasını nasıl sağlayabiliriz? İşte bu noktada modülerlik devreye giriyor.
Modüler yürütme katmanları, yoğun kaynak gerektiren yürütme işlevini, işlem gruplarını bir araya getirip yürüten ve bunları bloklar halinde periyodik olarak ana zincire (uzlaşma/ konsensüs/ veri erişilebilirliği katmanları) gönderen güçlü blok üreticilerine devreder. Bu blok üreticilerini dürüst kılmak ve blokların yalnızca geçerli işlemleri içerdiklerinden emin olmak için ana zincire gönderilen blokları indiren ve yeniden yürüten, blok üretmeyen ek node’lar (bunlar genellikle "doğrulayıcılar" veya "kanıtlayıcılar" olarak adlandırılırlar) vardır.
Bu node’ların işlemlerin geçerliliğini veya geçersizliğini nasıl ilettiğinin özellikleri, modüler yürütme katmanının optimistik model ya da sıfır bilgi(zk) modeli kullanmasına bağlı olarak farklılık gösterir. Optimistik modüler yürütme katmanları söz konusu olduğunda, node’lar yalnızca geçersiz bir işlem tespit ettiklerinde harekete geçerler (sahtekarlık kanıtları aracılığıyla). Tersine, sıfır bilgi(zk) modüler yürütme katmanlarında, node’lar işlemlerin geçerliliğini aktif olarak onaylar (geçerlilik kanıtları aracılığıyla). Her iki durumda da, blok üreticisi tarafından sağlanan tüm işlemlerin geçerliliği veya geçersizliği modüler yürütme katmanında değil, ana zincirde onaylanır.
Daha detaylı bir örnek sunmak için optimistik modüler yürütme katmanlarının (aksi kanıtlanmadıkça tüm işlemlerin geçerli olduğunun varsayıldığı) durumunu inceleyelim. Modüler yürütme katmanındaki tek bir node bile ana zincirde yayınlanan bir blok içinde geçersiz bir işlem tespit ederse, işlemin geçersiz olduğunu kriptografik olarak kanıtlayan bir sahtekarlık kanıtı (önceden tanımlanmış bir "uyuşmazlık çözüm süreci" içinde) oluşturabilir.
Bu durum, belirli bir modüler yığının yapısına bağlı olarak çeşitli şekillerde ele alınabilir. Örneğin:
Uzlaşma katmanına sahip modüler zincirlerde:
Node’lar, sahtekarlık kanıtını, işlemi doğrudan yeniden yürüten uzlaşma katmanındaki özel bir anlaşmazlık çözüm sözleşmesine sunar (bunun, modüler yürütme katmanı işlemlerinin, uzlaşma katmanının sanal makinesinde deterministik bir şekilde sahtekarlık kanıtlanabilir hale getirecek şekilde yapılandırılmasını gerektirdiğini unutmayın - örneğin, FuelVM, Ethereum'da uzlaşmayı sağlayabilmek için EVM içinde sahtekarlık kanıtlanabilir olacak şekilde tasarlanmıştır).
Eğer işlem geçersizse, suç işleyen blok üreticisi slashing yoluyla cezalandırılır (yani fon kaybeder), "ihbarcı" bu fonların bir kısmı ile ödüllendirilir ve zincirin durumu geçersiz işlem öncesine döndürülür. Geçersiz işlemi takip eden herhangi bir işlemin geçerli bir duruma karşılık geldiğine dair bir garanti olmadığından, sonra gelen bu işlemler yeniden gerçekleştirilir.
Uzlaşma katmanına sahip olmayan modüler zincirlerde:
Node, hafif istemcileri bloğun geçersiz bir işlem içerdiği konusunda uyarmak için eşten eşe sistemle (p2p) sahtekarlık kanıtını iletir. Sahtekarlık kanıtını blok üreticisinin dürüst olmayan davranışının kanıtı olarak kullanan node’lar, ana zincirde blok üreticisinin fonlarını kesen bir ceza işlemi önerebilir.
Zincirin "meşru" versiyonunu saptayacak bir uzlaşma katmanı olmadığından, kötü niyetli node’lar teorik olarak bloğu reddetmemeyi seçebilir; ancak, sahtekarlık kanıtı zaten hafif istemcilere iletildiğinden hafif istemciler, kötü niyetli bir node’un zincir versiyonunu takip etmemeleri gerektiğini bilirler. Sonuç olarak, sosyal konsensüs geçersiz bloğun reddedileceğini taahhüt eder.
Her iki durumda da, doğrulama süreci yürütme katmanı yerine ana zincirde yer aldığından, güvenlik ana zincire devredilir. Yani yürütme katmanı kendi başına daha düşük güvenlik garantisiyle çalışabilir. Yürütme katmanındaki node’ların %99'u dürüst olmasa bile, yürütme katmanında yalnızca geçerli işlemlerin olmasını sağlamak için sadece bir dürüst node yeterlidir.
Bu, node’ların dürüst çoğunluğuna güvenmek yerine, modüler yürütme katmanlarının (ve modüler yürütme katmanı hafif istemcilerinin) tek bir dürüst çoğunluk varsayımıyla çalışabileceği anlamına gelir.

Monolitik sistemdeki geçersiz bir blok sadece node’ların çoğunluğu tarafından geri döndürülebilirken, modüler bir sistemdeki tek bir node, sahtekarlık/geçerlilik kanıtlarını kullanarak geçersiz bir işlemi geri döndürmeye zorlayabilir.
Hesaplamanın ana zincir dışında yapılması, işlem hacminde büyük artışlara sebep olur. Ayrı gerçekleşen blok doğrulama süreci blok üreticilerini dürüst hale getirdiğinden, blok üretiminin merkezileştirilmesi endişesi olmadan blok boyutu önemli ölçüde artırılabilir.
Daha büyük bloklar, doğrulama yapan tüm node’lara daha fazla yük bindirse de, dürüst olmayan bir çoğunluğa dayanan merkezileştirme tabanlı güvenlik açıkları imkansız hale geldiğinden, dürüst olmayan çoğunluk varsayımı, bu alandaki merkezileşmenin daha az tehdit olduğu anlamına gelir.
Hafif istemcilerin node’ların en az yarısının dürüst olduğuna güvenmesini gerektiren monolitik sistemlerin tersine, hafif istemciler modüler bir mimari altında çok daha yüksek güvenlikle çalışabilir, çünkü sahtekarlık kanıtları, tek bir dürüst node’dan gelen bir kanıta dayalı olarak geçersiz işlemleri tanımlamalarını sağlar.

Buna ek olarak, blok üreticileri herhangi bir kötü niyetli faaliyetin tespit edileceğinin ve ‘slashing’ ile sonuçlanacağının farkındadır, bu nedenle dürüst olmayan bir davranışa teşebbüs etme olasılıkları daha düşüktür. Bu nedenle, yürütme katmanı, modüler yığının güvenlik açısından optimize edilmiş alt seviyelerine dayanırken, hesaplama açısından optimize edilebilir (yani çok sayıda işlem gerçekleştirebilir).
Modüler mimari, bazı teknik ve oyun teorisi zorluklarını da beraberinde getirmektedir.
Sahtekarlık/geçerlilik kanıtları dürüst node’ların sahtekarlığı kanıtlamasını sağlarken, ek bir sorun daha vardır: veri erişilebilirliği. Kanıt oluşturmak ve geçerliliğini belirlemek için bir bloktaki tüm işlemleri indirmeleri ve yeniden yürütmeleri gerektiğinden, node’lar blok erişilebilirliğine güvenirler.
Kötü niyetli bir blok üreticisi, teorik olarak ana zincire yalnızca blok başlıklarını yollayabilir ve potansiyel olarak ilgili verilerin bir kısmını veya tamamını saklayabilir. Bu durum, node’ların hafif istemcileri konu hakkında uyarmak için sahtekarlık/geçerlilik kanıtları oluşturabilmesini engeller.
Bir bloğu doğrulamaya çalışırken, verilerin kötü niyetli bir blok üreticisi tarafından saklandığını tespit etmek node’lar için önemsizdir. Bu durumda, kolaylıkla zincirin geçersiz olduğunu varsayabilir ve ondan uzaklaşabilirler. Ancak hafif istemciler, tüm bloğu indirmeden verilerin bir blok üreticisi tarafından saklanıp saklanmadığını nasıl belirleyebilir?
Veri erişilebilirliği örneklemesi (Data Availability Sampling-DAS) adı verilen yeni bir teknoloji, hafif istemcilerin bir bloğun tamamının yayınlanıp yayınlanmadığını olasılıksal olarak belirlemesini sağlar. Kısacası, hafif istemciler node’lardan bloğun rastgele küçük bölümlerini (veya "örneklerini") talep eder.

İstenen tüm örnekler mevcutsa, veri erişilebilirliği örneklemesi yapan yeterli sayıda hafif istemci olduğu varsayılırsa, bu olasılıksal olarak tüm bloğun mevcut olduğunu kanıtlar. Bloğun herhangi bir kısmı mevcut değilse, hafif istemciler verilerin saklandığını bilir ve zincirin o versiyonundan uzaklaşabilir.
Bu teknolojinin daha detaylı açıklaması bu yazının kapsamı dışındadır, ancak daha fazlasını buradan okuyabilirsiniz. Sonuç olarak Veri Erişilebilirliği Örneklemesi, kötü niyetli bir blok üreticisi verileri saklasa bile hafif istemcilerin geçersiz blokları tespit etmesini sağlar.
** **Bir diğer potansiyel sorun ise " doğrulayıcı ikilemi" olarak adlandırılan olgudur. Basitleştirilmiş haliyle aşağıdaki gibidir:
Eğer blok üreticileri, node’ların dürüst olmayan faaliyetleri tespit edeceğini bilirlerse, slash’ten kaçınmak için dürüst davranacaklardır.
Zaman içinde, node’lar blok üreticilerinin dürüst davranmaya devam edeceğini varsayarsa, geçersiz bir işlemi tanımladıkları için asla ödül almayacaklarından blokları doğrulamaya devam etmek için hiçbir teşvikleri kalmaz.
Node’lar blokları doğrulamaya devam etmek için finansal olarak teşvik edilmezlerse, bunu yapmayı bırakabilirler. Bu noktada, blok üreticilerinin usulsüz şekilde davranması mümkün hale gelir. Hala sıfır olmayan miktarda node olsa bile, blok üreticisinin kalan node’lara geçersiz işlemleri görmezden gelmeleri için rüşvet vermesi finansal olarak mantıklı hale gelebilir.
Bu durum, modüler bir yürütme katmanının ne kadar güvenli hale gelirse (yani bir blok üreticisinin dürüst davranmaması için daha az teşvik varsa), daha düşük güvenliğe doğru o kadar fazla eğilim gösterdiği (yani node’ların artık blokları doğrulamaya teşvik edilmediği) döngüsel bir muamma ile sonuçlanır. Öte yandan, ne kadar az güvenli olursa, o kadar yüksek güvenlik eğilimi gösterir.

Bu ikilem bir takım yollarla hafifletilebilir (bu faktörlerin oyun teorisini baz alan analizi için bu yazıya bakınız):
Fedakarlık - Modüler Yürütme Katmanları yalnızca tek bir dürüst doğrulayıcı gerektirdiğinden, en az bir fedakar node çalıştığı sürece sistem güvenli kalırlar. Ancak bu, pratikte yeterince güvenli olsa da, büyük miktarda varlığı kontrol eden bir sistem için yeterli bir garanti değildir.
Ekonomik çıkar - Potansiyel ihbarcı ödülünün ötesine geçen node’ları çalıştırmak için finansal teşvikleri olan birçok kuruluş vardır. Örneğin, blok kaşifleri, likidite sağlayıcıları ya da dapp'ler gibi ürün ve hizmetlerin işlerini etkin bir şekilde yürütebilmeleri için Modüler Yürütme Katmanları'nın bütün durumuna(full state) erişmeleri gerekir. Ancak bu kuruluşlar (teoride) kötü niyetli bir blok üreticisi tarafından rüşvet almaya açıktır.
Balinalar - Bir Modüler Yürütme Katmanı üzerinde büyük miktarda varlığı olan kuruluşlar, çıkarlarının korunduğundan ve zincirin güvenli olduğundan emin olmak için node çalıştırmayı seçebilir.
Hızlı para çekme - Optimistik Modüler Yürütme Katmanları, modüler yığının alt katmanlarında sona ermeyi(finalise) gerçekleştirmeden önce bir anlaşmazlık çözüm süresine dayandığından, Modüler Yürütme Katmanı’ndan uzlaşma katmanına para çekme işlemleri bu süre dolana kadar sonuçlandırılmaz. Bu nedenle, hızlı para çekme işlemleri sunan, Modüler Yürütme Katmanı’nda tokenleri kabul eden ve aynı tokenleri anında (bir ücret karşılığında) uzlaştırma katmanındaki kullanıcıya gönderen üçüncü taraf hizmetleri için bir pazar bulunmaktadır. Modüler Yürütme Katmanı durumunun(state) uzlaşma katmanına fon gönderdikten sonra geri döndürülmemesini sağlamak için, hizmet sağlayıcı böyle bir işleme girmeden önce zincirin geçerliliğini doğrulamaya teşvik edilir.
Blok üreticileri - Önceki geçersiz blokların üzerine blok gönderen blok üreticileri için bir ceza getirilmesi mümkündür. Böyle bir uygulama yapıldığında, blok üreticileri bir blok göndermeden önce zincirin geçerliliğini doğrulamaya teşvik edilecektir.
Yukarıdaki risk azaltma stratejileri tek başlarına tamamen etkili olmayabilir, ancak bir araya geldiklerinde bir takım farklı grupların Modüler Yürütme Katmanları üzerinde node çalıştırmaya ve zincirin durumunu doğrulamaya devam etmeleri için açık bir teşvik söz konusudur.
Modüler blok zinciri yığını, tek bir dürüst azınlık varsayımı altında yüksek güvenlik sağlayan bir tasarım benimseyerek, daha önce monolitik tasarımlar için mümkün olandan çok daha yüksek verimli blok zincirlerin geliştirilmesine olanak tanır.
Bununla birlikte, hesaplamayı doğrulamadan ayırmanın getirdiği ölçeklenebilirlik avantajlarının yanı sıra, özellikle yığının en üst kısmına yani modüler yürütme katmanına odaklanarak ölçeklenebilirlik konusunda daha fazla ilerlenebilir. Bu katmanda hesaplamayı daha ölçeklenebilir ve verimli hale getirmek, daha iyi blok zincirleri oluşturmanın bir sonraki adımıdır.
Şu anda geliştirilmekte olan çoğu modüler yürütme katmanı, ana zincir olarak Ethereum'u kullandığı için EVM'yi de yürütme ortamı olarak kullanmaktadır. Bu, içten yanmalı bir motorun enerji verimliliğini artırmaya benzer bir tasarımdır yani, modası geçmiş bir teknolojide yapılan aşamalı bir iyileştirmedir.
Gerçekte, modüler yığın çok daha geniş bir tasarım alanı açarak modüler yürütme katmanlarının verimsiz EVM'ye dayanma ihtiyacını ortadan kaldırır. Fuel, EVM'nin ötesine geçen, verimli ve ölçeklenebilir hesaplama, üstün geliştirici deneyimi ve maksimum güvenlik için optimizasyon yapan modüler bir yürütme katmanı oluşturmak için bu yeni tasarım alanından yararlanıyor.
Bölüm 2'de, modüler yürütme katmanlarının gerçek ölçeklenebilirliğe ulaşmak için önceki nesil blok zincir tasarımının teknolojik sınırlamalarını nasıl aşabileceğini inceleyeceğiz.
** **
No activity yet