Analisis Keamanan Bahasa Move: Pelopor Bahasa Kontrak Pintar Generasi Baru
Bahasa Move sebagai bahasa kontrak pintar yang baru, pada awal perancangannya telah mempertimbangkan masalah keamanan blockchain dan kontrak pintar, serta mengadopsi beberapa konsep desain keamanan dari bahasa Rust. Artikel ini akan membahas keamanan bahasa Move dari tiga aspek: karakteristik bahasa, mekanisme operasional, dan alat verifikasi.
1. Fitur keamanan bahasa Move
Bahasa Move dirancang dengan mengabaikan banyak logika non-linier yang didasarkan pada pertimbangan fleksibilitas, tidak mendukung pemanggilan eksternal yang dinamis dan rekursif, melainkan memperkenalkan konsep generik, penyimpanan global, sumber daya, dan lain-lain untuk mewujudkan pola pemrograman alternatif. Fitur-fitur ini membantu menghindari kerentanan umum seperti reentrancy yang terdapat pada bahasa smart contract lainnya.
Komponen utama dari bahasa Move meliputi:
Modul (Module): terdiri dari serangkaian jenis struktur dan definisi proses
Struktur (Structs): dapat didefinisikan sebagai jenis sumber daya, disimpan dalam penyimpanan kunci/nilai global yang persisten
proses (function ): mendefinisikan fungsi spesifik dari kontrak
Dua konsep penting dalam bahasa Move adalah tipe sumber daya dan penyimpanan global. Penyimpanan global memungkinkan program Move untuk menyimpan data permanen, yang hanya dapat dibaca dan ditulis secara terprogram oleh modul yang memilikinya, tetapi disimpan dalam buku besar publik untuk dapat dilihat. Tipe sumber daya memastikan akses eksklusif ke penyimpanan global.
Bahasa Move memastikan keamanan kode saat dikompilasi melalui dua mekanisme: pemeriksaan ketidakberdayaan dan validator bytecode:
Pemeriksaan invarian: Mendefinisikan konservasi status sistem melalui bahasa spesifikasi
Verifikator bytecode: melakukan verifikasi tipe keamanan dan linearitas, termasuk pemeriksaan keabsahan struktur, deteksi semantik logika proses, dan pemeriksaan kesalahan saat penghubungan, dan lain-lain.
2. Mekanisme Operasi Move
Program Move dijalankan di dalam mesin virtual, dan tidak dapat mengakses memori sistem saat dijalankan, ini menjamin operasi yang aman di lingkungan yang tidak dipercaya.
Program Move dijalankan di tumpukan, statusnya terdiri dari tumpukan panggilan, memori, variabel global, dan operasi. Instruksi bytecode Move dijalankan dalam interpreter berbasis tumpukan, yang menguntungkan untuk pengendalian penyalinan dan pemindahan antar variabel.
Move VM memisahkan penyimpanan data dan tumpukan panggilan, yang sangat berbeda dari EVM. Penyimpanan status pengguna bersifat independen, panggilan program harus mematuhi aturan izin dan sumber daya, yang meningkatkan keamanan dan efisiensi eksekusi meskipun牺牲一定灵活性.
3. Pindahkan Prover
Move Prover adalah alat verifikasi formal yang disediakan oleh bahasa Move, menggunakan algoritma verifikasi deduktif untuk memeriksa apakah program sesuai dengan yang diharapkan. Alur kerjanya adalah sebagai berikut:
Menerima file sumber Move dan standar sebagai input
Mengambil spesifikasi dan mengompilasi file sumber menjadi bytecode
Mengubah menjadi model objek validator
Terjemahkan ke dalam bahasa tengah Boogie
Menghasilkan kondisi verifikasi
Menggunakan Z3 solver untuk memeriksa satisfiabilitas formula
Menghasilkan laporan diagnosis
Move Prover menggunakan Move Specification Language untuk mendeskripsikan sistem spesifikasi, adalah subset dari bahasa Move.
Ringkasan
Bahasa Move telah mempertimbangkan keamanan secara menyeluruh dalam hal fitur bahasa, eksekusi mesin virtual, dan alat keamanan. Ini dapat secara efektif menghindari kerentanan umum seperti reentrancy, overflow, dan injection, tetapi masih tidak dapat sepenuhnya menghindari masalah otorisasi dan logika. Disarankan agar pengembang smart contract Move menggunakan layanan audit keamanan pihak ketiga dan meminta penulisan kode spesifikasi verifikasi.
This page may contain third-party content, which is provided for information purposes only (not representations/warranties) and should not be considered as an endorsement of its views by Gate, nor as financial or professional advice. See Disclaimer for details.
11 Suka
Hadiah
11
6
Bagikan
Komentar
0/400
gas_fee_trauma
· 10jam yang lalu
Pekerjaan ini bahkan belum setengah dari solidity.
Lihat AsliBalas0
PuzzledScholar
· 20jam yang lalu
Kalian yang mengurus keamanan kenapa begitu serius sih? Ada Verifikasi Formal.
Lihat AsliBalas0
MemeCurator
· 20jam yang lalu
move benar-benar hebat~
Lihat AsliBalas0
HappyMinerUncle
· 20jam yang lalu
Keamanannya memang bagus sekali
Lihat AsliBalas0
10uMadeItsFortune
· 20jam yang lalu
Sampah mati satu
Lihat AsliBalas0
GasWastingMaximalist
· 20jam yang lalu
Keamanan tetap harus bergantung pada audit sebagai jaminan.
Analisis Keamanan Bahasa Move: Tiga Pilar Standar Baru untuk Smart Contract
Analisis Keamanan Bahasa Move: Pelopor Bahasa Kontrak Pintar Generasi Baru
Bahasa Move sebagai bahasa kontrak pintar yang baru, pada awal perancangannya telah mempertimbangkan masalah keamanan blockchain dan kontrak pintar, serta mengadopsi beberapa konsep desain keamanan dari bahasa Rust. Artikel ini akan membahas keamanan bahasa Move dari tiga aspek: karakteristik bahasa, mekanisme operasional, dan alat verifikasi.
1. Fitur keamanan bahasa Move
Bahasa Move dirancang dengan mengabaikan banyak logika non-linier yang didasarkan pada pertimbangan fleksibilitas, tidak mendukung pemanggilan eksternal yang dinamis dan rekursif, melainkan memperkenalkan konsep generik, penyimpanan global, sumber daya, dan lain-lain untuk mewujudkan pola pemrograman alternatif. Fitur-fitur ini membantu menghindari kerentanan umum seperti reentrancy yang terdapat pada bahasa smart contract lainnya.
Komponen utama dari bahasa Move meliputi:
Dua konsep penting dalam bahasa Move adalah tipe sumber daya dan penyimpanan global. Penyimpanan global memungkinkan program Move untuk menyimpan data permanen, yang hanya dapat dibaca dan ditulis secara terprogram oleh modul yang memilikinya, tetapi disimpan dalam buku besar publik untuk dapat dilihat. Tipe sumber daya memastikan akses eksklusif ke penyimpanan global.
Bahasa Move memastikan keamanan kode saat dikompilasi melalui dua mekanisme: pemeriksaan ketidakberdayaan dan validator bytecode:
2. Mekanisme Operasi Move
Program Move dijalankan di dalam mesin virtual, dan tidak dapat mengakses memori sistem saat dijalankan, ini menjamin operasi yang aman di lingkungan yang tidak dipercaya.
Program Move dijalankan di tumpukan, statusnya terdiri dari tumpukan panggilan, memori, variabel global, dan operasi. Instruksi bytecode Move dijalankan dalam interpreter berbasis tumpukan, yang menguntungkan untuk pengendalian penyalinan dan pemindahan antar variabel.
Move VM memisahkan penyimpanan data dan tumpukan panggilan, yang sangat berbeda dari EVM. Penyimpanan status pengguna bersifat independen, panggilan program harus mematuhi aturan izin dan sumber daya, yang meningkatkan keamanan dan efisiensi eksekusi meskipun牺牲一定灵活性.
3. Pindahkan Prover
Move Prover adalah alat verifikasi formal yang disediakan oleh bahasa Move, menggunakan algoritma verifikasi deduktif untuk memeriksa apakah program sesuai dengan yang diharapkan. Alur kerjanya adalah sebagai berikut:
Move Prover menggunakan Move Specification Language untuk mendeskripsikan sistem spesifikasi, adalah subset dari bahasa Move.
Ringkasan
Bahasa Move telah mempertimbangkan keamanan secara menyeluruh dalam hal fitur bahasa, eksekusi mesin virtual, dan alat keamanan. Ini dapat secara efektif menghindari kerentanan umum seperti reentrancy, overflow, dan injection, tetapi masih tidak dapat sepenuhnya menghindari masalah otorisasi dan logika. Disarankan agar pengembang smart contract Move menggunakan layanan audit keamanan pihak ketiga dan meminta penulisan kode spesifikasi verifikasi.