Ethereum Virtual Machine (EVM) terdapat dalam setiap node. EVM ini menangani semua proses transaksi, termasuk menjalankan smart contract.
Jika dibandingkan dengan virtual machine lainnya, EVM termasuk lambat, hanya menjalankan 10-20 transaksi per second. Dimana setiap transaksi harus dijalankan dalam setiap node.
EVM adalah Turing Complete, yang artinya dapat mengubah state dan menggunakan bytecode yang di-interpret oleh EVM.
Smart contract juga dalam bentuk bytcode yang dibuat menggunakan high level language, contoh Solidity, Vyper atau LLL. Pada tutorial akan dibahas penggunaan Solidity.
Tipe Penyimpanan Pada EVM
Ada 3 tipe penyimpanan data yaitu:
- Storage adalah harddrive pada node. Data contract akan persistent selamanya, Biaya mahal. Setiap node akan menyimpan data contract tersebut.
- Memory adalah ram pada node. Data persisten hanya pada function call, setelah function selesai, data akan dihapus. Biaya lebih murah.
- Call stack digunakan untuk menyimpan local variable, paling murah. Terbatas.
Hal yang perlu diperhatikan adalah
- Lokasi data akan berbeda tergantung tipe variable.
- Bugs dapat terjadi karena developer tidak menyadari lokasi data yang digunakan.
- State variables selalu disimpan dalam storage.
- Function argument secara default didalam memory.
- Pada tipe struct, array dan mapping dapat dicopy ke memory menggunakan keyword memory.