Bahasa pemrograman Move awalnya digunakan untuk membangun blockchain Diem. Itu dibuat oleh Diem Association, yang merupakan konsorsium teknologi yang didukung oleh Meta. Meskipun blockchain akhirnya dibuang, Move masih digunakan sampai sekarang.
Bahasa pemrograman Move adalah bahasa bytecode yang dapat dieksekusi. Ini menerapkan kontrak pintar dan transaksi khusus. Move bertujuan untuk mengatasi masalah yang timbul dari bahasa pemrograman blockchain lainnya, seperti Solidity. Namun, tujuan dasar untuk mencapai kelangkaan digital dan kendali atas aset digital tetap sama. Secara khusus, hal ini juga bertujuan untuk mencegah pembelanjaan ganda dan memungkinkan pemegang aset digital untuk menyimpan informasi kepemilikan.
Dengan melakukan hal ini, Move memaksimalkan keselamatan sambil mempertahankan desain yang ramping dan secara signifikan menurunkan biaya bahan bakar dibandingkan blockchain yang tidak dibangun di atas Move.
Bagaimana Cara Kerja Bahasa Pemrograman Move?
Pemindahan menggunakan logika linier, artinya sumber daya hanya dapat digunakan satu kali dan tidak pernah disalin atau dibuang secara implisit. Hal ini memungkinkan pengembang untuk mengkodekan jenis sumber daya khusus yang tidak dapat dihapus atau diduplikasi dan diperlakukan lebih baik daripada yang lain.
Sistem tipe statis Move adalah di mana variabel harus didefinisikan sebagai tipe (angka/kata). Ini melindungi sumber daya yang diprioritaskan. Namun, mereka dapat digunakan seperti elemen biasa dan disimpan dalam struktur data atau diberikan sebagai nilai dalam perhitungan. Sumber daya juga transparan dalam modul dan disembunyikan agar tidak dipanggil oleh sumber eksternal.
Selain itu, modul di Move fleksibel dan aman karena hubungan antar modul, sumber daya, dan prosedur seperti hubungan antar kelas, objek, dan metode dalam pemrograman berorientasi objek.
Move juga dapat memverifikasi semua ciri keselamatan on-chain dan mendukung alat verifikasi statis off-chain. Hal ini sangat mengurangi kerumitan seputar verifikasi on-chain. Desainnya didasarkan pada tiga keputusan inti:
—> Kurangnya pengiriman dinamis menghindari konstruksi grafik panggilan dan memungkinkan penentuan lokasi panggilan secara statis. Hal ini memungkinkan Move untuk mengidentifikasi efek pemanggilan prosedur dengan lebih mudah dan tanpa kerumitan tambahan.
—> Berkat modularitasnya, modul dapat diisolasi untuk verifikasi fungsional, dan membantu mengabstraksi data dan melokalisasi operasi penting pada sumber daya. Keamanan dijamin dengan merangkum modul bersama sistem tipe bahasa, artinya kode di luar modul tidak boleh melanggar tipenya. Selain itu, dengan memeriksa modul yang terisolasi, ini akan memberikan verifikasi fungsional menyeluruh untuk invarian modul yang signifikan.
—> Terakhir, mutabilitasnya yang terbatas memungkinkan penggunaan tipe referensi yang mirip dengan C++. Referensi sangat penting untuk mengubah setiap nilai Pindah, dan biasanya nilai sementara dibuat dan dimusnahkan dalam skrip transkripsi. Mirip dengan Rust, pemverifikasi bytecode Move "meminjam cek" untuk mengonfirmasi setidaknya satu referensi yang bisa berubah.
—> Terakhir, Pindahkan menolak program yang tidak mengikuti keamanan jenis, keamanan memori, dan keamanan sumber daya. Sebagai gantinya, bahasa pemrograman tingkat tinggi dengan kompiler yang bertanggung jawab untuk memeriksa properti dapat digunakan. Alternatifnya adalah perakitan tingkat rendah yang belum diketik dengan pemeriksaan keamanan.
