Ethereum Sanal Makinesi (EVM)
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, işlemler için gereken bilişim eforunu ölçmek amacıyla "gaz" kullanarak akıllı sözleşmeleri yürütmek için EVM'yi çalıştırır, böylece kaynaklar verimli şekilde paylaştırılır ve ağ güvenliği sağlanır.
Ön koşullar
Bayt, bellek ve yığın gibi bilgisayar bilimlerindeki yaygın terminolojiyi temel seviyede kavramak, EVM'yi anlamak için zorunludur. Ayrıca karmafonksiyonları ve Merkleağaçları gibi kriptografi/blok zincir konseptlerini bilmek faydalı olur.
Defterden 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, Ethereum çok daha güçlü bir fonksiyonu da 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ılmış bir defter değil de dağıtılmış bir durum makinesidir. 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 makine durumunu 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 resmediciden 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 bir durum geçiş fonksiyonuna sahip olarak daha belirgin bir şekilde tanımlamak oldukça yararlıdır:
1Y(S, T)= S'
Eski (S)
geçerli durum ve yeni (T)
geçerli işlem grubu ele alındığında, Ethereum Y(S, T)
durum geçiş fonksiyonu, yeni S'
geçerli çıktı durumu üretir
Durum
Ethereum bağlamında durum, tüm hesapları hash değerleri ile bağlı tutabilen ve blok zincirinde saklanan tek bir kök hash değerine indirgenebilir hâle getirebilen değiştirilmiş Merkle Patricia Ağacı adlı 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ğinde bir yığın makinesi 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 varlığını sürdürmeyen geçici bir bellek (kelime adresli bayt dizisi olarak) tutar.
Ancak sözleşmeler, söz konusu hesap ve küresel durumun bir parçası ile ilişkili bir Merkle Patricia depolama ağacı (kelime adreslenebilir bir kelime dizisi olarak) içerir.
Derlenmiş akıllı sözleşme bayt kodu, XOR
, AND
, ADD
, SUB
vb. gibi standart yığın işlemleri gerçekleştiren bir dizi EVM işlem kodları olarak yürütülür. EVM ayrıca, ADDRESS
, BALANCE
, BLOCKHASH
vb. gibi blok zincirine özgü bir dizi yığın işlemi uygular.
Diyagramlar Ethereum EVM resmediciden uyarlanmıştır
EVM uygulamaları
EVM'nin tüm uygulamaları, Ethereum Sarı Kağıdında açıklanan şartnameye uymalıdır.
Ethereum'un dokuz yıllık geçmişinde, EVM birkaç revizyondan geçmiştir ve çeşitli programlama dillerinde birkaç uygulaması mevcuttur.
Tüm Ethereum yürütme istemcileri bir EVM uygulaması içerir. Ek olarak, çok sayıda bütünsel uygulama da vardır:
- Py-EVM - Python
- evmone - C++
- ethereumjs-vm - JavaScript
- revm-Rust
Daha Fazla Bilgi
- Ethereum Sarı Kağıdı
- Jellopaper ya da diğer adıyla KEVM: K'de EVM Semantiği
- Bej Kağıt
- Ethereum Sanal Makinesi İşlem Kodları
- Ethereum Sanal Makinesi İşlem Kodları İnteraktif Referansı
- Solidity'nin belgelerine kısa bir giriş
- Ethereum'da Uzmanlaşmak - Ethereum Sanal Makinası