Dasar
Spot
Perdagangkan kripto dengan bebas
Perdagangan Margin
Perbesar keuntungan Anda dengan leverage
Konversi & Investasi Otomatis
0 Fees
Perdagangkan dalam ukuran berapa pun tanpa biaya dan tanpa slippage
ETF
Dapatkan eksposur ke posisi leverage dengan mudah
Perdagangan Pre-Market
Perdagangkan token baru sebelum listing
Futures
Akses ribuan kontrak perpetual
TradFi
Emas
Satu platform aset tradisional global
Opsi
Hot
Perdagangkan Opsi Vanilla ala Eropa
Akun Terpadu
Memaksimalkan efisiensi modal Anda
Perdagangan Demo
Pengantar tentang Perdagangan Futures
Bersiap untuk perdagangan futures Anda
Acara Futures
Gabung acara & dapatkan hadiah
Perdagangan Demo
Gunakan dana virtual untuk merasakan perdagangan bebas risiko
Peluncuran
CandyDrop
Koleksi permen untuk mendapatkan airdrop
Launchpool
Staking cepat, dapatkan token baru yang potensial
HODLer Airdrop
Pegang GT dan dapatkan airdrop besar secara gratis
Launchpad
Jadi yang pertama untuk proyek token besar berikutnya
Poin Alpha
Perdagangkan aset on-chain, raih airdrop
Poin Futures
Dapatkan poin futures dan klaim hadiah airdrop
Investasi
Simple Earn
Dapatkan bunga dengan token yang menganggur
Investasi Otomatis
Investasi otomatis secara teratur
Investasi Ganda
Keuntungan dari volatilitas pasar
Soft Staking
Dapatkan hadiah dengan staking fleksibel
Pinjaman Kripto
0 Fees
Menjaminkan satu kripto untuk meminjam kripto lainnya
Pusat Peminjaman
Hub Peminjaman Terpadu
Kakarot: Menjelajahi Jalan yang Kompatibel dengan EVM Starknet
Penulis: Sinis
###TL;DR
Apa itu mesin virtual?
Untuk memperjelas apa itu mesin virtual, pertama-tama kita harus berbicara tentang proses eksekusi komputer di bawah arsitektur arus utama von Neumann. Berbagai program yang berjalan di komputer biasanya diubah oleh lapisan bahasa tingkat tinggi, dan akhirnya menghasilkan kode mesin yang dapat dimengerti mesin untuk dieksekusi. Menurut cara mengonversi ke kode mesin, bahasa tingkat tinggi secara kasar dapat dibagi menjadi bahasa yang dikompilasi dan bahasa yang ditafsirkan.
Bahasa yang dikompilasi berarti bahwa setelah kode ditulis, itu perlu diproses oleh kompiler untuk mengubah kode bahasa tingkat tinggi menjadi kode mesin dan menghasilkan file yang dapat dieksekusi. Setelah dikompilasi, itu dapat dieksekusi beberapa kali dengan efisiensi yang lebih tinggi. Keuntungan dari bahasa yang dikompilasi adalah kode telah diubah menjadi kode mesin selama kompilasi, sehingga kecepatan eksekusi cepat, dan program dapat dijalankan di lingkungan tanpa kompiler, yang nyaman digunakan pengguna dan tidak perlu untuk menginstal perangkat lunak tambahan. Bahasa yang dikompilasi umum termasuk C, C++, Go, dll.
Mitra dari bahasa yang dikompilasi adalah bahasa yang ditafsirkan. Bahasa yang ditafsirkan berarti bahwa kode ditafsirkan dan dieksekusi baris demi baris melalui juru bahasa, dan dijalankan langsung di komputer, dan proses terjemahan perlu diterjemahkan ulang setiap kali dijalankan. Keuntungan dari bahasa yang ditafsirkan adalah efisiensi pengembangan yang tinggi dan debugging kode yang mudah, tetapi kecepatan eksekusi relatif lambat. Bahasa yang ditafsirkan umum termasuk Python, Java, Ruby, dll.
Mengetahui proses eksekusi mesin fisik, sekarang mari kita bicara tentang mesin virtual.
Mesin virtual biasanya menyediakan lingkungan komputer virtual dengan mensimulasikan perangkat keras yang berbeda. Perangkat keras yang dapat disimulasikan oleh mesin virtual berbeda berbeda, tetapi umumnya termasuk CPU, memori, hard disk, antarmuka jaringan, dan sebagainya.
Ambil Mesin Virtual Ethereum (EVM) sebagai contoh.EVM adalah mesin virtual berbasis tumpukan yang digunakan untuk mengeksekusi kontrak pintar Ethereum. EVM menyediakan lingkungan komputer virtual dengan mensimulasikan perangkat keras seperti CPU, memori, penyimpanan, dan tumpukan.
Secara khusus, EVM adalah mesin virtual berbasis tumpukan yang menggunakan tumpukan untuk menyimpan data dan menjalankan instruksi. Set instruksi EVM mencakup berbagai opcode, seperti operasi aritmatika, operasi logika, operasi penyimpanan, operasi lompatan, dll. Instruksi ini dapat dijalankan pada tumpukan EVM untuk menyelesaikan eksekusi kontrak cerdas.
Memori dan penyimpanan yang ditiru oleh EVM adalah perangkat yang digunakan untuk menyimpan status dan data kontrak pintar. EVM memperlakukan memori dan penyimpanan sebagai dua area berbeda, dan dapat mengakses status dan data kontrak pintar dengan membaca dan menulis ke memori dan penyimpanan.
Tumpukan yang ditiru oleh EVM digunakan untuk menyimpan operan dan hasil instruksi. Sebagian besar instruksi dalam set instruksi EVM berbasis tumpukan, membaca operan dari tumpukan dan mendorong hasilnya kembali ke tumpukan.
Singkatnya, EVM menyediakan lingkungan komputer virtual dengan mensimulasikan perangkat keras seperti CPU, memori, penyimpanan, dan tumpukan, yang dapat menjalankan instruksi kontrak pintar dan menyimpan status dan data kontrak pintar. Dalam operasi sebenarnya, EVM akan memuat bytecode smart contract ke dalam memori, dan mengeksekusi logika smart contract dengan mengeksekusi set instruksi. Yang sebenarnya diganti oleh EVM adalah bagian dari sistem operasi + perangkat keras pada gambar di atas.
Proses desain EVM jelas dari bawah ke atas. Pertama, lingkungan perangkat keras yang disimulasikan (tumpukan, memori) diselesaikan, dan kemudian satu set set instruksi perakitan (Opcode) dan bytecode (Bytecode) dirancang sesuai dengan lingkungan yang sesuai. . Meskipun set instruksi perakitan adalah untuk dibaca orang, itu melibatkan banyak pengetahuan tingkat rendah, memiliki persyaratan tinggi untuk pengembang, dan tidak praktis untuk dikembangkan.Oleh karena itu, bahasa tingkat tinggi diperlukan untuk melindungi tingkat rendah yang tidak jelas dan rumit panggilan, dan memberi pengembang pengalaman yang lebih baik. Karena desain set instruksi perakitan EVM yang disesuaikan, sulit untuk langsung menggunakan bahasa tingkat tinggi tradisional, dan hanya membuat ulang bahasa tingkat tinggi baru untuk beradaptasi dengan mesin virtual. Komunitas Ethereum telah merancang dua bahasa tingkat tinggi terkompilasi—Solidity dan Vyper—untuk efisiensi eksekusi EVM. Soliditas tidak perlu ditekankan, Vyper adalah bahasa tingkat tinggi EVM yang dirancang oleh Vitalik setelah memperbaiki beberapa kekurangan di Soliditas, tetapi belum banyak diadopsi di komunitas, sehingga lambat laun menghilang dari panggung sejarah.
Apa itu zkEVM
Sederhananya, zkEVM adalah EVM yang menggunakan teknologi zero-knowledge proof/validity proof, sehingga proses eksekusi EVM dapat diverifikasi lebih efisien dan dengan biaya rendah melalui zero-knowledge proof/validity proof tanpa mengharuskan semua verifikator untuk Carry proses eksekusi EVM.
Ada banyak produk zkEVM di pasaran, dan treknya panas. Pemain utama termasuk Starknet, zkSync, Scroll, Taiko, Linea, Polygon zkEVM (sebelumnya Polygon Hermez), dll., Yang dibagi menjadi 5 kategori (1, 2 , 2.5, 3, 4) oleh vitalik . Konten spesifik dapat dilihat di blog Vitalik.
Mengapa zkEVM diperlukan
Pertanyaan ini perlu dilihat dari dua perspektif.
Upaya zk Rollup awal hanya dapat mencapai fungsi transfer dan transaksi yang relatif sederhana, seperti zkSync Lite, Loopring, dll. Tapi begitu lautan terlalu sulit, orang biasa menggunakan Turing-complete EVM di Ethereum Ketika tidak mungkin membuat berbagai aplikasi melalui pemrograman, orang mulai memanggil mesin virtual di L2. Kebutuhan untuk menulis kontrak pintar adalah salah satunya.
Karena beberapa desain di EVM tidak ramah untuk menghasilkan bukti tanpa pengetahuan/bukti validitas, beberapa pemain memilih untuk menggunakan set instruksi yang ramah terhadap bukti tanpa pengetahuan/bukti validitas di lapisan bawah, seperti Starknet’s Cairo Assembly dan zkSync’s Instruksi seng. Tetapi pada saat yang sama, semua orang tidak mau melepaskan ekologi pengguna EVM yang sangat besar, jadi mereka memilih untuk kompatibel dengan EVM di lapisan atas, yaitu zkEVM tipe 3 dan 4. Beberapa pemain masih bersikeras pada set instruksi EVM tradisional Opcode, dan fokus untuk menghasilkan bukti yang lebih efisien untuk Opcode, yaitu zkEVM Tipe 1 dan Tipe 2. Ekologi besar EVM dibagi menjadi dua.
Kakarot: Mesin virtual di mesin virtual?
Mengapa mesin virtual lain dapat dibuat di mesin virtual? Hal ini sudah biasa bagi para praktisi komputer, namun mungkin tidak begitu jelas bagi pengguna yang tidak mengerti komputer. Sebenarnya mudah dimengerti, ini seperti blok bangunan, selama lapisan bawah cukup kuat (dengan lingkungan eksekusi Turing-complete), blok bangunan dapat ditumpuk di lapisan atas tanpa batas. Tetapi tidak peduli berapa banyak lapisan yang dibangun, eksekusi akhir tetap harus ditangani oleh perangkat keras fisik tingkat terendah, sehingga menambah jumlah lapisan akan menyebabkan penurunan efisiensi. Pada saat yang sama, karena desain yang berbeda dari blok bangunan yang berbeda (desain mesin virtual yang berbeda), karena blok bangunan dibangun lebih tinggi dan lebih tinggi, kemungkinan blok bangunan runtuh (kesalahan berjalan) lebih besar, yang membutuhkan tingkat yang lebih tinggi. dukungan teknis.
Kakarot adalah EVM yang diimplementasikan dalam bahasa Kairo di Starknet. Ia menggunakan kontrak pintar Kairo untuk mensimulasikan tumpukan, memori, eksekusi, dll. di EVM. Secara relatif, tidak sulit untuk mengimplementasikan EVM. Selain EVM yang ditulis dalam Golang di Go-Ethereum, yang memiliki tingkat penggunaan tertinggi, ada juga EVM yang ditulis dengan Python, Java, Java, dan Rust.
Kesulitan teknis Kakarot zkEVM adalah bahwa protokol tersebut ada sebagai kontrak pada rantai Starknet, yang menimbulkan dua masalah utama.
Protokol kakarot terdiri dari lima komponen utama (empat ditulis dalam dokumen GitHub, EOA tidak termasuk, artikel ini telah disesuaikan untuk kenyamanan pembaca):
Menurut umpan balik dari CEO kakarot Elias Tazartes, dalam versi terbaru tim, desain Account Resister ditinggalkan, dan sebagai gantinya, pemetaan dari alamat Starknet 31bytes ke alamat EVM 20-bit digunakan secara langsung untuk menyimpan hubungan yang sesuai. . Di masa mendatang, untuk meningkatkan interoperabilitas dan memungkinkan kontrak Starknet mendaftarkan alamat EVM mereka sendiri, desain Daftar Akun dapat digunakan kembali.
Kompatibel dengan EVM di Starknet: Apa perbedaan antara Warp dan kakarot
Menurut tipe zkEVM yang ditentukan oleh Vitalik, Warp milik Tipe-4, sedangkan kakarot saat ini milik Tipe-2.5.
Warp adalah penerjemah yang mengubah kode Solidity menjadi kode Kairo Alasan mengapa tidak disebut kompiler mungkin karena keluaran Kairo masih berupa bahasa tingkat tinggi. Melalui Warp, pengembang Solidity dapat mempertahankan status pengembangan asli tanpa harus mempelajari bahasa Kairo yang baru. Bagi banyak pihak proyek, Warp menurunkan ambang batas untuk memasuki ekosistem Starknet, dan tidak perlu menggunakan Kairo untuk menulis ulang sejumlah besar kode teknik.
Meskipun ide terjemahannya sederhana, kompatibilitasnya juga buruk. Beberapa kode Soliditas tidak dapat diterjemahkan dengan baik ke Kairo. Logika kode yang melibatkan sistem akun, algoritme kriptografi, dll. Perlu memodifikasi kode sumber untuk menyelesaikan migrasi. Fitur spesifik yang tidak didukung dapat dilihat di dokumentasi Warp. Misalnya, banyak proyek akan membedakan logika eksekusi akun EOA dan akun kontrak, tetapi semua akun di Starknet adalah akun kontrak, dan bagian kode ini perlu dimodifikasi sebelum diterjemahkan.
Warp kompatibel di level bahasa tingkat tinggi, dan kakarot kompatibel di level EVM.
Penulisan ulang lengkap EVM dan implementasi Opcode dan Pra-kompilasi satu per satu memungkinkan kakarot memiliki kompatibilitas asli yang lebih tinggi. Lagi pula, eksekusi di mesin virtual yang sama (EVM) selalu lebih kompatibel daripada eksekusi di mesin virtual yang berbeda (Cairo VM). Registri Akun dan Registri Blockhash dengan cerdik melindungi perbedaan di bawah sistem yang berbeda dan meminimalkan gesekan migrasi pengguna.
Tim Kakarot
Terima kasih kepada tim kakarot atas komentar berharga mereka pada artikel ini, khususnya Elias Tazartes. Terima kasih Pak!