Ethereum Sanal Makinesi (EVM)
Son düzenleme: @selcuk45(opens in a new tab), 21 Haziran 2024
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(opens in a new tab), bellek(opens in a new tab) ve yığın(opens in a new tab) gibi bilgisayar bilimlerindeki yaygın terminolojiyi temel seviyede kavramak, EVM'yi anlamak için zorunludur. Ayrıca karmafonksiyonları(opens in a new tab) ve Merkleağaçları(opens in a new tab) 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(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 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(opens in a new tab) 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(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 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(opens in a new tab) 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(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
Daha Fazla Bilgi
- Ethereum Sarı Kağıdı(opens in a new tab)
- Jellopaper ya da diğer adıyla KEVM: K'de EVM Semantiği(opens in a new tab)
- Bej Kağıt(opens in a new tab)
- Ethereum Sanal Makinesi İşlem Kodları(opens in a new tab)
- Ethereum Sanal Makinesi İşlem Kodları İnteraktif Referansı(opens in a new tab)
- Solidity'nin belgelerine kısa bir giriş(opens in a new tab)
- Ethereum'da Uzmanlaşmak - Ethereum Sanal Makinası(opens in a new tab)