EVM, Ethereum'un temel yürütme motoru olarak, "akıllı sözleşme yürütme ortamı" olarak tanımlanmaktadır. Akıllı sözleşmelerin farklı düğümler üzerinde tutarlı sonuçlar almasını sağlamak için EVM, Java sanal makinesi JVM'ye benzer, çapraz platform sanal makine ortamı sunmaktadır.
Akıllı sözleşmeler dağıtıldığında EVM bayt koduna derlenir ve zincire kaydedilir. EVM sözleşmeyi çalıştırırken bu bayt kodunu sırayla okur, her bir komutun ilgili Gas maliyeti vardır. EVM, komut yürütme sürecindeki Gas tüketimini izler, tüketim miktarı işlem karmaşıklığına bağlıdır.
Geleneksel EVM, işlemleri seri bir şekilde işleyerek, tüm işlemleri tek bir kuyrukta belirli bir sırayla yürütmektedir. Bu tasarım basit ve bakım açısından kolaydır, ancak kullanıcı sayısının artması ve Rollup teknolojisinin uygulanmasıyla, seri yürütmenin performans darboğazı giderek belirginleşmektedir.
Rollup mimarisinde, Sequencer Layer2'nin ana bileşeni olarak tüm hesaplama görevlerini üstlenir. Eğer diğer dış modüllerin verimliliği yeterince yüksekse, Sequencer'ın kendisinin seri yürütülmesi en büyük darboğaz haline gelecektir. Bir ekip, Sequencer'ı her saniyede 2000'den fazla ERC-20 transferi gerçekleştirebilecek şekilde aşırı optimize etti, ancak daha karmaşık işlemler için TPS hala büyük ölçüde düşecektir. Bu nedenle, işlem işleme paralelleşmesi gelecekteki gelişim trendi haline gelmektedir.
EVM dışında, go-ethereum'daki işlem yürütme ile ilgili bir diğer temel bileşen stateDB'dir ve hesap durumunu ve veri depolamasını yönetmek için kullanılır. Ethereum, veritabanı indekslemesi için Merkle Patricia Trie ağaç yapısını kullanır; EVM her işlem yürütmesinde stateDB'deki verileri değiştirir ve bu nihayetinde küresel durum ağacında yansır.
stateDB, tüm Ethereum hesap durumlarını, hesap bakiyeleri, akıllı sözleşme kodları vb. dahil olmak üzere sürdürmekten sorumludur. İşlem yürütme sürecinde, stateDB ilgili hesap verilerine okuma ve yazma işlemleri yapar, işlem tamamlandıktan sonra yeni durumu alt veritabanına kalıcı hale getirmek için gönderir.
EVM ve stateDB, Ethereum'un işlem yürütme ortamını oluşturmak için işbirliği yapar. EVM, akıllı sözleşme talimatlarını yorumlamaktan ve yürütmekten sorumludur; hesaplama sonuçlarına göre blok zinciri durumunu değiştirir, stateDB ise tüm hesapların ve sözleşmelerin durum değişikliklerini yöneten küresel durum deposu olarak işlev görür.
Seri yürütme modunda, bir blok içindeki işlemler sırayla işlenir. Her işlem bağımsız bir EVM örneği kullanır, ancak tüm işlemler aynı stateDB'yi paylaşır. EVM, yürütme sürecinde sürekli olarak stateDB ile etkileşimde bulunarak ilgili verileri okur ve değişiklik sonuçlarını geri yazar.
Blok içindeki tüm işlemler tamamlandıktan sonra, stateDB'deki veriler küresel durum ağacına gönderilir ve yeni bir durum kökü oluşturulur. Bu seri modunun ana darboğazı, işlemlerin sıraya alınarak gerçekleştirilmesidir; bu da donanım kaynaklarının tam olarak kullanılmasını engeller ve özellikle karmaşık akıllı sözleşme işlemleriyle karşılaşıldığında verimliliği düşürür.
İşlem işleme verimliliğini artırmak için bazı projeler EVM'nin çoklu iş parçacığı paralel optimizasyonunu denemeye başladı. Bu, bankaların aynı anda müşterilere hizmet vermek için birden fazla gişe açmasına benzer, işleme hızını birkaç kat artırabilir, ancak ortaya çıkabilecek durum çakışması sorunlarının çözülmesi gerekir.
Bir ZKRollup projesinin EVM için paralel optimizasyon yaklaşımı, her bir iş parçacığına geçici bir durum veritabanı (pending-stateDB) tahsis etmektir. Spesifik uygulama şunları içerir:
Çoklu iş parçacıkları paralel olarak işlem yapar, birbirlerini etkilemez.
Her bir iş parçacığının bağımsız bir pending-stateDB'si vardır, işlem yürütülürken durum değişiklikleri burada kaydedilir.
Tüm işlemler tamamlandıktan sonra, pending-stateDB'deki değişiklikler global stateDB'ye senkronize edilecektir.
Bu çözüm, okuma ve yazma işlemlerini optimize etti:
Okuma işlemi sırasında önce pending-stateDB'nin ReadSet'ini kontrol edin, gerekli veriler varsa doğrudan okuyun, aksi takdirde global stateDB'den geçmiş durumu okuyun.
Yazma işlemleri doğrudan global stateDB'ye yazılmaz, önce pending-stateDB'deki WriteSet'e kaydedilir.
Durum çakışmalarını işlemek için çakışma tespit mekanizması getirildi:
Farklı işlemlerin ReadSet ve WriteSet'ini izleyerek, birden fazla işlemin aynı durum öğelerini okuduğu ve yazdığı tespit edildiğinde çakışma olarak değerlendirilir.
Çatışan işlemler yeniden yürütülmesi gerekenler olarak işaretlenecektir.
Tüm işlemler gerçekleştirildikten sonra, birden fazla pending-stateDB değişiklik kaydı global stateDB'ye birleştirilecek, başarılı olduğunda global durum ağacına sunulacak ve yeni durum kökü oluşturulacaktır.
Araştırmalar, düşük çatışma yüklerinde, paralel EVM'nin TPS'sinin geleneksel seri yürütmeye göre 3-5 kat arttığını göstermektedir. Yüksek çatışma yüklerinde ise teorik olarak en yüksek 60 kat artışa ulaşabilir.
Bu çoklu iş parçacığı paralel optimizasyon çözümü, geçici durum deposu ve paralel yürütme ile EVM'nin işlem işleme kapasitesini önemli ölçüde artırdı. Okuma ve yazma işlemlerinin optimizasyonu ve çakışma tespit mekanizmasının getirilmesi, durum tutarlılığını sağlarken işlemlerin büyük ölçekli paralelleştirilmesini mümkün kıldı, seri yürütmenin performans darboğazını çözdü ve Ethereum Rollup'un gelecekteki gelişimi için bir temel oluşturdu.
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.
7 Likes
Reward
7
5
Share
Comment
0/400
AirdropHunterZhang
· 07-29 02:07
Olmadı, her gün 60 kat. Krepi hala bu fiyatta.
View OriginalReply0
GateUser-afe07a92
· 07-28 22:11
Sadece TPS biraz arttı.
View OriginalReply0
ZKProofEnthusiast
· 07-28 22:09
Usta, tps bu kadar hızlıyken hala on-chain gizlilik mi var?
EVM paralel optimizasyonu: Ethereum işlem işleme verimliliğini 5-60 kat artırma
EVM Paralelleştirme Optimizasyonu: Ethereum İşlem İşleme Verimliliğini Artırma
EVM, Ethereum'un temel yürütme motoru olarak, "akıllı sözleşme yürütme ortamı" olarak tanımlanmaktadır. Akıllı sözleşmelerin farklı düğümler üzerinde tutarlı sonuçlar almasını sağlamak için EVM, Java sanal makinesi JVM'ye benzer, çapraz platform sanal makine ortamı sunmaktadır.
Akıllı sözleşmeler dağıtıldığında EVM bayt koduna derlenir ve zincire kaydedilir. EVM sözleşmeyi çalıştırırken bu bayt kodunu sırayla okur, her bir komutun ilgili Gas maliyeti vardır. EVM, komut yürütme sürecindeki Gas tüketimini izler, tüketim miktarı işlem karmaşıklığına bağlıdır.
Geleneksel EVM, işlemleri seri bir şekilde işleyerek, tüm işlemleri tek bir kuyrukta belirli bir sırayla yürütmektedir. Bu tasarım basit ve bakım açısından kolaydır, ancak kullanıcı sayısının artması ve Rollup teknolojisinin uygulanmasıyla, seri yürütmenin performans darboğazı giderek belirginleşmektedir.
Rollup mimarisinde, Sequencer Layer2'nin ana bileşeni olarak tüm hesaplama görevlerini üstlenir. Eğer diğer dış modüllerin verimliliği yeterince yüksekse, Sequencer'ın kendisinin seri yürütülmesi en büyük darboğaz haline gelecektir. Bir ekip, Sequencer'ı her saniyede 2000'den fazla ERC-20 transferi gerçekleştirebilecek şekilde aşırı optimize etti, ancak daha karmaşık işlemler için TPS hala büyük ölçüde düşecektir. Bu nedenle, işlem işleme paralelleşmesi gelecekteki gelişim trendi haline gelmektedir.
EVM dışında, go-ethereum'daki işlem yürütme ile ilgili bir diğer temel bileşen stateDB'dir ve hesap durumunu ve veri depolamasını yönetmek için kullanılır. Ethereum, veritabanı indekslemesi için Merkle Patricia Trie ağaç yapısını kullanır; EVM her işlem yürütmesinde stateDB'deki verileri değiştirir ve bu nihayetinde küresel durum ağacında yansır.
stateDB, tüm Ethereum hesap durumlarını, hesap bakiyeleri, akıllı sözleşme kodları vb. dahil olmak üzere sürdürmekten sorumludur. İşlem yürütme sürecinde, stateDB ilgili hesap verilerine okuma ve yazma işlemleri yapar, işlem tamamlandıktan sonra yeni durumu alt veritabanına kalıcı hale getirmek için gönderir.
EVM ve stateDB, Ethereum'un işlem yürütme ortamını oluşturmak için işbirliği yapar. EVM, akıllı sözleşme talimatlarını yorumlamaktan ve yürütmekten sorumludur; hesaplama sonuçlarına göre blok zinciri durumunu değiştirir, stateDB ise tüm hesapların ve sözleşmelerin durum değişikliklerini yöneten küresel durum deposu olarak işlev görür.
Seri yürütme modunda, bir blok içindeki işlemler sırayla işlenir. Her işlem bağımsız bir EVM örneği kullanır, ancak tüm işlemler aynı stateDB'yi paylaşır. EVM, yürütme sürecinde sürekli olarak stateDB ile etkileşimde bulunarak ilgili verileri okur ve değişiklik sonuçlarını geri yazar.
Blok içindeki tüm işlemler tamamlandıktan sonra, stateDB'deki veriler küresel durum ağacına gönderilir ve yeni bir durum kökü oluşturulur. Bu seri modunun ana darboğazı, işlemlerin sıraya alınarak gerçekleştirilmesidir; bu da donanım kaynaklarının tam olarak kullanılmasını engeller ve özellikle karmaşık akıllı sözleşme işlemleriyle karşılaşıldığında verimliliği düşürür.
İşlem işleme verimliliğini artırmak için bazı projeler EVM'nin çoklu iş parçacığı paralel optimizasyonunu denemeye başladı. Bu, bankaların aynı anda müşterilere hizmet vermek için birden fazla gişe açmasına benzer, işleme hızını birkaç kat artırabilir, ancak ortaya çıkabilecek durum çakışması sorunlarının çözülmesi gerekir.
Bir ZKRollup projesinin EVM için paralel optimizasyon yaklaşımı, her bir iş parçacığına geçici bir durum veritabanı (pending-stateDB) tahsis etmektir. Spesifik uygulama şunları içerir:
Çoklu iş parçacıkları paralel olarak işlem yapar, birbirlerini etkilemez.
Her bir iş parçacığının bağımsız bir pending-stateDB'si vardır, işlem yürütülürken durum değişiklikleri burada kaydedilir.
Tüm işlemler tamamlandıktan sonra, pending-stateDB'deki değişiklikler global stateDB'ye senkronize edilecektir.
Bu çözüm, okuma ve yazma işlemlerini optimize etti:
Okuma işlemi sırasında önce pending-stateDB'nin ReadSet'ini kontrol edin, gerekli veriler varsa doğrudan okuyun, aksi takdirde global stateDB'den geçmiş durumu okuyun.
Yazma işlemleri doğrudan global stateDB'ye yazılmaz, önce pending-stateDB'deki WriteSet'e kaydedilir.
Durum çakışmalarını işlemek için çakışma tespit mekanizması getirildi:
Farklı işlemlerin ReadSet ve WriteSet'ini izleyerek, birden fazla işlemin aynı durum öğelerini okuduğu ve yazdığı tespit edildiğinde çakışma olarak değerlendirilir.
Çatışan işlemler yeniden yürütülmesi gerekenler olarak işaretlenecektir.
Tüm işlemler gerçekleştirildikten sonra, birden fazla pending-stateDB değişiklik kaydı global stateDB'ye birleştirilecek, başarılı olduğunda global durum ağacına sunulacak ve yeni durum kökü oluşturulacaktır.
Araştırmalar, düşük çatışma yüklerinde, paralel EVM'nin TPS'sinin geleneksel seri yürütmeye göre 3-5 kat arttığını göstermektedir. Yüksek çatışma yüklerinde ise teorik olarak en yüksek 60 kat artışa ulaşabilir.
Bu çoklu iş parçacığı paralel optimizasyon çözümü, geçici durum deposu ve paralel yürütme ile EVM'nin işlem işleme kapasitesini önemli ölçüde artırdı. Okuma ve yazma işlemlerinin optimizasyonu ve çakışma tespit mekanizmasının getirilmesi, durum tutarlılığını sağlarken işlemlerin büyük ölçekli paralelleştirilmesini mümkün kıldı, seri yürütmenin performans darboğazını çözdü ve Ethereum Rollup'un gelecekteki gelişimi için bir temel oluşturdu.