Celestia ve Fuel

0xiseth
6 min readJun 24, 2022

--

Bu yazıyı iyi anlayabilmek için rollup ve UTXO konuları hakkında temel bilgi sahibi olmak gerekir.

Not: Kripto paralar volatil varlıklardır ve akıllı sözleşmelerin istismarı, projenin kötü niyetli yönetilmesi gibi birçok risk içerirler. Bu yazıyı yazma amacım projenin nasıl çalıştığını anlatmaktır, yatırım tavsiyesi vermek değildir.

John Adler

John Adler, Celestia ve Fuel Network’ün co-founder’ı. Bu yazıyı yazma nedenim kendisini dinlemekten zevk alıyor olmam.

Celestia geliştirilmekte olan bir blockchain, Fuel Network ise Ethereum Mainnet’te çalışan ilk Optimistic Rollup (yalnızca simple payment yani token transferi yapılabiliyor, smart contractlar yok).

Bu iki proje birbiriyle alakasız gibi gözükse de yakın gelecekte beraber çalışacaklarını tahmin etmek çok zor değil. Fakat tabii, bunu tahmin edebilmek için önce bunların ne olduğunu bilmek gerek. Öğrenelim.

Monolithic ve Modular

Blockchain dünyasında son zamanların en tartışılan konularından biri modular mimari. Bu esasında günümüzde kullandığımız monolithic mimarili blockchainlerin parçalara ayrılmış fakat hala birlikte çalışabilen hali anlamına geliyor.

Yıllardır kullandığımız Bitcoin, Ethereum gibi blockchainler monolithic mimariye sahip, Türkçe anlamıyla “yekpare” yapılar.

Monolithic mimariye sahip blockchainler 3 temel unsuru bir arada gerçekleştiriyor:

1- Execution, computation yani hesaplama görevi ile sistemde işlemler yapılıyor.

2- Consensus görevi ile sistemde yapılan işlemler sıralanıyor.

3- Data Availability görevi ile sistemde yapılan işlemlerin verileri ulaşılabilir şekilde depolanıyor.

Bu üç temel unsurun aynı sistemde gerçekleşiyor olması, o sistemin potansiyelini kısıtlıyor. Sistemi oluşturan şeyler aslında nodeların, yani bilgisayarların, ta kendisi. Bu bilgisayarlar birçok işi aynı anda yapmaya çalıştığında darboğaza giriyorlar.

Modular

Modular mimari ile çalışacak blockchainler ise bu unsurları birbirinden ayırıyor:

  • Execution Katmanında off-chain şekilde computation, hesaplama yapılarak işlemler gerçekleştiriliyor. Rolluplar bu görev için kullanılıyor. (Şemada Fuel, Arbitrum ve zkSync örnek olarak gösterilmiş)
  • Settlement Katmanında rolluplar yani Execution Katmanı yer alıyor. Adı üstünde “settlement”, yani “yerleşme yeri”. (Şemada Ethereum Mainnet örnek olarak gösterilmiş)
  • Consensus Katmanında ise yapılan işlemler sıralanıyor ve işlemlerin verilerinin ulaşılabilir şekilde depolanması sağlanıyor. (Şemada Celestia ve Eth2.0 örnek olarak gösterilmiş)

Böylece monolithic mimarinin aksine modular mimaride aynı nodelar birçok farklı iş yapmıyor. Sistemin yükü azaltılmış oluyor.

Celestia

Celestia

Celestia gibi modular-blockchain yapılar yalnızca Consensus Katmanı görevi görecek şekilde tasarlanıyor. Yani Celestia blockchaininin görevi işlemleri sıralamak ve verileri tutmak.

Peki Celestia nasıl kullanılabilir? Celestium olarak anılan bir örnek üzerinden anlatalım:

Rolluplar (Execution) Ethereum Mainnet’in üzerine yerleşirken (Settlement), verilerini Celestia’ya yollayabilir (Data Availability).

