Sanal makine, programlar için bir yürütme ortamı sağlayan yazılım simülasyonlu bir bilgisayar sistemidir. Programların kontrollü ve uyumlu bir ortamda çalışabilmesi için çeşitli donanım aygıtlarını taklit edebilir. Ethereum Sanal Makinesi (EVM), Ethereum akıllı sözleşmelerini yürütmek için kullanılan yığın tabanlı bir sanal makinedir.
zkEVM, sıfır bilgi kanıtı/geçerlilik kanıtı teknolojisini entegre eden bir EVM'dir. EVM'nin yürütülmesinin, tüm doğrulayıcıların EVM'yi yeniden yürütmesini gerektirmeden sıfır bilgi kanıtları kullanılarak doğrulanmasına olanak tanır. Piyasada her biri kendi yaklaşımına ve tasarımına sahip çeşitli zkEVM ürünleri bulunmaktadır.
zkEVM'nin nedeni, Katman 2'de akıllı sözleşme yürütmeyi destekleyen bir sanal makineye ihtiyaç duyulmasıdır. Ek olarak, bazı projeler, EVM'nin geniş kullanıcı ekosisteminden yararlanmak ve sıfır bilgi kanıtlarına karşı daha kolay bir komut seti tasarlamak için zkEVM'yi kullanmayı tercih ediyor.
Kakarot, Starknet üzerinde Kahire dili kullanılarak uygulanan zkEVM'dir. EVM'nin yığınını, hafızasını, yürütmesini ve diğer yönlerini Kahire akıllı sözleşmeleri biçiminde simüle eder. Kakarot, Kahire dili henüz deneysel olduğundan, Starknet hesap sistemiyle uyumluluk, maliyet optimizasyonu ve kararlılık gibi zorluklarla karşılaştı.
Warp, Solidity kodundan Kahire koduna çevirici olup, üst düzey dil seviyesinde uyumluluk sağlar. Kakarot ise EVM işlem kodlarını ve ön derlemeyi uygulayarak EVM düzeyinde uyumluluk sağlar.
Sanal makine nedir?
Sanal makinenin ne olduğunu açıklığa kavuşturmak için öncelikle mevcut ana akım von Neumann mimarisi altındaki bilgisayar yürütme sürecinden bahsetmeliyiz. Bir bilgisayarda çalışan çeşitli programlar genellikle üst düzey dil katmanları tarafından dönüştürülür ve son olarak yürütme için makine tarafından anlaşılabilen makine kodları oluşturur. Üst düzey diller, makine koduna dönüştürme yöntemine göre kabaca derlenmiş diller ve yorumlanan diller olarak ikiye ayrılabilir.
Derlenmiş bir dil, kod yazıldıktan sonra, üst düzey dil kodunu makine koduna dönüştürmek ve yürütülebilir bir dosya oluşturmak için bir derleyici tarafından işlenmesi gerektiği anlamına gelir. Derlendikten sonra, daha yüksek verimlilikle birden çok kez çalıştırılabilir. Derlenmiş bir dilin avantajı, derleme sırasında kodun makine koduna dönüştürülmesidir, bu nedenle yürütme hızı hızlıdır ve program, kullanıcıların kullanması için uygun olan ve ihtiyaç duymayan bir derleyici olmadan programın çalıştırılabilmesidir. ek yazılım yüklemek için. Yaygın olarak derlenen diller arasında C, C++, Go vb.
Derlenmiş dillerin karşılığı yorumlanmış dillerdir. Yorumlanmış bir dil, kodun bir yorumlayıcı aracılığıyla satır satır yorumlanıp yürütüldüğü anlamına gelir ve doğrudan bilgisayarda çalışır ve çeviri işleminin her çalıştırıldığında yeniden çevrilmesi gerekir. Yorumlanan dillerin avantajları, yüksek geliştirme verimliliği ve kolay kod hata ayıklamasıdır, ancak yürütme hızı nispeten yavaştır. Yaygın olarak yorumlanan diller arasında Python, Java, Ruby vb.
Dilin özünde derlenen ve yorumlanan türler arasında ayrım yapmadığını ancak ilk tasarımda bazı eğilimlerin olacağını vurgulamak gerekir. C/C++ çoğu durumda derlenir ve yürütülür, ancak yorumlanabilir ve yürütülebilir (Cint, Cling). Geleneksel anlamda yorumlanan birçok dil artık ara kodlar halinde derlenmekte ve sanal makinelerde (Python, Lua) yürütülmektedir.
Fiziksel makinenin yürütme sürecini bildiğimize göre şimdi sanal makineden bahsedelim.
Sanal makineler genellikle farklı donanım aygıtlarını simüle ederek sanal bir bilgisayar ortamı sağlar. Farklı sanal makineler tarafından simüle edilebilen donanım cihazları farklıdır, ancak genellikle CPU, bellek, sabit disk, ağ arabirimi vb.
Örnek olarak Ethereum Sanal Makinesini (EVM) ele alalım EVM, Ethereum akıllı sözleşmelerini yürütmek için kullanılan yığın tabanlı bir sanal makinedir. EVM, CPU, bellek, depolama ve yığın gibi donanım aygıtlarını simüle ederek sanal bir bilgisayar ortamı sağlar.
Özellikle EVM, verileri depolamak ve talimatları yürütmek için bir yığın kullanan yığın tabanlı bir sanal makinedir. EVM'nin komut seti, aritmetik işlemler, mantık işlemleri, depolama işlemleri, atlama işlemleri vb. gibi çeşitli işlem kodlarını içerir. Bu talimatlar, akıllı sözleşmelerin yürütülmesini tamamlamak için EVM yığınında yürütülebilir.
EVM tarafından taklit edilen bellek ve depolama, akıllı sözleşmelerin durumunu ve verilerini depolamak için kullanılan cihazlardır. EVM, hafızayı ve depolamayı iki ayrı alan olarak ele alır ve hafıza ve depolamayı okuyarak ve yazarak akıllı sözleşmelerin durumuna ve verilerine erişebilir.
EVM tarafından benzetilen yığın, işlenenleri ve komutların sonuçlarını depolamak için kullanılır. EVM'nin komut setindeki komutların çoğu yığın tabanlıdır, yığından işlenenleri okur ve sonuçları yığına geri gönderir.
Kısaca EVM, akıllı sözleşmelerin talimatlarını yürütebilen ve akıllı sözleşmelerin durumunu ve verilerini depolayabilen CPU, bellek, depolama ve yığın gibi donanım aygıtlarını simüle ederek sanal bir bilgisayar ortamı sağlar. Gerçek operasyonda EVM, akıllı sözleşmenin bayt kodunu belleğe yükleyecek ve komut setini yürüterek akıllı sözleşmenin mantığını yürütecektir. EVM'nin aslında değiştirdiği şey, yukarıdaki şekilde işletim sistemi + donanımın bir parçasıdır.
EVM'nin tasarım süreci açıkça aşağıdan yukarıyadır.Önce simüle edilen donanım ortamı (stack, memory) sonlandırılır ve ardından ilgili ortama göre bir dizi montaj komut seti (Opcode) ve bytecode (Bytecode) tasarlanır. Montaj talimat seti insanların okuması için olmasına rağmen, çok fazla alt düzey bilgi içerir, geliştiriciler için yüksek gereksinimleri vardır ve geliştirmesi külfetlidir. aramalar yapın ve geliştiricilere daha iyi bir deneyim sağlayın. EVM'nin montaj talimat setinin özelleştirilmiş tasarımı nedeniyle, geleneksel üst düzey dilleri doğrudan kullanmak ve sanal makineye uyum sağlamak için yeni bir üst düzey dili yeniden oluşturmak zordur. Ethereum topluluğu, EVM yürütme verimliliği için iki derlenmiş üst düzey dil (Solidity ve Vyper) tasarladı. Solidity'nin vurgulanmasına gerek yok, Vyper, Vitalik tarafından Solidity'deki bazı kusurları iyileştirdikten sonra tasarlanmış üst düzey bir EVM dilidir, ancak toplulukta geniş çapta benimsenmemiştir, bu nedenle yavaş yavaş tarih sahnesinden silinir.
zkEVM nedir
Basitçe ifade etmek gerekirse zkEVM, sıfır bilgi kanıtı/geçerlilik kanıtı teknolojisini kullanan bir EVM'dir, böylece EVM'nin yürütme süreci, tüm doğrulayıcıların Taşımasını gerektirmeden sıfır bilgi kanıtı/geçerlilik kanıtı yoluyla daha verimli ve düşük maliyetle doğrulanabilir. EVM'nin yürütme sürecinin dışında.
Piyasada pek çok zkEVM ürünü var ve pist çok sıcak.Ana oyuncular arasında 5 kategoriye (1, 2) ayrılan Starknet, zkSync, Scroll, Taiko, Linea, Polygon zkEVM (eski adıyla Polygon Hermez) vb. , 2.5, 3, 4) tarafından vitalik . Spesifik içerik, Vitalik'in blogunda görüntülenebilir.
zkEVM neden gereklidir?
Bu soruya iki açıdan bakmak gerekir.
İlk zk Toplama girişimleri, yalnızca zkSync Lite, Loopring, vb. gibi nispeten basit aktarım ve işlem işlevlerine ulaşabilir. Ancak deniz çok zor olduğunda, insanlar Ethereum üzerinde Turing-complete EVM'yi kullanıyorlardı.Programlama yoluyla çeşitli uygulamalar oluşturmak imkansız olduğunda, insanlar L2'de sanal makineler aramaya başladılar. Akıllı sözleşmeler yazma ihtiyacı bir tanesidir.
EVM'deki bazı tasarımlar sıfır bilgi kanıtı/geçerlilik kanıtı oluşturmaya uygun olmadığından, bazı oyuncular Starknet'in Kahire Meclisi ve zkSync's gibi alt katmanda sıfır bilgi kanıtı/geçerlilik kanıtı oluşturmaya uygun bir komut seti kullanmayı seçer. Çinko Talimatı. Ancak aynı zamanda, herkes EVM'nin devasa kullanıcı ekolojisinden vazgeçmek istemiyor, bu nedenle üst katmandaki tip 3 ve 4 zkEVM olan EVM ile uyumlu olmayı seçiyorlar. Bazı oyuncular hala geleneksel EVM talimat seti Opcode'da ısrar ediyor ve Opcode için Tip 1 ve Tip 2 zkEVM olan daha verimli kanıtlar üretmeye odaklanıyor. EVM'nin devasa ekolojisi ikiye ayrılıyor.
Kakarot: Sanal makinede sanal makine mi?
Sanal makine üzerinde neden başka bir sanal makine yapılabilir? Bu, bilgisayar uygulayıcıları için sıradan bir şeydir, ancak bilgisayardan anlamayan kullanıcılar için o kadar açık olmayabilir. Aslında anlaşılması kolaydır.Bu yapı taşları gibidir.Alt katman yeterince güçlü olduğu sürece (Turing-complete yürütme ortamı ile), yapı taşları sınırsız olarak üst katmana istiflenebilir. Ancak kaç katman oluşturulursa oluşturulsun, nihai yürütme yine de en düşük düzeyli fiziksel donanım tarafından gerçekleştirilmelidir, bu nedenle katman sayısını artırmak verimliliğin düşmesine neden olacaktır. Aynı zamanda, farklı yapı taşlarının (farklı sanal makine tasarımları) farklı tasarımları nedeniyle, yapı taşları gittikçe daha yükseğe inşa edildiğinden, yapı taşlarının çökme olasılığı (çalışma hataları) daha fazladır, bu da daha yüksek bir seviye gerektirir. teknik destek.
Kakarot, Kahire dilinde Starknet'te uygulanan bir EVM'dir. EVM'deki yığını, belleği, yürütmeyi vb. simüle etmek için Kahire akıllı sözleşmelerini kullanır. Göreceli olarak EVM'yi hayata geçirmek zor değil Go-Ethereum'da Golang ile yazılan ve kullanım oranı en yüksek olan EVM'ye ek olarak Python, Java, Java ve Rust dillerinde yazılmış mevcut EVM'ler de var.
Kakarot zkEVM'nin teknik zorluğu, protokolün Starknet zincirinde bir sözleşme olarak var olması ve bu da iki temel sorunu beraberinde getiriyor.
Uyumluluk Starknet, Ethereum'dan tamamen farklı bir hesap sistemi kullanır.Ethereum'daki hesaplar, EOA (harici hesap) ve CA (sözleşme hesabı) olarak ikiye ayrılır.Ancak, Starknet yerel hesap soyutlamayı destekler ve tüm hesaplar sözleşme hesabıdır. Aynı zamanda, kullanılan farklı kriptografik algoritmalar nedeniyle, kullanıcılar Starknet'te Ethereum'da olduğu gibi aynı adresi oluşturmak için aynı entropiyi kullanamazlar.
Maliyet Kakarot zkEVM, zincirde bir sözleşme olarak var olduğundan, kod uygulaması için yüksek gereksinimleri vardır ve etkileşim maliyetlerini azaltmak için mümkün olduğunca Gaz için optimize edilmesi gerekir.
Kararlılık Golang, Rust, Python vb. gibi geleneksel üst düzey dilleri kullanmanın aksine Kahire dili, Kahire 0'dan Kahire 1'e ve Kahire 2'ye (veya tercih ederseniz Kahire 1'e) kadar hala deneysel aşamadadır. sürüm 2), resmi ekip hala Dil özellikleri sürekli olarak revize edilmektedir. Aynı zamanda, Cairo VM yeterince test edilmemiştir ve daha sonra büyük ölçekli yeniden yazma olasılığı göz ardı edilemez.
Kakarot protokolü beş ana bileşenden oluşur (dördü GitHub belgesinde yazılmıştır, EOA dahil değildir, bu makale okuyucuların rahatlığı için ayarlanmıştır):
Kakarot (Çekirdek): Ethereum biçimindeki işlemleri yürütmekten ve Ethereum kullanıcıları için karşılık gelen Starknet hesaplarını sağlamaktan sorumludur
Sözleşme Hesapları: Sözleşmenin bayt kodunu ve sözleşmedeki değişkenlerin durumunu depolamaktan sorumlu Ethereum anlamında CA
Harici Sahipli Hesaplar: Ethereum işlemlerini Kakarot Core'a iletmekten sorumlu Ethereum anlamında EOA
Hesap Kaydı: Ethereum hesapları ile Starknet hesapları arasındaki yazışmaları saklar.
Blockhash Kayıt Defteri: Özel bir Opcode olarak Blockhash geçmiş blok verilerine ihtiyaç duyar ve Kakarot doğrudan zincirdeki verileri elde edemez. Bu bileşen, yönetici tarafından yazılan ve Kakarot Core'a sağlanan blok_number -> blok_hash eşleme ilişkisini saklar.
Kakarot CEO'su Elias Tazartes'in geri bildirimlerine göre, ekibin son sürümünde Account Resister tasarımından vazgeçildi ve bunun yerine, ilgili ilişkiyi kaydetmek için doğrudan 31 baytlık bir Starknet adresinden 20 bitlik bir EVM adresine eşleme kullanıldı. . Gelecekte, birlikte çalışabilirliği geliştirmek ve Starknet sözleşmelerinin kendi EVM adreslerini kaydetmesine izin vermek için, Hesap Kaydı tasarımı yeniden kullanılabilir.
Starknet'te EVM ile uyumlu: Warp ve kakarot arasındaki fark nedir
Vitalik tarafından tanımlanan zkEVM tipine göre Warp, Type-4'e aitken, kakarot şu anda Type-2.5'e ait.
Warp, Solidity kodunu Kahire koduna çeviren bir tercümandır.Derleyici olarak adlandırılmamasının nedeni muhtemelen Kahire çıktısının hala yüksek seviyeli bir dil olmasıdır. Solidity geliştiricileri, Warp aracılığıyla, yeni Kahire dilini öğrenmek zorunda kalmadan orijinal geliştirme durumunu koruyabilirler. Birçok proje tarafı için Warp, Starknet ekosistemine girme eşiğini düşürür ve büyük miktarda mühendislik kodunu yeniden yazmak için Kahire'yi kullanması gerekmez.
Çeviri fikri basit olsa da uyumluluk da en kötüsüdür.Bazı Solidity kodları Kahire'ye iyi çevrilemez.Hesap sistemi, kriptografik algoritma vb. içeren kod mantığının, taşımayı tamamlamak için kaynak kodunu değiştirmesi gerekir. Spesifik desteklenmeyen özellikler Warp belgelerine bakılabilir. Örneğin, birçok proje EOA hesaplarının ve sözleşme hesaplarının yürütme mantığını ayırt edecektir, ancak Starknet'teki tüm hesaplar sözleşme hesaplarıdır ve kodun bu kısmının çeviriden önce değiştirilmesi gerekir.
Warp, üst düzey dil düzeyinde uyumludur ve kakarot, EVM düzeyinde uyumludur.
EVM'nin tamamen yeniden yazılması ve Opcode ve Pre-compile'ın birer birer uygulanması, kakarot'un daha yüksek yerel uyumluluğa sahip olmasını sağlar. Sonuçta, aynı sanal makinede (EVM) çalıştırma, farklı bir sanal makinede (Kahire VM) yürütmeden her zaman daha uyumludur. Account Registry ve Blockhash Registry, farklı sistemlerdeki farklılıkları akıllıca korur ve kullanıcı geçişindeki sorunları en aza indirir.
Kakarot Takımı
Başta Elias Tazartes olmak üzere bu yazıya değerli yorumları için kakarot ekibine teşekkür ederiz. Teşekkürler bayım!
View Original
This page may contain third-party content, which is provided for information purposes only (not representations/warranties) and should not be considered as an endorsement of its views by Gate, nor as financial or professional advice. See Disclaimer for details.
Kakarot: Starknet'in EVM Uyumlu Yolunu Keşfetmek
yazar: kinik
TL;DR
Sanal makine nedir?
Sanal makinenin ne olduğunu açıklığa kavuşturmak için öncelikle mevcut ana akım von Neumann mimarisi altındaki bilgisayar yürütme sürecinden bahsetmeliyiz. Bir bilgisayarda çalışan çeşitli programlar genellikle üst düzey dil katmanları tarafından dönüştürülür ve son olarak yürütme için makine tarafından anlaşılabilen makine kodları oluşturur. Üst düzey diller, makine koduna dönüştürme yöntemine göre kabaca derlenmiş diller ve yorumlanan diller olarak ikiye ayrılabilir.
Derlenmiş bir dil, kod yazıldıktan sonra, üst düzey dil kodunu makine koduna dönüştürmek ve yürütülebilir bir dosya oluşturmak için bir derleyici tarafından işlenmesi gerektiği anlamına gelir. Derlendikten sonra, daha yüksek verimlilikle birden çok kez çalıştırılabilir. Derlenmiş bir dilin avantajı, derleme sırasında kodun makine koduna dönüştürülmesidir, bu nedenle yürütme hızı hızlıdır ve program, kullanıcıların kullanması için uygun olan ve ihtiyaç duymayan bir derleyici olmadan programın çalıştırılabilmesidir. ek yazılım yüklemek için. Yaygın olarak derlenen diller arasında C, C++, Go vb.
Derlenmiş dillerin karşılığı yorumlanmış dillerdir. Yorumlanmış bir dil, kodun bir yorumlayıcı aracılığıyla satır satır yorumlanıp yürütüldüğü anlamına gelir ve doğrudan bilgisayarda çalışır ve çeviri işleminin her çalıştırıldığında yeniden çevrilmesi gerekir. Yorumlanan dillerin avantajları, yüksek geliştirme verimliliği ve kolay kod hata ayıklamasıdır, ancak yürütme hızı nispeten yavaştır. Yaygın olarak yorumlanan diller arasında Python, Java, Ruby vb.
Fiziksel makinenin yürütme sürecini bildiğimize göre şimdi sanal makineden bahsedelim.
Sanal makineler genellikle farklı donanım aygıtlarını simüle ederek sanal bir bilgisayar ortamı sağlar. Farklı sanal makineler tarafından simüle edilebilen donanım cihazları farklıdır, ancak genellikle CPU, bellek, sabit disk, ağ arabirimi vb.
Örnek olarak Ethereum Sanal Makinesini (EVM) ele alalım EVM, Ethereum akıllı sözleşmelerini yürütmek için kullanılan yığın tabanlı bir sanal makinedir. EVM, CPU, bellek, depolama ve yığın gibi donanım aygıtlarını simüle ederek sanal bir bilgisayar ortamı sağlar.
Özellikle EVM, verileri depolamak ve talimatları yürütmek için bir yığın kullanan yığın tabanlı bir sanal makinedir. EVM'nin komut seti, aritmetik işlemler, mantık işlemleri, depolama işlemleri, atlama işlemleri vb. gibi çeşitli işlem kodlarını içerir. Bu talimatlar, akıllı sözleşmelerin yürütülmesini tamamlamak için EVM yığınında yürütülebilir.
EVM tarafından taklit edilen bellek ve depolama, akıllı sözleşmelerin durumunu ve verilerini depolamak için kullanılan cihazlardır. EVM, hafızayı ve depolamayı iki ayrı alan olarak ele alır ve hafıza ve depolamayı okuyarak ve yazarak akıllı sözleşmelerin durumuna ve verilerine erişebilir.
EVM tarafından benzetilen yığın, işlenenleri ve komutların sonuçlarını depolamak için kullanılır. EVM'nin komut setindeki komutların çoğu yığın tabanlıdır, yığından işlenenleri okur ve sonuçları yığına geri gönderir.
Kısaca EVM, akıllı sözleşmelerin talimatlarını yürütebilen ve akıllı sözleşmelerin durumunu ve verilerini depolayabilen CPU, bellek, depolama ve yığın gibi donanım aygıtlarını simüle ederek sanal bir bilgisayar ortamı sağlar. Gerçek operasyonda EVM, akıllı sözleşmenin bayt kodunu belleğe yükleyecek ve komut setini yürüterek akıllı sözleşmenin mantığını yürütecektir. EVM'nin aslında değiştirdiği şey, yukarıdaki şekilde işletim sistemi + donanımın bir parçasıdır.
EVM'nin tasarım süreci açıkça aşağıdan yukarıyadır.Önce simüle edilen donanım ortamı (stack, memory) sonlandırılır ve ardından ilgili ortama göre bir dizi montaj komut seti (Opcode) ve bytecode (Bytecode) tasarlanır. Montaj talimat seti insanların okuması için olmasına rağmen, çok fazla alt düzey bilgi içerir, geliştiriciler için yüksek gereksinimleri vardır ve geliştirmesi külfetlidir. aramalar yapın ve geliştiricilere daha iyi bir deneyim sağlayın. EVM'nin montaj talimat setinin özelleştirilmiş tasarımı nedeniyle, geleneksel üst düzey dilleri doğrudan kullanmak ve sanal makineye uyum sağlamak için yeni bir üst düzey dili yeniden oluşturmak zordur. Ethereum topluluğu, EVM yürütme verimliliği için iki derlenmiş üst düzey dil (Solidity ve Vyper) tasarladı. Solidity'nin vurgulanmasına gerek yok, Vyper, Vitalik tarafından Solidity'deki bazı kusurları iyileştirdikten sonra tasarlanmış üst düzey bir EVM dilidir, ancak toplulukta geniş çapta benimsenmemiştir, bu nedenle yavaş yavaş tarih sahnesinden silinir.
zkEVM nedir
Basitçe ifade etmek gerekirse zkEVM, sıfır bilgi kanıtı/geçerlilik kanıtı teknolojisini kullanan bir EVM'dir, böylece EVM'nin yürütme süreci, tüm doğrulayıcıların Taşımasını gerektirmeden sıfır bilgi kanıtı/geçerlilik kanıtı yoluyla daha verimli ve düşük maliyetle doğrulanabilir. EVM'nin yürütme sürecinin dışında.
Piyasada pek çok zkEVM ürünü var ve pist çok sıcak.Ana oyuncular arasında 5 kategoriye (1, 2) ayrılan Starknet, zkSync, Scroll, Taiko, Linea, Polygon zkEVM (eski adıyla Polygon Hermez) vb. , 2.5, 3, 4) tarafından vitalik . Spesifik içerik, Vitalik'in blogunda görüntülenebilir.
zkEVM neden gereklidir?
Bu soruya iki açıdan bakmak gerekir.
İlk zk Toplama girişimleri, yalnızca zkSync Lite, Loopring, vb. gibi nispeten basit aktarım ve işlem işlevlerine ulaşabilir. Ancak deniz çok zor olduğunda, insanlar Ethereum üzerinde Turing-complete EVM'yi kullanıyorlardı.Programlama yoluyla çeşitli uygulamalar oluşturmak imkansız olduğunda, insanlar L2'de sanal makineler aramaya başladılar. Akıllı sözleşmeler yazma ihtiyacı bir tanesidir.
EVM'deki bazı tasarımlar sıfır bilgi kanıtı/geçerlilik kanıtı oluşturmaya uygun olmadığından, bazı oyuncular Starknet'in Kahire Meclisi ve zkSync's gibi alt katmanda sıfır bilgi kanıtı/geçerlilik kanıtı oluşturmaya uygun bir komut seti kullanmayı seçer. Çinko Talimatı. Ancak aynı zamanda, herkes EVM'nin devasa kullanıcı ekolojisinden vazgeçmek istemiyor, bu nedenle üst katmandaki tip 3 ve 4 zkEVM olan EVM ile uyumlu olmayı seçiyorlar. Bazı oyuncular hala geleneksel EVM talimat seti Opcode'da ısrar ediyor ve Opcode için Tip 1 ve Tip 2 zkEVM olan daha verimli kanıtlar üretmeye odaklanıyor. EVM'nin devasa ekolojisi ikiye ayrılıyor.
Kakarot: Sanal makinede sanal makine mi?
Sanal makine üzerinde neden başka bir sanal makine yapılabilir? Bu, bilgisayar uygulayıcıları için sıradan bir şeydir, ancak bilgisayardan anlamayan kullanıcılar için o kadar açık olmayabilir. Aslında anlaşılması kolaydır.Bu yapı taşları gibidir.Alt katman yeterince güçlü olduğu sürece (Turing-complete yürütme ortamı ile), yapı taşları sınırsız olarak üst katmana istiflenebilir. Ancak kaç katman oluşturulursa oluşturulsun, nihai yürütme yine de en düşük düzeyli fiziksel donanım tarafından gerçekleştirilmelidir, bu nedenle katman sayısını artırmak verimliliğin düşmesine neden olacaktır. Aynı zamanda, farklı yapı taşlarının (farklı sanal makine tasarımları) farklı tasarımları nedeniyle, yapı taşları gittikçe daha yükseğe inşa edildiğinden, yapı taşlarının çökme olasılığı (çalışma hataları) daha fazladır, bu da daha yüksek bir seviye gerektirir. teknik destek.
Kakarot, Kahire dilinde Starknet'te uygulanan bir EVM'dir. EVM'deki yığını, belleği, yürütmeyi vb. simüle etmek için Kahire akıllı sözleşmelerini kullanır. Göreceli olarak EVM'yi hayata geçirmek zor değil Go-Ethereum'da Golang ile yazılan ve kullanım oranı en yüksek olan EVM'ye ek olarak Python, Java, Java ve Rust dillerinde yazılmış mevcut EVM'ler de var.
Kakarot zkEVM'nin teknik zorluğu, protokolün Starknet zincirinde bir sözleşme olarak var olması ve bu da iki temel sorunu beraberinde getiriyor.
Kakarot protokolü beş ana bileşenden oluşur (dördü GitHub belgesinde yazılmıştır, EOA dahil değildir, bu makale okuyucuların rahatlığı için ayarlanmıştır):
Kakarot CEO'su Elias Tazartes'in geri bildirimlerine göre, ekibin son sürümünde Account Resister tasarımından vazgeçildi ve bunun yerine, ilgili ilişkiyi kaydetmek için doğrudan 31 baytlık bir Starknet adresinden 20 bitlik bir EVM adresine eşleme kullanıldı. . Gelecekte, birlikte çalışabilirliği geliştirmek ve Starknet sözleşmelerinin kendi EVM adreslerini kaydetmesine izin vermek için, Hesap Kaydı tasarımı yeniden kullanılabilir.
Starknet'te EVM ile uyumlu: Warp ve kakarot arasındaki fark nedir
Vitalik tarafından tanımlanan zkEVM tipine göre Warp, Type-4'e aitken, kakarot şu anda Type-2.5'e ait.
Warp, Solidity kodunu Kahire koduna çeviren bir tercümandır.Derleyici olarak adlandırılmamasının nedeni muhtemelen Kahire çıktısının hala yüksek seviyeli bir dil olmasıdır. Solidity geliştiricileri, Warp aracılığıyla, yeni Kahire dilini öğrenmek zorunda kalmadan orijinal geliştirme durumunu koruyabilirler. Birçok proje tarafı için Warp, Starknet ekosistemine girme eşiğini düşürür ve büyük miktarda mühendislik kodunu yeniden yazmak için Kahire'yi kullanması gerekmez.
Çeviri fikri basit olsa da uyumluluk da en kötüsüdür.Bazı Solidity kodları Kahire'ye iyi çevrilemez.Hesap sistemi, kriptografik algoritma vb. içeren kod mantığının, taşımayı tamamlamak için kaynak kodunu değiştirmesi gerekir. Spesifik desteklenmeyen özellikler Warp belgelerine bakılabilir. Örneğin, birçok proje EOA hesaplarının ve sözleşme hesaplarının yürütme mantığını ayırt edecektir, ancak Starknet'teki tüm hesaplar sözleşme hesaplarıdır ve kodun bu kısmının çeviriden önce değiştirilmesi gerekir.
Warp, üst düzey dil düzeyinde uyumludur ve kakarot, EVM düzeyinde uyumludur.
EVM'nin tamamen yeniden yazılması ve Opcode ve Pre-compile'ın birer birer uygulanması, kakarot'un daha yüksek yerel uyumluluğa sahip olmasını sağlar. Sonuçta, aynı sanal makinede (EVM) çalıştırma, farklı bir sanal makinede (Kahire VM) yürütmeden her zaman daha uyumludur. Account Registry ve Blockhash Registry, farklı sistemlerdeki farklılıkları akıllıca korur ve kullanıcı geçişindeki sorunları en aza indirir.
Kakarot Takımı
Başta Elias Tazartes olmak üzere bu yazıya değerli yorumları için kakarot ekibine teşekkür ederiz. Teşekkürler bayım!