Ana içeriğe geç
Change page

Ethereum Sanal Makinesi (EVM)

Son düzenleme: , 25 Eylül 2023

EVM'nin fiziksel varlığı, bir buluta veya bir okyanus dalgasına benzetilerek açıklanamaz ama EVM, bir Ethereum istemcisi çalıştıran binlerce bağlı bilgisayar tarafından sürdürülen tek bir varlık olarak var olmaktadır.

Ethereum protokolünün kendisi, yalnızca bu özel durum makinesinin sürekli devam eden, kesintisiz ve değiştirilemez işlemlerini sürdürmek amacıyla vardır. Ethereum protokolü tüm Ethereum hesaplarının ve akıllı sözleşmelerinin bulunması için olan ortamdır. Ethereum, zincirdeki tüm bloklarda sadece tek bir "kurallı" duruma sahiptir ve EVM, bloktan bloka yeni geçerli durum hesaplama kurallarını belirler.

Ö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.

EVM'nin oluşumunu gösteren bir diyagram 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.

EVM operasyonlarında gazın nerede gerekli olduğunu gösteren bir diyagram 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:

Daha Fazla Bilgi

Bu makale yararlı oldu mu?