Böylece rollup Ethereum’un üzerinde olur, deposit ve withdraw işlemleri Ethereum’da yapılır yani Ethereum’un büyük network etkisinden mahrum kalmaz. Ama aynı zamanda verilerini Ethereum değil Celestia’ya yollayarak Ethereum’a veri yollama maliyetinden kurtulur. Ethereum’a yalnızca Fraud Proof ya da Validity (Zero Knowledge) Proof yollar.

Celestia’ya yollanan işlem verileri Data Availability Sampling tekniği sayesinde “kolay” bir şekilde denetlenebilir. Verilerin varlığının denetlenmesi önemlidir çünkü en basit örnekle Optimistic Rollup validatorlerinin Fraud Proof ile geçersiz işlemleri ortaya çıkarması için verileri incelemesi gerekir. Benzer şekilde zk-Rollupta yapılan işlemlerin verisi ulaşılabilir değilse o rollupta kimin neye sahip olduğu bilinemez.

Data Availability Sampling tekniği, nodeların tüm bloğun verisini indirmeden o bloğun içeriğinin yayınlanmış olduğunu doğrulayabilmesini sağlar. Monolithic yapıdaki blockchainler şu anda bunu kullanmıyorlar, yani diğer blockchainlerde verinin yayınlandığının doğrulanabilmesi için nodeların tüm veriyi indirmesi, Full Node olması gerekiyor.

Son durumda sistem şu şekilde çalışır:

1- L2 Operator (Rolluptaki validatorlar) rollup içinde yapılan işlemlerin verilerini Celestia’ya, kanıtlarını ise Ethereum’a yollar.

2- Celestia validatorleri, kendilerine yollanan bu verilerin ulaşılabilir olduğunun kanıtını Ethereum’a yollar.

3- Rollup kontratı Celestia’daki verilerin ulaşılabilir olduğundan emin olur.

Yani esasında Celestia burada bir “Data Availability Mekanizması” olarak kullanılır.

Verilerin saklanması için Ethereum yerine Celestia’ya güvenmek önemli bir seçimdir. Celestia’da oluşacak sorunlar Ethereum üzerindeki bu rollupı etkileyebilir fakat Celestia kendi içerisinde “slashing” gibi kötü niyetli aktörleri caydıracak güvenlik önlemlerine sahiptir.

Fuel Network

Fuel

Fuel Network kendini bir “Execution Katmanı” olarak tanımlıyor. Yazının başında da dediğim gibi Fuel esasında Ethereum Mainnet’te trustless ve permisionless olarak çalışan ilk ve tek Optimistic Rollup. Fakat bu rollup yalnızca simple payment yani token transferleri için kullanılabiliyor.

Fuel ekibinin vizyonu farklı, ölçeklenmenin smart contract çalıştırabilen bir sistemde olması gerektiğini biliyorlar.

FuelVM ve UTXO ile paralel validation: Fuel v2

FuelVM bir virtual machine, tıpkı EVM gibi. Onu EVM’den ayıran şey smart contractları UTXO ile çalıştırabiliyor olması. Böylece sistem işlemleri paralel olarak onaylayabiliyor.

Paralellik neden önemli?

Ethereum’un mimarisi gereği Ethereum’da nodelar işlemleri sıralı şekilde onaylarlar. Fuel’de ise nodelar işlemleri paralel olarak onaylayabilir.

UTXO ile yapılan işlemlerin “state transitionı” yani “chaindeki state değişimi” açıkça belli olduğundan, aynı state üzerinde işlem yapmayan A kişisi ve B kişisinin işlemleri paralel olarak onaylanabilir. Yani nodelar bunu yapabilir çünkü UTXO işlemlerin birbiriyle çakışmadığını açıkça ortaya koyar.

Bu aslında bir bilgisayarın birbiriyle alakasız olan “FUEL” ve “NETWORK” kelimelerini yazarken “F”, “U”, “E”, “L”, “N”, “E”, “T”, “W”, “O”, “R”, “K” harflerini sırasıyla yazmak yerine iki kelimeyi aynı anda yazabilmesine benziyor.

