Bugün, uygulama zincirleri için Madara'yı denemeye başlayan projeleri zaten görüyoruz. Pragma, Kakarot, Mangata Finance ve Dojo sadece birkaç örnektir. Çoklu zincirli geleceğe ve zk ölçeklendirmenin gücüne inandığımız sürece gelecekte bu projelerin çok daha fazlasını göreceğiz. Ancak uygulama zincirlerinin sayısının artması aynı zamanda şu soruları da gündeme getiriyor:
Bu yazıda uygulama zincirinin çok olmasından dolayı ortaya çıkan sorunları açıklamaya çalışacağım ve aynı zamanda Madara ve Starknet için zarif ve optimal olduğunu düşündüğüm soruna olası bir çözüm ortaya koymaya çalışacağım. Uygulama zincirleri ve paylaşılan sıralama konusunda zaten bilgiliyseniz, "Bir dakika, Polkadot yeniden başlıyor" bölümüne atlamaktan çekinmeyin.
Diyelim ki artık Ethereum'a yerleşen 100 farklı uygulama zincirinin olduğu bir gelecekteyiz. Bunun yol açacağı tüm sorunları ele alalım.
Her uygulama zincirinin merkeziyetsizliği kendi başına çözmesi gerekecek. Artık uygulama zincirlerinin merkezi olmayan hale getirilmesi L1'lerinki kadar gerekli değil çünkü temel olarak güvenlik için L1'lere güveniyoruz. Ancak canlılığı sağlamak, sansüre karşı dayanıklılık sağlamak ve tekelci avantajlardan (örneğin yüksek ücretler) kaçınmak için hâlâ ademi merkeziyetçiliğe ihtiyacımız var. Ancak şunu da unutmamak gerekir ki, eğer her uygulama zinciri merkeziyetsizliği kendi yöntemiyle çözerse, bu durum çok hızlı bir şekilde doğrulayıcı kümelerinin parçalanmasına yol açacaktır. Her uygulama zincirinin yeni doğrulayıcıları bünyesine katmak için ekonomik teşvikler geliştirmesi gerekecek. Ayrıca doğrulayıcıların hangi istemcileri çalıştırma konusunda rahat olduklarını seçmeleri gerekir. Bunun, geliştiricilerin kendi uygulama zincirlerini başlatmaları (yalnızca bir işlem olan akıllı sözleşmeyi dağıtmak yerine) için yarattığı büyük giriş engelinden bahsetmiyorum bile.
Şekillendirilebilirlik esas olarak uygulamalar arası etkileşim anlamına gelir. Ethereum veya Starknet'te bu sadece başka bir sözleşmenin çağrılması anlamına gelir ve diğer her şey protokolün kendisi tarafından gerçekleştirilir. Ancak uygulama zincirleri ile bu çok daha zor hale geliyor. Farklı uygulama zincirlerinin kendi blokları ve fikir birliği mekanizmaları vardır. Başka bir uygulama zinciriyle etkileşime girmeye çalıştığınızda, fikir birliği algoritmasını ve kesinlik garantilerini dikkatlice incelemeniz ve buna göre zincirler arası bir köprü (doğrudan zincire veya L1 aracılığıyla) kurmanız gerekir. Farklı tasarımlara sahip 10 uygulama zinciriyle etkileşime geçmek istiyorsanız bunu 10 farklı kez yaparsınız.
Merkezileşmeyi ve köprü kurmayı çözmek kolay değil. Eğer bu her uygulama zinciri için bir gereklilikse, sıradan akıllı sözleşme geliştiricilerinin kendi uygulama zincirini oluşturması çok zor olacaktır. Üstelik her uygulama zinciri bu sorunları kendi yöntemleriyle çözmeye çalışırken, yakında farklı zincirlerin farklı standartlar takip ettiğini ve ekosisteme katılmayı daha da zorlaştırdığını göreceğiz.
Uygulama zinciri alanını takip ediyorsanız "paylaşılan sıralayıcılar" terimini duymuş olabilirsiniz. Yukarıda belirtilen sorunları çözmeyi amaçlayan, tüm zincirler için ortak bir doğrulayıcı kümesine sahip olma fikridir. Bu nasıl çalışır.
Paylaşılan sıralayıcıların özü, her uygulama zinciri veya L2 için farklı bir doğrulayıcı grubuna sahip olmanıza gerek olmamasıdır. Bunun yerine, tüm zincirler için blokları sıralayan, gerçekten verimli ve merkezi olmayan bir doğrulayıcı kümesine sahip olabilirsiniz! 100 farklı uygulama zincirinden gelen işlemleri içeren blokları hayal edin. Her uygulama zinciri için yürütme motorlarını yönetebilmeniz gerektiğinden, bunun sıralayıcıyı gerçekten şişireceğini düşünüyor olabilirsiniz.
Ama yapmıyorsun!
Günümüzde hemen hemen her sıralayıcı merkezi olduğundan, sıralayıcının işlemleri toplayan, sipariş eden, yürüten ve sonuçları L1'e gönderen tek bir uygulama olduğu düşünülmektedir. Ancak bu işler birden fazla modüler bileşene ayrılabilir. Bu açıklama uğruna onları ikiye ayıracağım.
Burada, sıralama motoru paylaşılan sıralayıcıdır ve toplama motoru temelde tüm toplama mantığıdır. Yani işlem yaşam döngüsü şöyle görünüyor
Paylaşılan sıralayıcılar temel olarak işlemleri toplamalar arasında sıralar ve bunları L1'e gönderir. Dolayısıyla, paylaşılan sıralayıcı setini merkezileştirerek, temel olarak o sıralayıcı setine bağlı tüm toplamaları merkezi olmayan hale getirmiş olursunuz! Paylaşılan sıralayıcıların çalışmasına ilişkin daha ayrıntılı bir fikir edinmek içinEspresso'nun bu harika<a href="https://hackmd.io/ @EspressoSystems /EspressoSequencer"> 17. makalesine de başvurabilirsiniz.
Şekillendirilebilirliğin en önemli sorunlarından biri, diğer uygulama zincirinde işlemin ne zaman sonuçlandığını anlamak ve buna göre zincirinizde aksiyon almaktır. Ancak paylaşılan sıralayıcılarla, her iki oluşturulabilir toplama da blokları birbiriyle paylaşır. Dolayısıyla, bir işlem B toplamasında geri alınırsa bloğun tamamı geri alınır ve bu, A toplamasındaki işlemin de geri alınmasına neden olur.
Şimdi bunu söylemek kesinlikle yapmaktan daha kolay geliyor. Bunun için. Toplamalar arasındaki iletişimin verimli ve ölçeklenebilir olması gerekir. Paylaşılan sıralayıcıların, toplamaların nasıl iletişim kurabileceği, zincirler arası mesajların nasıl görünmesi gerektiği, toplama yükseltmeleriyle nasıl başa çıkılacağı vb. konularda uygun standartlar bulması gerekir. Bunlar çözülebilir sorunlar olsa da karmaşıktır ve çözülmesi kolay değildir.
Paylaşılan sıralayıcılar, merkeziyetsizlik yönünü soyutlayıp zincirler arası mesajlaşmayı kolaylaştırsa da, yine de her zincirin paylaşılan sıralayıcıyla uyumlu olması için takip etmesi gereken bazı standartlar vardır. Örneğin, tüm toplama işlemlerinin sıralayıcının anlayabileceği genel bir formata dönüştürülmesi gerekiyor. Benzer şekilde, ilgili işlemleri getirmek için sıralayıcıdan gelen blokların filtrelenmesi gerekir. Bunu çözmek için, paylaşılan sıralayıcıların standart kodu soyutlayan ve uygulama zinciri geliştiricilerine yalnızca iş mantığı kısmını gösteren toplama çerçeveleri veya SDK'lar bulacağını varsayıyorum.
Uygulama zincirlerinin paylaşılan sıralayıcılarla nasıl görüneceğine ilişkin bir diyagramı burada bulabilirsiniz
Polkadot, çoklu zincirli gelecek üzerinde çalışmaya Ethereum'dan çok önce başlamıştı. Aslında üzerinde 5 yıldan fazla bir süredir çalışıyorlar ve eğer Polkadot'a aşina iseniz, yukarıdaki tasarımın Polkadot'un halihazırda yapmış olduğu pek çok şeyi temelde yeniden icat ettiğini fark etmiş olabilirsiniz!
Röle zinciri temel olarak yukarıdaki sıra şemasındaki sıralama motoru + L1'dir. Röle zinciri
Rölenin temelde yukarıda tartıştığımız paylaşımlı sıralayıcı olduğunu fark etmiş olabilirsiniz. Aktarma zincirinin de yürütmeyi doğrulaması gerektiği gerçeği dışında (Polkadot bir L1 olduğundan) bunu Ethereum'a bırakıyoruz.
Önceki bölümde, her zincirin diğer zincirlerle birlikte çalışmak için kendi yöntemlerini oluşturması halinde, kısa sürede tüm zincirlerde farklı standartlar ve formatlarla şişirileceğimizden bahsetmiştik. Etkileşim kurduğunuz her zincir için bu formatların tamamını takip etmeniz gerekecektir. Üstelik bir zincir güncellenirse ne olur gibi soruları da yanıtlamanız gerekecek. Ancak tüm zincirlerin uyması gereken standartlar getirilerek bu sorunlar zarif bir şekilde çözülebilir.
Tahmin edebileceğiniz gibi Polkadot bunu zaten yaptı. XCM mesajlaşma formatıdır ve XCMP, tüm alt tabaka zincirlerinin birbirleriyle iletişim kurmak için kullanabileceği mesajlaşma protokolüdür. Ayrıntılarına girmeyeceğim ama buradan okuyabilirsiniz 5.
Substrat, Parity tarafından geliştirilen ve blockchain oluşturmak için kullanılabilecek bir çerçevedir. Polkadot'taki tüm parachain'ler substrat kullanırken, substrat aslında zincirden bağımsız bir şekilde inşa edilmiştir. Çerçeve, bir blockchain'in tüm ortak yönlerini özetler, böylece yalnızca uygulama mantığınıza odaklanabilirsiniz. Bildiğimiz gibi Madara, Polkadot, Polygon Avail ve diğer birçok proje gibi Substrate üzerine inşa edildi. Üstelik Cumulus, zincirinizi Polkadot'a bağlamanıza olanak tanıyan, Substrate'in üzerinde yer alan bir ara katman yazılımıdır.
Analojimize daha önce olduğu gibi devam edersek, Substrate ve Cumulus, uygulama zincirleri oluşturmanıza ve bunları paylaşılan sıralayıcılara bağlamanıza olanak tanıyan toplama çerçevelerinin alternatifleri olarak düşünülebilir.
Paylaşımlı Sıralayıcılar → Röle Zincirleri
Şekillendirilebilirlik → XCM ve XCMP
Toplama çerçeveleri/Yığınları → Substrat ve Kümülüs
Yani evet, her şey yeniden Polkadot'a benziyor! Bunun dışında Polkadot ve Parity, daha fazla özellik eklemek ve onu daha ölçeklenebilir hale getirmek için Substrate ve Polkadot'u geliştirmeye devam eden en deneyimli ve finanse edilen ekiplerden bazılarına sahiptir. Teknoloji zaten yıllardır savaşta test edildi ve kutudan çıktığı gibi tonlarca geliştirme aracına sahip.
Polkadot'un çok zincirli geleceği inşa etmeye Ethereum'dan çok daha önce başladığı doğru olsa da, bugün itibariyle Ethereum'un en merkezi olmayan blok zinciri ve uygulamaların ve likiditenin çoğunun bulunduğu yer olduğu inkar edilemez. Peki ya tüm Polkadot teknolojisini Ethereum ekosistemine getirmenin bir yolu olsaydı?
Orada! Aslında bunu Madara ile zaten başlattık. Madara, herkesin Ethereum'un üzerinde kendi zk destekli L2/L3 çözümünü oluşturmasına olanak sağlamak için Substrate çerçevesini kullanıyor. Bundan sonra ihtiyacımız olan şey, paylaşımlı sıralayıcı biçimindeki Polkadot aktarma zinciridir. Yani temel olarak Polkadot aktarma zincirini yeniden kullanabilirsek ancak
Daha önce de belirtildiği gibi paylaşımlı sıralayıcılar alabiliriz. Açıkçası, bunu söylemek yapmaktan daha kolaydır. Ancak bu yolun sıralayıcıları, standartları ve çerçeveleri sıfırdan yeniden inşa etmekten daha pragmatik olduğuna inanıyorum. Polkadot, Ethereum için ödünç alabileceğimiz pek çok sorunu zincirden bağımsız bir şekilde çözmüştür. Bir yan ürün olarak şunu elde ederiz:
Bu yazıyı yazmanın ardındaki ana fikrim, Starknet ve Ethereum'un daha geniş ekosistemi arasında tartışmayı başlatmaktır. Paylaşılan sıralama modelinin yalnızca Starknet'in değil, aynı zamanda onun üzerine inşa etmeyi düşünen tüm uygulama zincirlerinin merkeziyetsizleştirilmesinde önemli bir rol oynayacağını düşünüyorum. Uygulama zinciri tezi ve zk ölçeklendirme konusunda kendimize güvendiğimiz sürece, paylaşılan sıralama modelinin kapsamlı bir analizi kaçınılmazdır. Üstelik Madara üretime doğru ilerlerken ve Starknet ademi merkeziyetçilik üzerinde çalışmaya başladığından bu konunun artık ele alınmasının önemli olduğunu düşünüyorum. Bu nedenle, bunu okuyan herkesin konu hakkında geri bildirimlerini/önerilerini bırakmalarını rica ediyorum. Düşüncelerinizi okumayı sabırsızlıkla bekliyorum!
Polkadot'a benzeyen Cosmos, uzun yıllardır çok zincirli bir gelecek için çözümler üretiyor. Sonuç olarak Cosmos SDK ve IBC ile pek çok gelişme kaydetti ve ayrıca Cosmos ekosisteminin üzerine pek çok uygulama zincirinin kurulduğunu da görüyoruz. Dolayısıyla bu yaklaşım için Cosmos'u da dikkate almak adil olur. Bu konuyla ilgili kişisel görüşüm, Polkadot'un paylaşılan sıralayıcılar sorununu çözdüğü için daha alakalı olduğu, Cosmos'un ise her uygulama zincirinin kendi doğrulayıcı setini oluşturmasını gerektirdiği yönünde. Üstelik Substrate, geliştiricilerin konsensüs algoritmaları veya Polkadot ekosistemi hakkında hiçbir varsayım olmaksızın blok zincirler oluşturmasına olanak sağlamak için her zaman zincirden bağımsız bir şekilde oluşturulmuştur. Madara için Substrate'ı seçmemizin nedeni de budur. Ancak bununla birlikte Cosmos'taki deneyimim sınırlı ve bu konuda daha deneyimli kişilerden daha fazla bilgi almayı çok isterim! Ayrıca iki ağın karşılaştırması hakkında daha fazla bilgiyi buradabulabilirsiniz.