zkEVM Genel Bakış
EVM
EVM’nin çalışmasını kanıtlayan zkEVM’nin nasıl oluşturulacağını anlamak için öncelikle EVM’nin kendisine bakmamız gerekiyor.
EVM, durum geçiş fonksiyonu olarak modellenebilir. Başlangıç dünya durumu S
ve bir T
işlemi verildiğinde, yeni bir dünya durumu S’
: f(S,T) = S'
üreten bir geçiş fonksiyonu f
yi belirtir.
”Dünya durumu”, değiştirilmiş Merkle-Patricia Trie (MPT) olarak modellenmiştir. Bu trie ağın tüm kalıcı verilerini içerir. Bu, tüm harici sahipli hesapların (EOA’lar) ve akıllı sözleşme hesaplarının bilgilerini içerir. Akıllı sözleşme hesapları, akıllı sözleşmenin bytecode’unu ve kalıcı depolamayı tutan alt trie’lere sahiptir.
EVM, ortaya çıkan hesaplamaları yürüterek ve buna göre dünya durumunda değişiklikler yaparak yeni bir işlemi işler. EVM hesaplaması, geçici veri depolarının (stack and memory) yanı sıra kalıcı veri depoları (contract bytecode ve storage) üzerinde de çalışır.

Bireysel bir işlem tarafından tetiklenen hesaplama, EVM’nin doğrudan anlayıp yürütebileceği “opcodes” adı verilen küçük makine talimatlarına bölünür. Her bir opcode’un davranışı Ethereum Yellow Paper’da belirtilmiştir. Bu nedenle bir işlemin yürütülmesi, yalnızca opcode yürütmelerinin sıralı bir listesi olan bir “yürütme izi” ile özetlenebilir. Geth gibi Ethereum yürütme istemcileri, gerçekleştirdiği hesaplama için açıkça adım adım yürütme takibi çıktısı alabilir.

Opcode’lar yürütüldükçe durum trie’si değiştirilir. Bu, yeni bir durum köküne sahip yeni bir durum trie’si sonuçlanır.
Bir EVM yürütmesinin kanıtlanması
zkEVM’nin amacı, bir işlemin yürütülmesinin geçerliliğini doğrulayan bir kanıt oluşturmaktır. Başka bir deyişle, başlangıç dünya durumu S
, bir işlem T
ve sonuçta ortaya çıkan dünya durumu S
verildiğinde, zkEVM’nin f(S,T) = S
olduğuna dair bir kanıt üretmesi gerekir; burada f
, Ethereum Yellow Paper’da belirtilen durum geçiş fonksiyonudur.
Geçiş fonksiyonu yürütmesinin geçerliliğini kanıtlamak için yürütmeyi adım adım yürütme izine böleriz. f(S,T)
nin yürütülmesi, sıralı opcode yürütmelerinin bir listesine genişletilir. Yürütme izi, f(S,T) = S
durum geçişinin doğruluğunu onaylayan bir “tanık” görevi görür - iz, bir anlamda, durumun S
den S'
e nasıl geçiş yaptığını adım adım açıklayan bir açıklamadır.
Daha sonra sorun aşağıdakileri kanıtlamaya indirgenir:
- Yürütme izlemesi doğru.
- Her bir opcode, Ethereum Yellow Paper spesifikasyonuna göre doğru şekilde yürütülür.
- Örneğin,
ADD
opcode’u, yığından iki değerin çıkarılması ve bunların toplamının yığına aktarılmasıyla sonuçlanmalıdır. - Bir kanıt, geçici veri depolarında (stack and memory) veya kalıcı veri depolarında yapılan değişiklikler de dahil olmak üzere her bir opcode’unun uygun davranışla yürütüldüğünü göstermelidir.
- Örneğin,
- Yürütülen opcodelarının sıralı listesi aslında işlem tarafından tetiklenen opcodelarının doğru listesidir.
- Bu, ilk işlem çağrı verilerinin ve çağrılan sözleşmelerin bytecode’unun doğru şekilde yüklenmesini içerir.
- Her bir opcode, Ethereum Yellow Paper spesifikasyonuna göre doğru şekilde yürütülür.
- Yürütme izlemesi başlangıç durumu
S
ile başlar veS
durumuyla sonuçlanır.

Sonraki bölümlerde EVM yürütme izlerinin doğruluğunun nasıl kanıtlanabileceğinin ayrıntılarına gireceğiz.
Daha fazla bilgi edin
- EVM’de Cypherpunk’lar GitBook bölümü
- zkEVM’ye genel bakış - Haichen Shen