Farklı ZK-EVM Türleri
2022 Aug 04
See all posts
Farklı ZK-EVM Türleri
PSE, Polygon Hermez, Zksync, Scroll, Matter Labs ve Starkware
ekiplerine münazara ve inceleme, çeviri için eren'e özel
teşekkürler.
Son zamanlarda birçok "ZK-EVM" projesinin çarpıcı duyurular yaptığı
görüldü. Polygon
ZK-EVM projesini açık kaynaklı hale getirdi, ZKSync,
ZKSync 2.0 için planlarını yayınladı ve görece yeni bir oyuncu olan Scroll,
ZK-EVM'lerini duyurdu. Ayrıca Privacy
and Scaling Explorations ekibinin, Nicolas
Liochon ve arkadaşlarının ekibinin, EVM'den Starkware'ın ZK-dostu
dili Cairo'ya yönelik bir alfa
derleyici ve kaçırdığım en az birkaç kişinin daha kesinlikle devam
eden çabaları da var.
Tüm bu projelerin temel hedefi aynı: ZK-SNARK teknolojisini
kullanarak Ethereum-benzeri işlemlerin kriptografik yürütülme
kanıtlarını oluşturmak, bu kanıtları Ethereum zincirini doğrulamayı çok
daha kolay hale getirmek veya Ethereum'un sunduğuna (neredeyse) eşdeğer
ancak çok daha ölçeklenebilir olan ZK-rollup'lar inşa etmek için
kullanmaktır. Ancak bu projeler arasında ince farklılıklar bulunmakta ve
bunlar pratiklik ile hız arasındaki değiş tokuşları nasıl yaptıklarını
belirlemektedir. Bu yazı, EVM denkliğinin farklı "tiplerinin" bir
taksonomisini ve her bir tipe ulaşmaya çalışmanın fayda ve
maliyetlerinin neler olduğunu açıklamaya çalışacaktır.
Genel Bakış (grafik
biçiminde)
Tip 1 (tamamen
Ethereum-dengi)
Tip 1 ZK-EVM'ler, tamamen ve ödün vermeden Ethereum-dengi olmaya
çalışırlar. Kanıtları oluşturmayı kolaylaştırmak için Ethereum
sisteminin herhangi bir parçasını değiştirmezler. Ne kadar çevresel
olursa olsun hash'leri, state tree'leri, transaction tree'leri,
ön-derlemeleri veya başka herhangi bir konsensüse dahil mantığı
değiştirmezler.
Avantaj:
mükemmel uyumluluk
Hedef, Ethereum bloklarını bugünkü haliyle doğrulayabilmektir - veya
en azından yürütme-katmanı
tarafını doğrulayabilmektir (bu nedenle, beacon zinciri konsensüs
mantığı dahil değil, ancak tüm işlem yürütme ve akıllı kontrat ve hesap
mantığı dahil).
Tip 1 ZK-EVM'ler, Ethereum katman 1'inin daha ölçeklenebilir hale
gelmesini sağlamak için sonunda ihtiyacımız olan şeydir. Uzun vadede,
Tip 2 veya Tip 3 ZK-EVM'lerde test edilmiş Ethereum'a yapılan
modifikasyonlar, Ethereum'a uygun bir şekilde tanıtılabilir, ancak böyle
bir yeniden tasarlama kendi komplekslikleri ile gelir.
Tip 1 ZK-EVM'ler aynı zamanda rollup'lar için idealdir, çünkü
rollup'ların birçok altyapıyı tekrar kullanmalarına izin verirler.
Örneğin, Ethereum execution istemcileri, rollup blokları oluşturmak ve
işlemek için olduğu gibi kullanılabilir (veya en azından para
çekme işlemleri implement edildiğinde ve bu işlevsellik, rollup'a
ETH yatırılmasını desteklemek için tekrar kullanılabilir), bu nedenle
blok gezginleri, blok üretimi vb. gibi araçlar çok kolay bir şekilde
tekrar kullanılabilir.
Dezavantaj: kanıtlayıcı zamanı
Ethereum, başlangıçta ZK-dostu olacak şekilde tasarlanmamıştı, bu
nedenle Ethereum protokolünün, ZK-kanıtlama için büyük miktarda
hesaplama gerektiren birçok parçası var. Tip 1, Ethereum'u tam
olarak kopyalamayı amaçlıyor, o yüzden bu verimsizlikleri
hafifletebilecek bir yola sahip değil. Şu anda, Ethereum bloklarının
kanıtlarının üretilmesi saatler sürüyor. Bu durum, kanıtlayıcıyı büyük
ölçüde paralelleştirmeye yönelik zekice mühendislikle veya uzun vadede
ZK-SNARK ASIC'ler ile hafifletilebilir.
Bunu kim inşa
ediyor?
ZK-EVM
Topluluk Sürümü (Privacy and
Scaling Explorations, Scroll ekibi,
Taiko ve diğerlerinin topluluk
katkılarıyla başlatılan) Tier 1 bir ZK-EVM'dir.
Tip 2 (tamamen EVM-dengi)
Tip 2 ZK-EVM'ler tam anlamıyla EVM-dengi olmaya çalışır, ancak tam
olarak Ethereum-dengi değildirler. Yani, "içeriden" bakıldığında tam
olarak Ethereum gibi görünürler, ancak dışarıda bazı farklılıklar,
özellikle blok yapısı ve state
tree gibi veri yapılarında bulunur.
Hedef, mevcut uygulamalarla tamamen uyumlu olmak, ancak geliştirmeyi
kolaylaştırmak ve kanıt oluşturmayı daha hızlı hale getirmek için
Ethereum'da bazı küçük değişiklikler yapmaktır.
Avantaj: VM seviyesinde mükemmel
denklik
Tip 2 ZK-EVM'ler, Ethereum durumu gibi verileri tutan veri yapılarına
değişiklikler yaparlar. Neyse ki, bunlar EVM'in doğrudan erişemeyeceği
yapılar olduğundan, Ethereum üzerinde çalışan uygulamalar neredeyse her
zaman Tip 2 ZK-EVM rollup'larında da çalışmaya devam eder. Ethereum
execution istemcilerini olduğu gibi kullanamazsınız, ancak bazı
değişikliklerle kullanabilirsiniz ve hala EVM hata ayıklama araçlarını
ve çoğu diğer geliştirici altyapısını kullanabilirsiniz.
Az sayıda istisna vardır. Örneğin geçmiş işlemler, makbuzlar veya
durum hakkındaki iddiaları doğrulamak için geçmiş Ethereum
bloklarının Merkle kanıtlarını doğrulayan uygulamalarda bir
uyumsuzluk ortaya çıkar (örn. köprüler bazen bunu yapar). Keccak'ı
farklı bir hash fonksiyonuyla değiştiren bir ZK-EVM, bu kanıtları
bozabilir. Bununla birlikte, zaten genellikle uygulamaların bu şekilde
inşa edilmesini önermem, çünkü gelecek Ethereum değişiklikleri (örn. Verkle
ağaçları) bu tür uygulamaları Ethereum'un kendisinin üzerinde bile
bozacaktır. Daha iyi bir alternatif, Ethereum'un geleceğe-hazır
geçmiş erişim ön-derlemelerini eklemesidir.
Dezavantaj: Gelişmiş ancak hala yavaş kanıtlayıcı
süresi
Tip 2 ZK-EVM'ler, Ethereum yığınının gereksiz derecede karmaşık ve ZK
dostu olmayan kriptografiye dayanan kısımlarını kaldırarak Tip 1'den
daha hızlı kanıtlayıcı süreleri sağlar. Özellikle Ethereum'un Keccak'ını
ve RLP tabanlı Merkle Patricia ağacını ve belki de blok ve makbuz
yapılarını değiştirebilirler. Tip 2 ZK-EVM'ler, farklı bir hash
fonksiyonu kullanabilirler, örneğin Poseidon. Başka bir doğal
değişiklik, state tree'yi kod hash'ini ve keccak'ı depolayacak şekilde
değiştirerek EXTCODEHASH
ve EXTCODECOPY
opcode'larını işlemek için hash doğrulama ihtiyacını ortadan
kaldırmaktır.
Bu değişiklikler kanıtlayıcı sürelerini önemli ölçüde iyileştirir
ancak her sorunu çözmez. EVM'i olduğu gibi kanıtlama zorunluluğundan
kaynaklanan yavaşlık, EVM'in doğasında bulunan tüm verimsizlikler ve ZK
dostu olmama durumuyla birlikte hala devam ediyor. Bunun basit bir
örneği bellektir: Bir MLOAD
, "hizalanmamış" parçalar
(başlangıç ve bitişin 32'nin katı olmadığı) dahil olmak üzere herhangi
bir 32 byte'ı okuyabildiğinden, bir MLOAD basitçe bir parçayı okuyormuş
gibi yorumlanamaz; bunun yerine, sonucu birleştirmek için iki ardışık
parçanın okunmasını ve bit işlemleri gerçekleştirilmesini
gerektirebilir.
Bunu kim
inşa ediyor?
Scroll'un
ZK-EVM projesi, Polygon
Hermez gibi Tip 2 ZK-EVM'e doğru ilerliyor. Bununla birlikte, her
iki proje de henüz tam olarak oraya ulaşmadı; özellikle daha karmaşık
ön-derlemelerin çoğu henüz implement edilmedi. Dolayısıyla şu anda her
iki projenin de Tip
3. olarak değerlendirilmesi daha iyi.
Tip 2.5 (EVM-dengi, gaz
ücretleri hariç)
En kötü durumda kanıt sürelerini önemli
ölçüde iyileştirmenin bir yolu, EVM'deki ZK-kanıtlaması çok zor
olan belirli işlemlerin gaz ücretlerini büyük ölçüde artırmaktır. Bu,
ön-derlemeleri, KECCAK opcode'unu ve muhtemelen belirli kontrat çağırma
kalıplarını veya belleğe/depolamaya erişmeyi veya geri döndürmeyi
(revert) içerebilir.
Gaz ücretlerini değiştirmek, geliştirici
araçlarının uyumluluğunu azaltabilir ve birkaç uygulamayı
bozabilir, ancak genellikle "derin" EVM değişikliklerinden daha
az riskli olarak kabul edilir. Geliştiriciler, bir işlemde bir bloğa
sığmayacak kadar fazla gaz gerektirmemeye ve hard-coded gaz
miktarlarıyla çağrılar yapmamaya dikkat etmelidir (bu zaten
geliştiriciler için uzun süredir standart bir öneridir).
Kaynak sınırlamalarını yönetmenin alternatif bir yolu, her
operasyonun kaç kez çağrılabileceği konusunda katı sınırlar
belirlemektir. Bunun devrelerde uygulanması daha kolaydır, ancak EVM
güvenlik varsayımlarıyla daha az uyumludur. Ben buna Tip 2.5 yerine Tip
3 yaklaşımı derim.
Tip 3 (neredeyse EVM-dengi)
Tip 3 ZK-EVM'ler neredeyse EVM-dengidir, ancak kanıt
sürelerini daha da iyileştirmek ve EVM'i geliştirmeyi kolaylaştırmak
için tam denklikten ödün verirler.
Avantaj: Daha kolay inşa edilir ve daha hızlı
kanıtlayıcı süreleri sunar.
Tip 3 ZK-EVM'ler, ZK-EVM implementasyonunda uygulanması son derece
zor olan birkaç özelliği kaldırabilir. Genellikle ön-derlemeler
bu listede en üsttedir. Ek olarak, Tip 3 ZK-EVM'lerin bazen kontrat
kodunu, belleği veya yığını nasıl ele aldıkları konusunda da küçük
farklılıkları vardır.
Dezavantaj: Daha fazla uyumsuzluk.
Tip 3 ZK-EVM'in hedefi, çoğu uygulama ile uyumlu olup geri kalanları
için sadece minimal yeniden yazım gerektirmektir. Bununla beraber, Tip 3
ZK-EVM'in kaldırdığı ön-derlemeleri kullanan veya VM'lerin farklı
işlediği ince ayrıntılardaki bağımlılıklardan dolayı yeniden yazılması
gereken bazı uygulamalar olacaktır.
Bunu kim
inşa ediyor?
Scroll ve Polygon'un her ikisi de mevcut formlarıyla Tip 3'tür, ancak
zamanla uyumluluğu artırmaları bekleniyor. Polygon, zkASM
denen kendi dahili dilini ZK-doğruladıkları ve zkASM implementasyonunu
kullanarak ZK-EVM kodunu yorumladıkları benzersiz bir tasarıma sahiptir.
Bu implementasyon detayına rağmen yine de buna hakiki Tip 3 ZK-EVM
diyeceğim; çünkü hala EVM kodunu doğrulayabiliyor, sadece bunu yapmak
için yalnızca farklı bir dahili mantık kullanır.
Bugün, hiçbir ZK-EVM ekibi Tip 3 olmak istemez; Tip 3,
ön-derlemelerin eklenmesi gibi karmaşık işler bitene ve proje Tip 2.5'a
geçinceye kadar sadece bir geçiş aşamasıdır. Ancak gelecekte Tip 1 veya
Tip 2 ZK-EVM'ler, düşük kanıtlayıcı süreleri ve gaz ücretleri ile
geliştiriciler için işlevsellik sağlayan yeni ZK-SNARK dostu
ön-derlemeler ekleyerek gönüllü olarak Tip 3 ZK-EVM'lere
dönüşebilirler.
Tip 4 (yüksek-seviye-dil
denkliği)
Bir Tip 4 sistemi, yüksek seviyeli bir dilde (örn. Solidity, Vyper veya her
ikisinin de derlediği bir ara dilde) yazılmış akıllı kontrat kaynak
kodunu alarak ve bunu açıkça ZK-SNARK dostu olacak şekilde tasarlanmış
bir dilde derleyerek çalışır.
Avantaj: Çok hızlı kanıtlayıcı
süreleri
Her EVM yürütülme işleminin tüm farklı bölümlerini ZK-kanıtlamayarak
ve doğrudan yüksek seviye koddan başlayarak önlenebilecek çok
sayıda ek yük vardır.
Bu avantajı bu yazımda sadece bir cümleyle açıklıyorum (aşağıdaki,
uyumlulukla ilgili dezavantajlar için olan büyük listeyle
karşılaştırıldığında), ancak bu bir değer yargısı olarak
yorumlanmamalıdır! Yüksek seviyeli dillerden doğrudan derlemek gerçekten
maliyetleri büyük ölçüde azaltabilir ve bir kanıtlayıcı olmayı daha
kolay hale getirerek merkeziyetsizleşmeye yardımcı olabilir.
Dezavantaj: Daha fazla uyumsuzluk
Vyper veya Solidity ile yazılmış "normal" bir uygulama derlenebilir
ve "sadece çalışır", ancak pek çok uygulamanın "normal" olmadığı bazı
önemli yollar vardır:
- Kontratlar Tip 4 bir sistemde EVM'de olduğu gibi aynı
adreslere sahip olmayabilir, çünkü CREATE2 kontrat adresleri
tamı tamına bytecode'a bağlıdır. Bu, henüz deploy edilmemiş
"Karşıolgusal kontratlara", ERC-4337 cüzdanlara, EIP-2470 tekillerine
ve birçok diğer uygulamaya dayanan uygulamaları bozar.
- Elle yazılmış EVM bytecode kullanmak daha zordur.
Birçok uygulama, verimlilik için bazı bölümlerinde elle yazılmış EVM
bytecode kullanır. Tip 4 sistemleri bunu desteklemeyebilir, ancak bu
kullanım durumlarını karşılamak için tam anlamıyla bir Tip 3 ZK-EVM
olmanın çabasına girmeden sınırlı EVM bytecode desteği uygulamanın
yolları vardır.
- Birçok hata ayıklama altyapısı taşınamaz, çünkü bu
tür altyapılar EVM bytecode'u üzerinden çalışır. Bununla birlikte, bu
dezavantaj "geleneksel" yüksek seviyeli veya ara diller (örn. LLVM)
tarafından sunulan hata ayıklama altyapısına daha fazla erişim
ile hafifletilir.
Geliştiriciler bu konuları akıllarında bulundurmalıdır.
Bunu kim
inşa ediyor?
ZKSync
bir Tip 4 sistemidir ancak zamanla EVM bytecode'u için uyumluluk
ekleyebilir. Nethermind'ın Warp projesi,
Solidity'den Starkware'in Cairo'suna derleyici inşa ediyor ve bu,
StarkNet'i fiili bir Tip 4 sistemine dönüştürecektir.
The future of ZK-EVM types
Tipler diğer tiplerden açıkça "daha iyi" veya "daha kötü" değildir.
Aksine, bunlar takas alanındaki farklı noktalardır: daha düşük-numaralı
tipler mevcut altyapı ile daha uyumludur, ancak daha yavaştır ve daha
yüksek-numaralı tipler mevcut altyapı ile daha az uyumludur, ancak daha
hızlıdır. Genel olarak bu tiplerin tamamının keşfedilmesi alan açısından
sağlıklıdır.
Ek olarak, ZK-EVM projeleri kolaylıkla yüksek-numaralı tiplerden
başlayabilir ve zamanla daha düşük-numaralı tiplere atlayabilir (veya
tam tersi). Örneğin:
- Bir ZK-EVM, özellikle ZK-kanıtlanması zor olan bazı özellikleri
dahil etmemeye karar vererek Tip 3 olarak başlayabilir. Daha sonra
zamanla bu özellikleri ekleyip Tip 2'ye geçebilirler.
- Bir ZK-EVM, Tip 2 olarak başlayabilir ve daha sonra, tamamen
Ethereum'a uyumluluk modu ile veya daha hızlı kanıtlanabilen
değiştirilmiş bir state tree ile çalışma olanağı sunarak hibrit bir Tip
2 / Tip 1 ZK-EVM haline gelebilir. Scroll bu yönde ilerlemeyi
düşünüyor.
- Tip 4 olarak başlayan sistem, daha sonra EVM kodunu işleme
yeteneğinin eklenmesiyle zamanla Tip 3 haline gelebilir (yine de
geliştiriciler ücretleri ve kanıt sürelerini azaltmak için yüksek
seviyeli dillerle doğrudan derlemeye yönelecektir).
- Tip 2 veya Tip 3 ZK-EVM, Ethereum'un daha ZK dostu olma çabasıyla
modifikasyonlarını benimsemesi durumunda Tip 1 ZK-EVM haline
gelebilir.
- Bir Tip 1 veya Tip 2 ZK-EVM, oldukça ZK-SNARK dostu bir dilde kodu
doğrulamak için bir ön-derleme ekleyerek Tip 3 ZK-EVM haline gelebilir.
Bu, geliştiricilere Ethereum uyumluluğu ve hız arasında bir seçenek
sunar. Bu Tip 3 olacaktır çünkü mükemmel EVM-denkliğini bozar, ancak
pratik amaçlar ve niyetler için Tip 1 ve 2'nin birçok avantajına sahip
olur. Ana dezavantaj, bazı geliştirici araçlarının ZK-EVM'in özel
ön-derlemelerini anlamayabileceğidir, ancak bu sorun düzeltilebilir:
geliştirici araçları, ön-derlemenin EVM kodu dengi bir implementasyonunu
içeren bir yapılandırma formatını destekleyerek evrensel ön-derleme
desteği ekleyebilir.
Şahsen, benim umudum ZK-EVM'lerdeki iyileştirmeler ve Ethereum'un
kendisini daha ZK-SNARK dostu hale getirecek iyileştirmelerin bir araya
gelmesiyle her şeyin zamanla Tip 1 haline gelmesidir. Böyle bir
gelecekte, hem ZK rollup'ları hem de Ethereum zincirinin kendisini
doğrulamak için kullanılabilecek birden fazla ZK-EVM implementasyonuna
sahip olurduk. Teorik olarak Ethereum'un L1 kullanımı için tek bir
ZK-EVM implementasyonu üzerinde standartlaşmasına gerek yoktur; farklı
istemciler farklı kanıtlar kullanabilir, bu nedenle kod fazlalığından
yararlanmaya devam edelim.
Ancak böyle bir geleceğe ulaşmamız oldukça zaman alacak. Bu esnada,
Ethereum ve Ethereum tabanlı ZK-rollup'larını ölçeklendirmenin farklı
yollarında birçok inovasyon göreceğiz.
Farklı ZK-EVM Türleri
2022 Aug 04 See all postsPSE, Polygon Hermez, Zksync, Scroll, Matter Labs ve Starkware ekiplerine münazara ve inceleme, çeviri için eren'e özel teşekkürler.
Son zamanlarda birçok "ZK-EVM" projesinin çarpıcı duyurular yaptığı görüldü. Polygon ZK-EVM projesini açık kaynaklı hale getirdi, ZKSync, ZKSync 2.0 için planlarını yayınladı ve görece yeni bir oyuncu olan Scroll, ZK-EVM'lerini duyurdu. Ayrıca Privacy and Scaling Explorations ekibinin, Nicolas Liochon ve arkadaşlarının ekibinin, EVM'den Starkware'ın ZK-dostu dili Cairo'ya yönelik bir alfa derleyici ve kaçırdığım en az birkaç kişinin daha kesinlikle devam eden çabaları da var.
Tüm bu projelerin temel hedefi aynı: ZK-SNARK teknolojisini kullanarak Ethereum-benzeri işlemlerin kriptografik yürütülme kanıtlarını oluşturmak, bu kanıtları Ethereum zincirini doğrulamayı çok daha kolay hale getirmek veya Ethereum'un sunduğuna (neredeyse) eşdeğer ancak çok daha ölçeklenebilir olan ZK-rollup'lar inşa etmek için kullanmaktır. Ancak bu projeler arasında ince farklılıklar bulunmakta ve bunlar pratiklik ile hız arasındaki değiş tokuşları nasıl yaptıklarını belirlemektedir. Bu yazı, EVM denkliğinin farklı "tiplerinin" bir taksonomisini ve her bir tipe ulaşmaya çalışmanın fayda ve maliyetlerinin neler olduğunu açıklamaya çalışacaktır.
Genel Bakış (grafik biçiminde)
Tip 1 (tamamen Ethereum-dengi)
Tip 1 ZK-EVM'ler, tamamen ve ödün vermeden Ethereum-dengi olmaya çalışırlar. Kanıtları oluşturmayı kolaylaştırmak için Ethereum sisteminin herhangi bir parçasını değiştirmezler. Ne kadar çevresel olursa olsun hash'leri, state tree'leri, transaction tree'leri, ön-derlemeleri veya başka herhangi bir konsensüse dahil mantığı değiştirmezler.
Avantaj: mükemmel uyumluluk
Hedef, Ethereum bloklarını bugünkü haliyle doğrulayabilmektir - veya en azından yürütme-katmanı tarafını doğrulayabilmektir (bu nedenle, beacon zinciri konsensüs mantığı dahil değil, ancak tüm işlem yürütme ve akıllı kontrat ve hesap mantığı dahil).
Tip 1 ZK-EVM'ler, Ethereum katman 1'inin daha ölçeklenebilir hale gelmesini sağlamak için sonunda ihtiyacımız olan şeydir. Uzun vadede, Tip 2 veya Tip 3 ZK-EVM'lerde test edilmiş Ethereum'a yapılan modifikasyonlar, Ethereum'a uygun bir şekilde tanıtılabilir, ancak böyle bir yeniden tasarlama kendi komplekslikleri ile gelir.
Tip 1 ZK-EVM'ler aynı zamanda rollup'lar için idealdir, çünkü rollup'ların birçok altyapıyı tekrar kullanmalarına izin verirler. Örneğin, Ethereum execution istemcileri, rollup blokları oluşturmak ve işlemek için olduğu gibi kullanılabilir (veya en azından para çekme işlemleri implement edildiğinde ve bu işlevsellik, rollup'a ETH yatırılmasını desteklemek için tekrar kullanılabilir), bu nedenle blok gezginleri, blok üretimi vb. gibi araçlar çok kolay bir şekilde tekrar kullanılabilir.
Dezavantaj: kanıtlayıcı zamanı
Ethereum, başlangıçta ZK-dostu olacak şekilde tasarlanmamıştı, bu nedenle Ethereum protokolünün, ZK-kanıtlama için büyük miktarda hesaplama gerektiren birçok parçası var. Tip 1, Ethereum'u tam olarak kopyalamayı amaçlıyor, o yüzden bu verimsizlikleri hafifletebilecek bir yola sahip değil. Şu anda, Ethereum bloklarının kanıtlarının üretilmesi saatler sürüyor. Bu durum, kanıtlayıcıyı büyük ölçüde paralelleştirmeye yönelik zekice mühendislikle veya uzun vadede ZK-SNARK ASIC'ler ile hafifletilebilir.
Bunu kim inşa ediyor?
ZK-EVM Topluluk Sürümü (Privacy and Scaling Explorations, Scroll ekibi, Taiko ve diğerlerinin topluluk katkılarıyla başlatılan) Tier 1 bir ZK-EVM'dir.
Tip 2 (tamamen EVM-dengi)
Tip 2 ZK-EVM'ler tam anlamıyla EVM-dengi olmaya çalışır, ancak tam olarak Ethereum-dengi değildirler. Yani, "içeriden" bakıldığında tam olarak Ethereum gibi görünürler, ancak dışarıda bazı farklılıklar, özellikle blok yapısı ve state tree gibi veri yapılarında bulunur.
Hedef, mevcut uygulamalarla tamamen uyumlu olmak, ancak geliştirmeyi kolaylaştırmak ve kanıt oluşturmayı daha hızlı hale getirmek için Ethereum'da bazı küçük değişiklikler yapmaktır.
Avantaj: VM seviyesinde mükemmel denklik
Tip 2 ZK-EVM'ler, Ethereum durumu gibi verileri tutan veri yapılarına değişiklikler yaparlar. Neyse ki, bunlar EVM'in doğrudan erişemeyeceği yapılar olduğundan, Ethereum üzerinde çalışan uygulamalar neredeyse her zaman Tip 2 ZK-EVM rollup'larında da çalışmaya devam eder. Ethereum execution istemcilerini olduğu gibi kullanamazsınız, ancak bazı değişikliklerle kullanabilirsiniz ve hala EVM hata ayıklama araçlarını ve çoğu diğer geliştirici altyapısını kullanabilirsiniz.
Az sayıda istisna vardır. Örneğin geçmiş işlemler, makbuzlar veya durum hakkındaki iddiaları doğrulamak için geçmiş Ethereum bloklarının Merkle kanıtlarını doğrulayan uygulamalarda bir uyumsuzluk ortaya çıkar (örn. köprüler bazen bunu yapar). Keccak'ı farklı bir hash fonksiyonuyla değiştiren bir ZK-EVM, bu kanıtları bozabilir. Bununla birlikte, zaten genellikle uygulamaların bu şekilde inşa edilmesini önermem, çünkü gelecek Ethereum değişiklikleri (örn. Verkle ağaçları) bu tür uygulamaları Ethereum'un kendisinin üzerinde bile bozacaktır. Daha iyi bir alternatif, Ethereum'un geleceğe-hazır geçmiş erişim ön-derlemelerini eklemesidir.
Dezavantaj: Gelişmiş ancak hala yavaş kanıtlayıcı süresi
Tip 2 ZK-EVM'ler, Ethereum yığınının gereksiz derecede karmaşık ve ZK dostu olmayan kriptografiye dayanan kısımlarını kaldırarak Tip 1'den daha hızlı kanıtlayıcı süreleri sağlar. Özellikle Ethereum'un Keccak'ını ve RLP tabanlı Merkle Patricia ağacını ve belki de blok ve makbuz yapılarını değiştirebilirler. Tip 2 ZK-EVM'ler, farklı bir hash fonksiyonu kullanabilirler, örneğin Poseidon. Başka bir doğal değişiklik, state tree'yi kod hash'ini ve keccak'ı depolayacak şekilde değiştirerek
EXTCODEHASH
veEXTCODECOPY
opcode'larını işlemek için hash doğrulama ihtiyacını ortadan kaldırmaktır.Bu değişiklikler kanıtlayıcı sürelerini önemli ölçüde iyileştirir ancak her sorunu çözmez. EVM'i olduğu gibi kanıtlama zorunluluğundan kaynaklanan yavaşlık, EVM'in doğasında bulunan tüm verimsizlikler ve ZK dostu olmama durumuyla birlikte hala devam ediyor. Bunun basit bir örneği bellektir: Bir
MLOAD
, "hizalanmamış" parçalar (başlangıç ve bitişin 32'nin katı olmadığı) dahil olmak üzere herhangi bir 32 byte'ı okuyabildiğinden, bir MLOAD basitçe bir parçayı okuyormuş gibi yorumlanamaz; bunun yerine, sonucu birleştirmek için iki ardışık parçanın okunmasını ve bit işlemleri gerçekleştirilmesini gerektirebilir.Bunu kim inşa ediyor?
Scroll'un ZK-EVM projesi, Polygon Hermez gibi Tip 2 ZK-EVM'e doğru ilerliyor. Bununla birlikte, her iki proje de henüz tam olarak oraya ulaşmadı; özellikle daha karmaşık ön-derlemelerin çoğu henüz implement edilmedi. Dolayısıyla şu anda her iki projenin de Tip 3. olarak değerlendirilmesi daha iyi.
Tip 2.5 (EVM-dengi, gaz ücretleri hariç)
En kötü durumda kanıt sürelerini önemli ölçüde iyileştirmenin bir yolu, EVM'deki ZK-kanıtlaması çok zor olan belirli işlemlerin gaz ücretlerini büyük ölçüde artırmaktır. Bu, ön-derlemeleri, KECCAK opcode'unu ve muhtemelen belirli kontrat çağırma kalıplarını veya belleğe/depolamaya erişmeyi veya geri döndürmeyi (revert) içerebilir.
Gaz ücretlerini değiştirmek, geliştirici araçlarının uyumluluğunu azaltabilir ve birkaç uygulamayı bozabilir, ancak genellikle "derin" EVM değişikliklerinden daha az riskli olarak kabul edilir. Geliştiriciler, bir işlemde bir bloğa sığmayacak kadar fazla gaz gerektirmemeye ve hard-coded gaz miktarlarıyla çağrılar yapmamaya dikkat etmelidir (bu zaten geliştiriciler için uzun süredir standart bir öneridir).
Kaynak sınırlamalarını yönetmenin alternatif bir yolu, her operasyonun kaç kez çağrılabileceği konusunda katı sınırlar belirlemektir. Bunun devrelerde uygulanması daha kolaydır, ancak EVM güvenlik varsayımlarıyla daha az uyumludur. Ben buna Tip 2.5 yerine Tip 3 yaklaşımı derim.
Tip 3 (neredeyse EVM-dengi)
Tip 3 ZK-EVM'ler neredeyse EVM-dengidir, ancak kanıt sürelerini daha da iyileştirmek ve EVM'i geliştirmeyi kolaylaştırmak için tam denklikten ödün verirler.
Avantaj: Daha kolay inşa edilir ve daha hızlı kanıtlayıcı süreleri sunar.
Tip 3 ZK-EVM'ler, ZK-EVM implementasyonunda uygulanması son derece zor olan birkaç özelliği kaldırabilir. Genellikle ön-derlemeler bu listede en üsttedir. Ek olarak, Tip 3 ZK-EVM'lerin bazen kontrat kodunu, belleği veya yığını nasıl ele aldıkları konusunda da küçük farklılıkları vardır.
Dezavantaj: Daha fazla uyumsuzluk.
Tip 3 ZK-EVM'in hedefi, çoğu uygulama ile uyumlu olup geri kalanları için sadece minimal yeniden yazım gerektirmektir. Bununla beraber, Tip 3 ZK-EVM'in kaldırdığı ön-derlemeleri kullanan veya VM'lerin farklı işlediği ince ayrıntılardaki bağımlılıklardan dolayı yeniden yazılması gereken bazı uygulamalar olacaktır.
Bunu kim inşa ediyor?
Scroll ve Polygon'un her ikisi de mevcut formlarıyla Tip 3'tür, ancak zamanla uyumluluğu artırmaları bekleniyor. Polygon, zkASM denen kendi dahili dilini ZK-doğruladıkları ve zkASM implementasyonunu kullanarak ZK-EVM kodunu yorumladıkları benzersiz bir tasarıma sahiptir. Bu implementasyon detayına rağmen yine de buna hakiki Tip 3 ZK-EVM diyeceğim; çünkü hala EVM kodunu doğrulayabiliyor, sadece bunu yapmak için yalnızca farklı bir dahili mantık kullanır.
Bugün, hiçbir ZK-EVM ekibi Tip 3 olmak istemez; Tip 3, ön-derlemelerin eklenmesi gibi karmaşık işler bitene ve proje Tip 2.5'a geçinceye kadar sadece bir geçiş aşamasıdır. Ancak gelecekte Tip 1 veya Tip 2 ZK-EVM'ler, düşük kanıtlayıcı süreleri ve gaz ücretleri ile geliştiriciler için işlevsellik sağlayan yeni ZK-SNARK dostu ön-derlemeler ekleyerek gönüllü olarak Tip 3 ZK-EVM'lere dönüşebilirler.
Tip 4 (yüksek-seviye-dil denkliği)
Bir Tip 4 sistemi, yüksek seviyeli bir dilde (örn. Solidity, Vyper veya her ikisinin de derlediği bir ara dilde) yazılmış akıllı kontrat kaynak kodunu alarak ve bunu açıkça ZK-SNARK dostu olacak şekilde tasarlanmış bir dilde derleyerek çalışır.
Avantaj: Çok hızlı kanıtlayıcı süreleri
Her EVM yürütülme işleminin tüm farklı bölümlerini ZK-kanıtlamayarak ve doğrudan yüksek seviye koddan başlayarak önlenebilecek çok sayıda ek yük vardır.
Bu avantajı bu yazımda sadece bir cümleyle açıklıyorum (aşağıdaki, uyumlulukla ilgili dezavantajlar için olan büyük listeyle karşılaştırıldığında), ancak bu bir değer yargısı olarak yorumlanmamalıdır! Yüksek seviyeli dillerden doğrudan derlemek gerçekten maliyetleri büyük ölçüde azaltabilir ve bir kanıtlayıcı olmayı daha kolay hale getirerek merkeziyetsizleşmeye yardımcı olabilir.
Dezavantaj: Daha fazla uyumsuzluk
Vyper veya Solidity ile yazılmış "normal" bir uygulama derlenebilir ve "sadece çalışır", ancak pek çok uygulamanın "normal" olmadığı bazı önemli yollar vardır:
Geliştiriciler bu konuları akıllarında bulundurmalıdır.
Bunu kim inşa ediyor?
ZKSync bir Tip 4 sistemidir ancak zamanla EVM bytecode'u için uyumluluk ekleyebilir. Nethermind'ın Warp projesi, Solidity'den Starkware'in Cairo'suna derleyici inşa ediyor ve bu, StarkNet'i fiili bir Tip 4 sistemine dönüştürecektir.
The future of ZK-EVM types
Tipler diğer tiplerden açıkça "daha iyi" veya "daha kötü" değildir. Aksine, bunlar takas alanındaki farklı noktalardır: daha düşük-numaralı tipler mevcut altyapı ile daha uyumludur, ancak daha yavaştır ve daha yüksek-numaralı tipler mevcut altyapı ile daha az uyumludur, ancak daha hızlıdır. Genel olarak bu tiplerin tamamının keşfedilmesi alan açısından sağlıklıdır.
Ek olarak, ZK-EVM projeleri kolaylıkla yüksek-numaralı tiplerden başlayabilir ve zamanla daha düşük-numaralı tiplere atlayabilir (veya tam tersi). Örneğin:
Şahsen, benim umudum ZK-EVM'lerdeki iyileştirmeler ve Ethereum'un kendisini daha ZK-SNARK dostu hale getirecek iyileştirmelerin bir araya gelmesiyle her şeyin zamanla Tip 1 haline gelmesidir. Böyle bir gelecekte, hem ZK rollup'ları hem de Ethereum zincirinin kendisini doğrulamak için kullanılabilecek birden fazla ZK-EVM implementasyonuna sahip olurduk. Teorik olarak Ethereum'un L1 kullanımı için tek bir ZK-EVM implementasyonu üzerinde standartlaşmasına gerek yoktur; farklı istemciler farklı kanıtlar kullanabilir, bu nedenle kod fazlalığından yararlanmaya devam edelim.
Ancak böyle bir geleceğe ulaşmamız oldukça zaman alacak. Bu esnada, Ethereum ve Ethereum tabanlı ZK-rollup'larını ölçeklendirmenin farklı yollarında birçok inovasyon göreceğiz.