Paralel işlemler CPU’dan tam verim alınmasını sağlıyor. Birden fazla CPU çekirdeği işlemleri onaylamakta kullanılabildiği için sistemin toplam verimi artıyor. CPU’nun birden fazla çekirdeğinin kullanılması önemli çünkü günümüzde geliştirilen CPU’larda çekirdek sayısı artarken, tek çekirdeğin verdiği performansın niteliği artırılmıyor. Fuel ekibi geliştiricilerin en yüksek güvenlikle en yüksek verimi almalarının yolunun bu olduğunu düşünüyor. EVM ve Ethereum’un paralel işlemlere olanak tanıması kendi mimarisi gereği çok zor olduğundan EVM-compatible (EVM uyumlu) olmayan bir mimari kullanmayı tercih etmişler.

UTXO ve Smart Contract

UTXO modeli Cardano gibi smart contract platformlarında denenmişti fakat bunun kullanıcı deneyimini epey kısıtladığı görülmüştü.

Fuel’da bu kötü kullanıcı deneyimi yaşanmıyor çünkü Fuel contratlarında o contractı tanımlayan contractID hiç değişmezken, utxoID’si bloktan bloğa değişebiliyor.

UTXO’nun Cardano’daki kullanıcı deneyimini kısıtlaması kullanıcıların contratların utxoID’sini sign etmesinden kaynaklanıyor. Cardano’da iki kullanıcı aynı anda bir contrat utxoID’sini sign etmek isterse sadece bir tanesi geçerli işlem yapıp bloğa girebiliyor, diğer kullanıcı yeni oluşacak utxoID’yi imzalamak zorunda kalıyor. Yani o contract ile her blokta yalnızca 1 kişi etkileşime geçebiliyor.

FuelVM’de durum böyle değil. Fuel’da kullanıcılar değişebilen utxoID yerine hep sabit kalan contractID’yi sign ediyorlar.

Ayrıca bir consensus kuralı var:

Bir işlem sign edilirken txID, outputIndex, balanceRoot, stateRoot ve txPointer 0 olarak ayarlanıyor. Çünkü kullanıcılar sign işlemini yaptıkları sırada bu değerlerin ne olduğunu bilemezler. Bu değerler o contratla “o işlemden” önce etkileşime giren birine bağlı olarak değişebilir. Yani “o işlemin” sign edilmesi ve bloğa eklenmesi arasındaki zamanda başka bir işlem contratla etkileşime girip bu değerlerin değişmesine yol açabilir. Bu yüzden bu değerler block producer tarafından, “o işlem” bloğa sokulduğu sırada, olması gerektiği şekilde ayarlanır.

Böylece kullanıcılar arasındaki “contratla etkileşime girme çekişmesi”önleniyor. UTXO modeli bir smart contract platformunda kullanılabilir hale geliyor.

Sway

FuelVM, Solidity ve Rust’tan esinlenerek geliştirilmiş Sway adında yeni bir programlama diline sahip.

Hatta Sway ile geliştirilmiş ilk Uniswap-benzeri uygulama test aşamasında duyuruldu.

Bu uygulamayı:

Sonuç

Modular yapı katmanları hızla geliştiriliyor ve geliştirilen bu projelerin birbirlerini tamamladıklarını görüyoruz. Bugünkü yazımın asıl amacı Celestia ve Fuel’un birbirini Execution ve DA Katmanı olarak tamamladığını gösterebilmekti. Fuel geliştiricileri gerekli optimizasyon ve ölçeklemenin execution kısmında yoğunlaşması gerektiğini çünkü DA kısmındaki sorunların Celestia’nın kullandığı DA Sampling gibi tekniklerle zaten çözüleceğini belirtiyor.

Fuel v2 henüz public kullanıma sunulmadı, hala geliştirme aşamasında. Public kullanımdan önce public testnet olursa katılım sağlamaya çalışacağım.

Kaynaklar:

https://forum.celestia.org/t/accounts-strict-access-lists-and-utxos/37

--

--

0xiseth
0xiseth

Written by 0xiseth

Hobi olarak Blockchain ve Kripto Paralarla ilgileniyorum.. Twitter: @0xiseth

No responses yet