Ethereum Sanal Makinası (EVM)
Sayfanın son güncellenmesi: 25 Şubat 2026
Ethereum Sanal Makinesi (EVM), tüm Ethereum düğümlerinde kodu sürekli ve güvenli bir şekilde çalıştıran merkeziyetsiz bir sanal ortamdır. Düğümler, akıllı sözleşmeleri yürütmek için EVM'yi çalıştırır, operasyonlar için gereken hesaplama çabasını ölçmek için "gaz" kullanır, böylece verimli kaynak tahsisi ve ağ güvenliği sağlanmış olur.
Ön Koşullar
EVM'yi anlamak için bayt (opens in a new tab), bellek (opens in a new tab) ve yığın (opens in a new tab) gibi bilgisayar bilimindeki yaygın terminolojiye temel düzeyde aşina olmak gereklidir. Karma işlevleri (opens in a new tab) ve Merkle ağacı (opens in a new tab) gibi kriptografi/blokzincir kavramlarına aşina olmak da yararlı olacaktır.
Ledger'dan durum makinesine
“Dağıtılmış defter” analojisi, genellikle temel kriptografi araçlarını kullanarak merkeziyetsiz bir para birimini mümkün kılan Bitcoin gibi blok zincirlerini tanımlamak için kullanılır. Defter, bir kişinin defteri değiştirmek için neler yapıp yapamayacağını düzenleyen kurallara uyması gereken bir faaliyet kaydı tutar. Örneğin, bir Bitcoin adresi daha önce aldığından daha fazla Bitcoin harcayamaz. Bu kurallar, Bitcoin ve diğer birçok blok zincirindeki tüm işlemlerin temelini oluşturur.
Ethereum'un neredeyse tamamen aynı sezgisel kuralları takip eden kendi yerel kripto parası (ether) olsa da, çok daha güçlü bir işlevi de mümkün kılar: akıllı sözleşmeler. Bu daha karmaşık olan özellik için daha karmaşık bir analoji gerekir. Ethereum, dağıtık bir defter yerine dağıtık bir durum makinesidir (opens in a new tab). Ethereum'un durumu, yalnızca tüm hesapları ve bakiyeleri değil, aynı zamanda önceden tanımlanmış bir dizi kurala göre bloktan bloğa değişebilen ve isteğe bağlı makine kodunu çalıştırabilen bir makine durumunu da tutan büyük bir veri yapısıdır. Durumu bloktan bloğa değiştirmenin özel kuralları EVM tarafından tanımlanır.
Diyagram Ethereum EVM illustrated (opens in a new tab) kaynağından uyarlanmıştır
Ethereum durum geçiş fonksiyonu
EVM, matematiksel bir fonksiyon gibi davranır: Bir girdi verildiğinde, deterministik bir çıktı üretir. Bu nedenle Ethereum'u durum geçiş fonksiyonuna sahip olarak daha resmi bir şekilde tanımlamak oldukça yararlıdır:
1Y(S, T)= S'Eski bir geçerli durum (S) ve yeni bir geçerli işlem kümesi (T) verildiğinde, Ethereum durum geçiş fonksiyonu Y(S, T) yeni bir geçerli çıktı durumu olan S''yi üretir.
Durum
Ethereum bağlamında durum, tüm hesapları karmalarla bağlı tutan ve blokzincirde depolanan tek bir kök karmasına indirgenebilen, değiştirilmiş Merkle Patricia Ağacı adı verilen devasa bir veri yapısıdır.
İşlemler
İşlemler, hesaplardan gelen kriptografik olarak imzalanmış talimatlardır. İki tür işlem vardır: mesaj çağrılarıyla sonuçlananlar ve sözleşme oluşturulmasıyla sonuçlananlar.
Sözleşme oluşturma, derlenmiş akıllı sözleşme bayt kodunu içeren yeni bir sözleşme hesabının oluşturulmasıyla sonuçlanır. Başka bir hesap o sözleşmeye mesaj çağrısı yaptığında, sözleşme kendi bayt kodunu yürütür.
EVM talimatları
EVM, 1024 öğe derinliğine sahip bir yığın makinesi (opens in a new tab) olarak çalışır. Her öğe, 256 bitlik kriptografi (Keccak-256 hash'leri veya secp256k1 imzaları gibi) ile kullanım kolaylığı sağlamak için seçilmiş 256 bitlik bir kelimedir.
Yürütme sırasında EVM, işlemler arasında kalıcı olmayan geçici bir bellek (kelime adresli bir bayt dizisi olarak) tutar.
Geçici depolama
Geçici depolama, TSTORE ve TLOAD işlem kodları aracılığıyla erişilen, işlem başına bir anahtar-değer deposudur. Aynı işlem sırasındaki tüm dahili çağrılar boyunca varlığını sürdürür ancak işlem sonunda temizlenir. Belleğin aksine, geçici depolama yürütme çerçevesinden ziyade EVM durumunun bir parçası olarak modellenir, ancak küresel duruma işlenmez. Geçici depolama, bir işlem sırasındaki dahili çağrılar arasında gaz açısından verimli geçici durum paylaşımını mümkün kılar.
Depolama
Sözleşmeler, söz konusu hesapla ilişkili ve küresel durumun bir parçası olan bir Merkle Patricia depolama ağacı (kelimeyle adreslenebilir bir kelime dizisi olarak) içerir. Bu kalıcı depolama, yalnızca tek bir işlem süresince kullanılabilen ve hesabın kalıcı depolama ağacının bir parçasını oluşturmayan geçici depolamadan farklıdır.
İşlem kodları
Derlenmiş akıllı sözleşme bayt kodu, XOR, AND, ADD, SUB vb. gibi standart yığın işlemlerini gerçekleştiren bir dizi EVM işlem kodu olarak yürütülür. EVM ayrıca ADDRESS, BALANCE, BLOCKHASH vb. gibi blokzincire özgü bir dizi yığın işlemi uygular. İşlem kodu seti ayrıca geçici depolamaya erişim sağlayan TSTORE ve TLOAD'u da içerir.
Diyagramlar Ethereum EVM illustrated (opens in a new tab) kaynağından uyarlanmıştır
EVM uygulamaları
EVM'nin tüm uygulamaları, Ethereum Sarı Kağıdında açıklanan şartnameye uymalıdır.
Ethereum'un on yıllık geçmişi boyunca EVM çeşitli revizyonlardan geçmiştir ve EVM'nin farklı programlama dillerinde yazılmış çeşitli uygulamaları bulunmaktadır.
Ethereum yürütüm istemcileri bir EVM uygulaması içerir. Ek olarak, çok sayıda bütünsel uygulama da vardır:
- Py-EVM (opens in a new tab) - Python
- evmone (opens in a new tab) - C++
- ethereumjs-vm (opens in a new tab) - JavaScript
- revm (opens in a new tab) - Rust
Ek Okumalar
- Ethereum Sarı Raporu (opens in a new tab)
- Jellopaper ya da diğer adıyla KEVM: K'de EVM Semantiği (opens in a new tab)
- Bej Rapor (opens in a new tab)
- Ethereum Sanal Makinesi İşlem Kodları (opens in a new tab)
- Ethereum Sanal Makinesi İşlem Kodları Etkileşimli Referansı (opens in a new tab)
- Solidity'nin dokümantasyonundaki kısa bir giriş (opens in a new tab)
- Mastering Ethereum - Ethereum Sanal Makinesi (opens in a new tab)