Bahasa Move sebagai bahasa kontrak pintar generasi baru, sejak awal perancangannya telah mempertimbangkan masalah keamanan blockchain dan kontrak pintar. Artikel ini akan menganalisis keamanan bahasa Move dari tiga aspek: karakteristik bahasa, mekanisme operasi, dan alat verifikasi.
1. Fitur Keamanan Bahasa Move
Bahasa Move memiliki beberapa fitur keamanan utama berikut:
Meninggalkan penugasan dinamis, pemanggilan eksternal rekursif, dan logika non-linier lainnya, menghindari kerentanan seperti reentrancy.
Menggunakan tipe sumber daya dan mekanisme penyimpanan global, untuk mewujudkan manajemen keamanan penyimpanan dan sumber daya.
Melalui reduksi invarian dan verifier bytecode, melakukan pemeriksaan keamanan ganda pada saat kompilasi
Berikut adalah contoh kontrak Move yang sederhana:
gerak
modul 0x1::TestCoin {
gunakan 0x1::signer;
const ADMIN: address = @0x1;
struct Coin memiliki kunci {
nilai: u64
}
struct Info memiliki kunci {
total_supply: u64
}
invariant forall addr: address where exists<coin>(addr):
global<info>(ADMIN).total_supply >= global<coin>(addr).value;
publik menyenangkan initialize(akun: &penandatangan) {
assert!(signer::address_of(account) == ADMIN, 1);
pindah_ke(akun, Info { total_supply: 0 });
}
publik fun mint(akun: &penandatangan, jumlah: u64): Koin {
assert!(signer::address_of(account) == ADMIN, 1);
let supply = borrow_global_mut\u003cinfo\u003e(ADMIN);
supply.total_supply = supply.total_supply + amount;
Koin { nilai: jumlah }
}
publik fun value_mut(coin: &mut Coin): &mut u64 {
&mut coin.value
}
}
Move menjamin keamanan kode melalui pengurangan invarian dan verifikator bytecode:
Invarian Reduksi: digunakan untuk memeriksa bahwa jumlah nilai semua objek Coin dalam sistem harus sama dengan total_supply di Info.
Verifier bytecode: pemeriksaan tipe yang ketat dan logika linier, mencegah sumber daya dibuat, disalin, atau dihancurkan secara ilegal.
2. Mekanisme Operasi Move
Program Move berjalan di mesin virtual, dengan karakteristik sebagai berikut:
Tidak dapat mengakses memori sistem saat runtime, memastikan berjalan dengan aman di lingkungan yang tidak tepercaya
Menggunakan interpreter berbasis tumpukan untuk mengeksekusi instruksi bytecode, mudah untuk diimplementasikan dan dikendalikan
Memisahkan penyimpanan data dan tumpukan panggilan, meningkatkan keamanan dan efisiensi eksekusi
Sumber daya hanya dapat dipindahkan secara destruktif, tidak dapat disalin.
Status eksekusi program Move terdiri dari quadruple ⟨C, M, G, S⟩:
C: Panggilan tumpukan
M:Memori( tumpukan)
G:Variabel global ( tumpukan )
S: operand
Desain ini memisahkan status pengguna dan logika program, meningkatkan keamanan dan efisiensi eksekusi bersamaan.
3. Pindahkan Prover
Move Prover adalah alat verifikasi formal yang digunakan untuk memastikan kebenaran kontrak pintar. Alur kerjanya adalah sebagai berikut:
Menerima file sumber Move dan spesifikasi sebagai input
Ekstrak spesifikasi dan kompilasi menjadi bytecode
Mengubah menjadi model objek validator
Terjemahkan ke dalam bahasa tengah Boogie
Menghasilkan kondisi verifikasi
Menggunakan pemecah Z3 untuk memverifikasi formula
Menghasilkan laporan diagnosis
Move Prover menggunakan Move Specification Language untuk mendeskripsikan spesifikasi program. Bahasa ini adalah subset dari Move, dan dapat digunakan untuk menulis spesifikasi secara terpisah dari kode bisnis.
Ringkasan
Bahasa Move telah mempertimbangkan keamanan secara menyeluruh dalam aspek fitur bahasa, eksekusi mesin virtual, dan alat keamanan. Ini dapat secara efektif menghindari kerentanan umum seperti reentrancy dan overflow, tetapi masih perlu memperhatikan masalah otorisasi dan logika. Disarankan agar pengembang menggunakan layanan audit pihak ketiga dan menyerahkan penulisan spesifikasi kepada perusahaan keamanan untuk lebih meningkatkan keamanan kontrak.
Halaman ini mungkin berisi konten pihak ketiga, yang disediakan untuk tujuan informasi saja (bukan pernyataan/jaminan) dan tidak boleh dianggap sebagai dukungan terhadap pandangannya oleh Gate, atau sebagai nasihat keuangan atau profesional. Lihat Penafian untuk detailnya.
10 Suka
Hadiah
10
6
Posting ulang
Bagikan
Komentar
0/400
gaslight_gasfeez
· 08-19 03:55
move sudah terbang tinggi, pada akhirnya tetap bergantung pada pengujian
Lihat AsliBalas0
GhostChainLoyalist
· 08-18 16:10
Gerakan ini benar-benar kuat!
Lihat AsliBalas0
LiquidityNinja
· 08-16 06:53
Mekanisme jenis sumber daya memang ada sesuatu!
Lihat AsliBalas0
ProofOfNothing
· 08-16 06:50
Apakah pemain move tua sudah mati?
Lihat AsliBalas0
JustAnotherWallet
· 08-16 06:49
Move cukup bagus ya
Lihat AsliBalas0
rekt_but_not_broke
· 08-16 06:44
Ini lagi serangkaian omong kosong. Apakah performa kerasnya sudah diukur?
Analisis Keamanan Bahasa Move: Fitur, Mekanisme, dan Alat Verifikasi Secara Menyeluruh
Analisis Keamanan Bahasa Move
Bahasa Move sebagai bahasa kontrak pintar generasi baru, sejak awal perancangannya telah mempertimbangkan masalah keamanan blockchain dan kontrak pintar. Artikel ini akan menganalisis keamanan bahasa Move dari tiga aspek: karakteristik bahasa, mekanisme operasi, dan alat verifikasi.
1. Fitur Keamanan Bahasa Move
Bahasa Move memiliki beberapa fitur keamanan utama berikut:
Berikut adalah contoh kontrak Move yang sederhana:
gerak modul 0x1::TestCoin { gunakan 0x1::signer;
}
Move menjamin keamanan kode melalui pengurangan invarian dan verifikator bytecode:
Invarian Reduksi: digunakan untuk memeriksa bahwa jumlah nilai semua objek Coin dalam sistem harus sama dengan total_supply di Info.
Verifier bytecode: pemeriksaan tipe yang ketat dan logika linier, mencegah sumber daya dibuat, disalin, atau dihancurkan secara ilegal.
2. Mekanisme Operasi Move
Program Move berjalan di mesin virtual, dengan karakteristik sebagai berikut:
Status eksekusi program Move terdiri dari quadruple ⟨C, M, G, S⟩:
Desain ini memisahkan status pengguna dan logika program, meningkatkan keamanan dan efisiensi eksekusi bersamaan.
3. Pindahkan Prover
Move Prover adalah alat verifikasi formal yang digunakan untuk memastikan kebenaran kontrak pintar. Alur kerjanya adalah sebagai berikut:
Move Prover menggunakan Move Specification Language untuk mendeskripsikan spesifikasi program. Bahasa ini adalah subset dari Move, dan dapat digunakan untuk menulis spesifikasi secara terpisah dari kode bisnis.
Ringkasan
Bahasa Move telah mempertimbangkan keamanan secara menyeluruh dalam aspek fitur bahasa, eksekusi mesin virtual, dan alat keamanan. Ini dapat secara efektif menghindari kerentanan umum seperti reentrancy dan overflow, tetapi masih perlu memperhatikan masalah otorisasi dan logika. Disarankan agar pengembang menggunakan layanan audit pihak ketiga dan menyerahkan penulisan spesifikasi kepada perusahaan keamanan untuk lebih meningkatkan keamanan kontrak.