L2 Planet Focus: zkSync
L2 Planet'in 101 Eğitim Serisinin ilk yayınında @0xis_eth kaleminden zkSync'i okuyoruz.
Başlıktan da anlayacağınız üzere konumuz bir Layer 2 (2. Katman) çözümü olan ZkSync. Fakat bodozlama ZkSync’e girersek konuyla alakası olmayan arkadaşlar hiçbir şey anlamaz, o yüzden önce Layer 1'dan yani Ethereum’un şu anki halinden bahsedelim.
Ethereum Mainnet (L1)
Ethereum’un şu anki yapısına “monolithic” yapı deniyor. Bu kelimenin Türkçe anlamını altta pembe renkle işaretledim:
“Yekpare” tanımı şu anki Ethereum’a tam olarak uyan bir tanım. Tek bir blockchain var ve ağ üzerinde yapılan tüm işlemler o blockchaine sokulmaya çalışılıyor. Bu blockchainin kapasitesi belli, 1 bloğun içinde yapılabilecek işlem miktarı sınırlı. Kapasitesinden fazla yüklenme olunca doğal olarak bazı sorunlar ortaya çıkıyor. Mesela Bloğa giremeyen işlemler bir sonraki bloğu beklemek zorunda kalıyor yada kullanıcılar daha fazla işlem ücreti vermek zorunda kalıyorlar.
Ethereum’daki blokların kapasitesi yükseltilebilir fakat bu sefer de toplam blockchainin miktarı büyür ve bu da merkeziyetsizliğe zarar verir.
Alttaki resim harika bir özet:
Gördüğünüz üzere arabalar (işlemler) otoparka (blockchaine) girmeye çalışıyor fakat 1 tane gişe ve 1 tane sıra var.. Bu monolithic yapı otoparka gelen talebi karşılayamıyor.
Küçük bir otoparkı işletmekte zorlanan yapı tüm dünyanın arabalarını (işlemlerini) içine alabilir mi? Tabii ki alamaz..
Ethereum ekosistemi çok zeki ve çalışkan bağımsız geliştiricilere sahip.. Vitalik ve diğer geliştiriciler “Hadi kapatalım gidelim, bizim otoparkımız daha fazla çalışmasın” demedi, bu otoparkı geliştirmeye çalıştılar. Otoparkın üstüne yeni katlar ve girişler koyup talebi karşılayabilir hale getiriyorlar, kalabalığı rahatlatıyorlar. Buna da L2 çözümleri deniyor..
L2 çözümleri kendi arasında rollup, plasma vs. gibi çeşitli başlıklara ayrılıyor. Ben bunları Youtube kanalımdaki ETH2.0 videosunda özetledim. O videoyu izlemenizi tavsiye ederim.
Vitalik’in Rollup-merkezli Ethereum yol haritası ve Rollup Rehberi yazılarına da mutlaka göz atın.
L2 çözümleri arasında en çok üstüne yoğunlaşılan çözüm “rolluplar”. ZkSync de bir rollup. Rolluplar aslında Optimistic Rollup ve ZK-Rollup olarak iki ana başlıkta incelenmeli fakat bu yazıyı uzatmak istemiyorum. ZkSync’i öğrenirken ZK-Rollupların nasıl çalıştığını da basitçe öğrenmiş olacaksınız.
Soru cevapla ZK-Rollup ve ZkSync
“Nedir bu rollup?”
Rollup aslında Ethereum Mainnetinde (Layer 1) çalışan bir akıllı sözleşmedir. Akıllı sözleşmelerle Uniswap ve Aave gibi DeFi uygulamaları yaratılabildiği gibi bir rollup da yaratılabiliyor.
Aslında buna evren içinde başka bir evren yaratmak diyebiliriz. Büyük ve kapsayan evren Ethereum Mainnet, kapsanan evren de rollup. Ethereum mainneti tarafından kapsanan rollup güvenliğini de kapsandığı yerden alıyor.
“Nasıl yani? Örnek ver.”
Rollup evrenine girebilmek için Ethereum Mainnetinde bulunan rollup akıllı sözleşmesinin içine varlık deposit ediyoruz. O evrene deposit ettiğimiz varlıklar artık o evrende geçerli oluyor, yani rollupta, ve işlemleri orada yapıyoruz. Yani Ethereum’un yüksek işlem ücretlerinden kaçmış olduk. Ucuz ve hızlı işlemler yaptık.
“E rolluplar hem ucuz hem de Ethereum ile aynı güvenlikte nasıl oluyor?”
Aynı güvenlikte çünkü rollupta yaptığımız işlemler rollupın “sıralayıcıları” tarafından toplanıyor, “batch” denilen yığınlar haline getiriliyor ve “proverlar” tarafından bu işlemlerin yapıldığına dair kriptografik bir kanıt oluşturuluyor. (Zero Knowledge dediğimiz matematiksel kanıtlar burada devreye giriyor) Daha sonra bu oluşturulan kanıt ve yapılmış işlemlerin verilerinin küçük bir miktarı (datası) Ethereum Mainnetindeki rollup akıllı sözleşmesine gönderiliyor. Bu işlem belirli aralıklarla tekrarlanıyor ve rollup akıllı sözleşmesindeki durum sürekli güncelleniyor. Kanıtlar ve datalar Ethereum Mainnetindeki akıllı sözleşmede olduğu için güvenlik Ethereum tarafından sağlanmış oluyor.
Rollup’taki “sıralayıcıların” ve “proverların” kullanıcıların fonlarını çalması mümkün değil. Yalnızca işlemleri bir araya getirip akıllı sözleşmedeki durumu güncelliyorlar, işlemleri yolluyorlar. Hatta çalışmayı bırakıp işlemleri yollamadıklarında bile kullanıcılara zarar veremiyorlar çünkü işlemlerin verileri Layer 1'daki akıllı sözleşmede duruyor. İsteyenler varlıklarını gidip direkt akıllı sözleşmeden çekebiliyorlar.
ZK-Rollupların çalışma mantığını basitçe öğrendiniz, şimdi gelelim ZkSync’e has özelliklere..
1- ZkSync’in en önemli özelliği EVM’i yani Ethereum Sanal Makinesini ZK-Rollup ile uyumlu çalışabilir hale getirmesi. Buna kısaca zkEVM deniyor. Böylece Ethereum uygulamalarının kodlarını ZK-Rollup üzerinde çalıştırmak, Zero Knowledge’ın nimetlerinden yararlanmak mümkün hale geliyor.
Nimet = Ethereum güvenliğiyle 2000 TPS :)
2- ZkSync üzerinde yapılan işlemlerin ücretleri için $ETH gibi belirli bir tokenın tutulmasına gerek yok. Eğer $DAI transferi yapacaksan işlem ücretini direkt $DAI olarak ödeyebiliyorsun.
3- Argent Wallet ZkSync uyumlu olacağı için Metamask’in zincirlerinden kurtuluyoruz. Bu cüzdan hakkındaki detaylı inceleme için videoma göz atabilirsiniz.
Tüm bu güzel özelliklerin yanında belirtilmesi gereken önemli bir şey var:
ZkSync başlarda %100 merkeziyetsiz olmayacak. (ki zaten böyle bir şey ne kadar mümkün tartışılır) Protokolde çıkabilecek sorunlar hızlı bir şekilde onarılabilecek, protokol değiştirilebilecek. Değiştirmeler deploy edilmeden önce 4 haftalık bekleme süresi olacak, bu süre içerisinde isteyen herkes “acil çıkış” mekanizması ile varlıklarını çekebilecek.
“Abi 4 haftalık süre mi olur? Sorun çıktığında 4 hafta bekleyecek miyiz?” dediğinizi duyar gibiyim.. Bu sorun için Ethereum ekosisteminin önde gelen isimlerinden bir konsey oluşturulmuş:
Yukarıda gördüğünüz isimlere 4 haftalık bekleme süresini kısaltma hakkı tanınmış:
8/15 oy bekleme süresini 2 haftaya
10/15 oy bekleme süresini 1 haftaya
12/15 oy bekleme süresini 3 güne
düşürüyor.
Tüm bunlar sistemin yeterince güvenilir olduğu düşünüldüğünde kaldırılacak.
ZkSync ve ZK-Rollup hakkında bilmeniz gereken her şeyi öğrendiniz fakat fark ettiğiniz üzere TPS hala astronomik sayılara ulaşmadı. Ethereum güvenliğini kullanarak merkeziyetsizliğe zarar vermeyecek şekilde 2000 TPS yapabiliyor olmak çok iyi olsa da insan biraz daha iyisini bekliyor. “Biraz daha iyisini” göremiyor olmamızın nedeni ise yine Ethereum’un sınırlamaları.. İşlemlerin datalarının bir kısmı Ethereum Mainnetindeki akıllı sözleşmeye gönderilirken bu işlem için bir miktar gas gerekiyor çünkü her ne kadar az olsa da Ethereum’da yer kaplayıp işlem yapmış oluyoruz.
Peki bir sistem kursak, işlem dataları Ethereum Mainnetinde değil de farklı bir yerde tutulsa ve bu kurduğumuz sistem ZK-Rollup ile beraber çalışabilse nasıl olurdu? Bence çok iyi olurdu ve böyle bir şey VAR!
zkPorter
Grafikten gördüğünüz üzere zkPorter 20.000 TPS’ye kadar çıkabiliyor fakat güvenliği zkRollup’dan biraz daha düşük çünkü datalar Ethereum Mainnetinde değil, Guardian adı verilen kişiler tarafından korunuyor.
zkSync tokenı ile Guardian adı verilen validator benzeri bir mekanizma ortaya çıkacak. Bu kişiler Proof Of Stake ile zkPorter’da yapılan işlemlerin datalarını takip etmekle mükellef olacaklar ve bir şerefsizlik yaptıklarında tokenları “slash” yiyecek, cezalandırılacaklar.
Guardianları tanımlarken “validator benzeri bir mekanizma” dedim çünkü bu mekanizma alıştığımız validatorler gibi güçlü değil, varlıkları çalma şansları yok. Kötü niyetli kişilerin zkPorter’da yapabilecekleri tek şey varlıkları dondurmak, bunun için de stakelenen tokenların 2/3'üne ihtiyaçları var. ZkSync ekibi bu ihtimalin önüne geçmek için toplam token miktarının 2/3'ünü topluluğa ayırarak adil bir dağıtım yapacak. (Airdrop göz kırpıyor)
Sonuç
Ben teknik bilgi sahibi değilim ve akıllı sözleşme yazamıyorum fakat meraklı biri olarak blockchainin evrim geçirdiğini görebiliyorum. Tek katmanlı sistemlerin dünyadaki talebi karşılayamacağı anlaşıldı ve çok katmanlı sistemlere geçiş süreci başladı. zkSync gibi projelerin Ethereum üzerinde geliştiriliyor olmaları bir “rastlantı” ya da “fanatiklik” değil. Topluluğu en büyük olan ve dolayısıyla merkeziyetsizliği en iyi olan blockchain Ethereum, yani geliştiriciler en iyisini geliştirmekle uğraşıyorlar.
Kısaca, Ethereum Layer 1 “data”, onun üzerine çıkılan Layerlar ise “computation” için kullanılacak ve alışık olmadığımız bu düzen bizi şaşırtacak..
Kaynak olarak zkSync’in dökümanlarına ve medium sayfasına bakabilirsiniz. Ayrıca Polynya isimli anonim şahısı twitter ve medium üzerinden takip etmenizi öneririm.
L2 Planet 101 Eğitim Serisinden şimdilik bu kadar. Katkılarından dolayı yazının yazarı @0xis_eth ‘e teşekkür ederiz. Bir sonraki yayınlarda görüşmek üzere :)