Pengembangan Web3: Pengembangan Diri untuk Pengembang - Bahasa Smart Contract
Pengenalan Dasar
Smart contract adalah protokol eksekusi otomatis yang berjalan di platform blockchain, yang memungkinkan kedua belah pihak dalam kontrak untuk melakukan transaksi yang dapat dipercaya secara langsung tanpa perantara atau pihak ketiga yang tepercaya, di mana transaksi tersebut dapat dilacak dan tidak dapat dibatalkan. Smart contract berisi fungsi kode dan juga dapat berinteraksi dengan kontrak lain, dan ketika kondisi yang telah ditentukan sebelumnya terpenuhi, smart contract akan secara otomatis mengeksekusi fungsi kode yang ditentukan dalam kontrak.
Konsep smart contract pertama kali diajukan oleh ilmuwan komputer Nick Szabo pada tahun 1990-an, tetapi hingga munculnya blockchain Ethereum, smart contract mulai diterapkan secara luas. Ethereum diluncurkan pada tahun 2015, mendukung penyebaran dan eksekusi smart contract. Berbeda dengan Bitcoin yang terutama digunakan untuk transaksi cryptocurrency yang sederhana, Ethereum dapat membangun aplikasi terdesentralisasi di platform Ethereum menggunakan bahasa pemrograman Turing-complete, sehingga dijuluki sebagai blockchain generasi kedua.
Bahasa kontrak pintar adalah bahasa pemrograman yang digunakan untuk menulis kontrak pintar, yang dikompilasi menjadi bytecode dan dieksekusi di mesin virtual platform kontrak pintar blockchain, untuk mewujudkan kode logika yang telah ditentukan. Sebuah bahasa kontrak pintar harus memungkinkan pengembang untuk mengekspresikan aturan kontrak dengan cara yang aman dan efisien, dan biasanya menyediakan serangkaian alat dan abstraksi untuk menangani transaksi dan status blockchain.
Bahasa Kontrak Pintar
Sebagian besar pengembang smart contract mengembangkan di Ethereum dan blockchain yang kompatibel dengan EVM, sementara Solana adalah ekosistem blockchain non-EVM yang memiliki jumlah pengembang terbanyak, dan Move dirancang khusus untuk mengembangkan smart contract blockchain dengan aman.
Meskipun masih ada banyak blockchain publik lain yang memiliki bahasa smart contract khusus, seperti TON/FunC, Cardano/Plutus, ICP/Motoko, Flow/Cadence, Starknet/Cairo, tetapi terlalu terfragmentasi.
Oleh karena itu, artikel ini akan memperkenalkan bahasa smart contract berdasarkan kategori EVM, Solana, dan Move.
EVM系
EVM adalah inti dari Ethereum, yang bertanggung jawab untuk menjalankan smart contract dan memproses transaksi. Protokol Ethereum menetapkan sebuah bytecode yang berjalan di atas EVM, dan di atasnya dibangun bahasa menengah Yul dan Yul+, yang selanjutnya membangun bahasa tingkat tinggi seperti Solidity/Vyper/Fe, yang ditujukan untuk pengguna front-end untuk mengurangi kesulitan pengembangan smart contract. Manfaat dari penggunaan beberapa lapisan adalah bahasa menengah cocok untuk diterjemahkan ke bahasa mesin, serta cocok untuk optimasi program secara keseluruhan, mudah untuk diperiksa secara manual, melakukan verifikasi formal dan pemeriksaan lainnya, tetapi semakin banyak lapisan yang ada, biaya untuk menjamin kepercayaan yang dapat dibuktikan akan semakin tinggi, setiap lapisan perlu melakukan verifikasi yang sesuai, tentu saja bahasa yang lebih rendah lapisannya lebih sederhana sehingga biaya verifikasinya lebih rendah.
Di Ethereum dan blockchain yang kompatibel dengan EVM, pengembang dapat menggunakan berbagai bahasa pemrograman tingkat tinggi. Saat ini, bahasa yang paling populer dan paling terawat adalah Solidity dan Vyper, selain itu juga bisa memilih Yul, Yul+, Fe, dan Huff.
Solidity pertama kali diusulkan oleh CTO Ethereum, Gavin Wood, pada tahun 2014, dan kemudian dikembangkan oleh tim Ethereum yang dipimpin oleh Christian Reitwiessner. Solidity sebagai bahasa pemrograman berorientasi objek sangat dipengaruhi oleh C++, Python, dan JavaScript, dan dirancang khusus untuk EVM. Untuk mendukung penggunaan kembali kode, kontrak pintar diperlakukan sebagai objek kelas, memanfaatkan pewarisan ganda. Secara khusus, Solidity menetapkan standar antarmuka biner aplikasi (ABI) untuk berinteraksi dengan kontraknya. Saat ini, ABI Solidity dianggap sebagai standar faktual untuk EVM DSL.
Vyper dikembangkan oleh tim Vitalik Buterin, salah satu pendiri Ethereum, sebagai alternatif untuk Solidity, dan diluncurkan pada tahun 2017. Vyper adalah bahasa pemrograman yang mirip dengan Python yang ditujukan untuk kontrak, dan dirancang untuk EVM. Vyper dioptimalkan untuk keamanan, keterbacaan, kemampuan audit, dan efisiensi Gas. Vyper tidak menggunakan pola berorientasi objek dan tidak dapat menggunakan assembly inline.
Yul adalah bahasa rakitan dengan kontrol aliran tingkat tinggi dan banyak abstraksi, bagian dari rangkaian alat Solidity. Sebagian besar fungsi di Yul diekspos melalui blok rakitan inline di Solidity, memungkinkan penggunaan fungsi yang tidak didukung oleh Solidity, serta kustomisasi penyimpanan, memori, dan calldata. Yul+ adalah ekstensi dari Yul yang dapat dianggap sebagai peningkatan eksperimental terhadap Yul.
Fe adalah bahasa tingkat tinggi yang mirip dengan Rust, dirilis pada Januari 2021. Fe tidak menggunakan pola berorientasi objek, melainkan menggunakan sistem berbasis modul untuk mendaur ulang kode, mendeklarasikan variabel, tipe, dan fungsi di dalam modul, dan dapat diimpor dengan cara yang mirip dengan Rust.
Huff adalah bahasa rakitan yang memiliki kontrol tumpukan manual dan abstraksi minimal terhadap kumpulan instruksi EVM. Melalui instruksi「#include」, file Huff yang disertakan dapat dianalisis pada saat kompilasi, sehingga memungkinkan penggunaan kembali kode.
Di Ethereum, sebagian besar kontrak pintar yang dikembangkan berdasarkan Solidity, sekitar 90%, adalah sepuluh kali lipat dari posisi kedua Vyper, sementara Fee karena dimulai lebih lambat, jarang digunakan oleh pengembang. Yul dan Yul+ biasanya berfungsi sebagai blok assembly inline untuk Solidity, memungkinkan akses tingkat rendah ke set instruksi EVM, biasanya digunakan untuk optimasi Gas. Huff lebih rendah daripada Yul/Yul+, dapat mengoperasikan tumpukan secara manual dan memanggil instruksi EVM, biasanya digunakan untuk optimasi batas Gas.
sistem Solana
Solana terkenal karena mekanisme PoH (Proof of History) dan latensi rendah serta throughput tinggi, dan merupakan salah satu "pembunuh Ethereum" yang paling dikenal. Solana juga merupakan salah satu blockchain publik dengan pertumbuhan nilai pasar dan ekosistem tercepat dalam setahun terakhir, yang telah memicu pertumbuhan signifikan dalam komunitas pengembangnya.
Solana menyebut smart contract sebagai program on-chain, yang terutama ditulis dalam bahasa Rust, tetapi berbeda dengan blockchain publik lainnya yang juga menggunakan bahasa Rust, Solana tidak menggunakan runtime WASM. Solana memiliki mesin virtual uniknya sendiri, SVM, dan bytecode SBF.
SVM adalah runtime untuk menjalankan smart contract dan memproses transaksi di jaringan Solana, dengan komponen kunci adalah Sealevel. Sealevel memungkinkan beberapa smart contract untuk berjalan secara bersamaan tanpa mempengaruhi kinerja satu sama lain, sehingga mewujudkan pemrosesan paralel dalam runtime Solana. Smart contract Solana menentukan status (akun) mana yang akan dibaca atau ditulis saat runtime, yang memungkinkan transaksi tanpa konflik untuk dieksekusi secara paralel sambil menjamin konsistensi data.
SBF berbasis eBPF, yang merupakan versi sebelumnya dari BPF (Berkeley Packet Filter), awalnya digunakan untuk penyaringan paket data jaringan secara efisien. eBPF menyediakan kumpulan instruksi yang lebih kaya, memungkinkan intervensi dan modifikasi perilaku kernel sistem operasi secara dinamis tanpa mengubah kode sumber, dengan kinerja tinggi, keamanan, dan portabilitas. SBF, dibandingkan dengan eBPF, menggunakan validator kustom yang tidak hanya akan memverifikasi program untuk memastikan program berhenti dalam sejumlah instruksi tertentu (yaitu masalah penghentian yang terkenal), tetapi juga akan memeriksa apakah instruksi tersebut benar dan apakah ada lompatan yang melampaui batas. Selain validator, SBF juga menyelesaikan beberapa detail eBPF yang sedikit bermasalah untuk kompilasi smart contract.
LLVM (Low Level Virtual Machine) adalah arsitektur kompilasi modern dan rangkaian alat, di mana kompilator dapat menerjemahkan Rust ke dalam bahasa menengah LLVM IR, yang kemudian diterjemahkan oleh LLVM IR menggunakan backend menjadi eBPF untuk platform target. Secara teori, selama bahasa program yang mendukung kompilasi ke LLVM IR, dapat ditulis kontrak pintar Solana, tetapi pada kenyataannya, Solana Labs telah melakukan sejumlah modifikasi pada Rust dan backend eBPF LLVM, beberapa di antaranya pada dasarnya tidak tersedia di hulu (Rust dan LLVM). Pengembangan kontrak Solana saat ini hanya mendukung Rust dan Solang.
Rust dipimpin oleh Mozilla, diluncurkan pada tahun 2011, secara sintaksis mirip dengan C++, merupakan bahasa umum yang dikompilasi secara statis yang dirancang untuk kinerja dan keamanan, terutama keamanan, dan tidak terbatas pada program smart contract. Dibandingkan dengan Solidity, Rust adalah bahasa pemrograman tingkat rendah (low-level) dan multi-paradigma, dengan kinerja tinggi dan keamanan memori. Kompiler resmi Rust adalah rustc, yang melakukan analisis leksikal, analisis sintaksis, dan analisis semantik pada kode sumber Rust, dan akhirnya mengompilasi kode menjadi LLVM IR.
Solang dikembangkan oleh Hyperlege Labs dan diluncurkan pada tahun 2023, merupakan compiler Solidity berbasis arsitektur LLVM untuk Solana dan Polkadot, yang mendukung penulisan smart contract menggunakan Solidity, tetapi sintaksis sebenarnya telah dimodifikasi untuk menjaga konsistensi dengan arsitektur Solana dan Polkadot. Tujuan Solang adalah untuk menyederhanakan transisi pengembang ke Solana atau Polkadot, serta memperluas jangkauan pengembangan Solidity.
Rust adalah bahasa utama yang didukung secara resmi oleh Solana, dengan stabilitas yang lebih kuat; keunggulan utama Solang terletak pada kompatibilitasnya dengan bahasa Solidity.
Move系
Move adalah bahasa pemrograman smart contract baru yang diluncurkan pada tahun 2019, awalnya dikembangkan untuk proyek blockchain Diem milik Meta. Move dirancang untuk mengatasi masalah keamanan dalam aset dan transaksi, sehingga aset dan transaksi dapat didefinisikan dan dikendalikan dengan ketat, dengan ciri-ciri bahasa sebagai berikut:
Perlindungan tipe sumber daya kelas satu (First Class Resources): Tipe sumber daya kelas satu pada awalnya adalah jenis variabel, kemudian menetapkan variabel dari jenis ini: tidak boleh disalin; tidak boleh dihancurkan secara implisit; hanya dapat "Dipindahkan" di alamat program yang berbeda;
Fleksibilitas: Bytecode Move dapat dieksekusi langsung, dan juga dapat memanggil kode Modules lain yang telah diterbitkan, dapat memanggil beberapa program dalam satu transaksi, mampu secara fleksibel melakukan transfer ke banyak orang dalam satu transaksi;
Keamanan dan Verifikasi: Sistem pengkodean Move memberikan perlindungan keamanan yang ditargetkan untuk sumber daya. Sumber daya Move tidak dapat disalin, digunakan kembali, atau dihancurkan. Sebuah tipe sumber daya hanya dapat dibuat atau dihancurkan oleh modul yang mendefinisikan tipenya. Mesin virtual Move akan memverifikasi melalui bytecode statis dan menolak program yang tidak lulus verifikasi bytecode untuk memastikan keamanannya.
Setelah pembubaran proyek Diem, tim pendirinya keluar untuk mendirikan Aptos dan Sui, yang juga menjadikan Move sebagai bahasa smart contract inti. Aptos mewarisi Diem Move (Core Move), sementara Sui menulis smart contract-nya menggunakan versi kustomnya sendiri yang disebut Sui Move.
Dalam Move, setiap smart contract adalah sebuah modul yang terdiri dari fungsi dan definisi struktur, struktur diinstansiasi dalam fungsi, dan dapat diteruskan ke modul lain melalui pemanggilan fungsi. Sui Move dibandingkan dengan Core Move, menggunakan model data berbasis objek, di Sui terdapat tiga jenis objek yang berbeda, yaitu objek pemilik, objek bersama, dan objek tidak dapat diubah. Strategi paralelisasi Sui mirip dengan Solana, transaksi juga perlu menentukan objek mana yang akan dioperasikan, desain ini memungkinkan Sui untuk menangani transaksi bersamaan secara efektif, mewujudkan kemampuan pemrosesan paralel tanpa memerlukan pengurutan global yang dibutuhkan oleh blockchain tradisional.
Kompiler, validator, dan mesin virtual Move semuanya dirancang dari awal. Validator adalah salah satu mekanisme keamanan inti Move, yang digunakan untuk mempertahankan model pemrograman yang berpusat pada sumber daya. Validator Move adalah alat analisis statis yang menganalisis bytecode Move dan menentukan apakah mematuhi aturan keamanan tipe, memori, dan sumber daya yang diperlukan; semua modul yang diunggah ke rantai harus melewati validator.
Dibandingkan dengan bahasa seperti Solidity, Move adalah bahasa yang ramah terhadap verifikasi formal, seperti tidak mendukung fitur penugasan dinamis (dynamic dispatch), semua jalur kontrak dapat ditentukan pada saat kompilasi, tanpa perlu menentukan fungsi yang perlu dieksekusi saat kontrak dijalankan, sehingga memungkinkan analisis dan verifikasi yang memadai.
Move juga memiliki alat verifikasi formal untuk smart contract, yang disebut Move Prover. Pengembang perlu menulis kondisi verifikasi untuk smart contract (dalam bentuk pernyataan), Move Prover akan di belakang layar mengubah kondisi verifikasi ini menjadi formula SMT, kemudian menggunakan penyelesai SMT untuk memeriksa.
Alat Pengembangan Smart Contract
Bagi mereka yang ingin memulai Web3 atau ingin belajar pengembangan kontrak di Ethereum dan blockchain lain yang kompatibel dengan EVM, Solidity adalah pilihan yang tepat. Dan karena popularitas Solidity, alat pengembangan juga menjadi lebih matang, contohnya adalah:
Hardhat adalah lingkungan pengembangan untuk mengompilasi, menerapkan, menguji, dan men-debug aplikasi Ethereum. Membantu pengembang mengelola dan mengotomatisasi tugas berulang yang melekat dalam proses membangun smart contract dan DApps, serta dengan mudah memperkenalkan lebih banyak fitur di sekitar alur kerja ini;
OpenZeppelin menyediakan OpenZeppelin Contracts yang bersifat open source, ditulis dalam Solidity, untuk membangun smart contract yang aman. OpenZeppelin Contracts memungkinkan
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.
12 Suka
Hadiah
12
3
Bagikan
Komentar
0/400
ApeWithNoFear
· 19jam yang lalu
smart contract tidak bisa diatasi, bagaimana saya bisa melakukan ini!
Lihat AsliBalas0
ImpermanentLossFan
· 19jam yang lalu
smart contract bullp gulu... sebenarnya hanya sebuah blok kode
Lihat AsliBalas0
0xOverleveraged
· 19jam yang lalu
Tidak bermain koin virtual, hanya berdagang futures, leverage tinggi yang menarik.
Kursus Wajib untuk Pengembang Web3: Analisis Lengkap Bahasa Smart Contract
Pengembangan Web3: Pengembangan Diri untuk Pengembang - Bahasa Smart Contract
Pengenalan Dasar
Smart contract adalah protokol eksekusi otomatis yang berjalan di platform blockchain, yang memungkinkan kedua belah pihak dalam kontrak untuk melakukan transaksi yang dapat dipercaya secara langsung tanpa perantara atau pihak ketiga yang tepercaya, di mana transaksi tersebut dapat dilacak dan tidak dapat dibatalkan. Smart contract berisi fungsi kode dan juga dapat berinteraksi dengan kontrak lain, dan ketika kondisi yang telah ditentukan sebelumnya terpenuhi, smart contract akan secara otomatis mengeksekusi fungsi kode yang ditentukan dalam kontrak.
Konsep smart contract pertama kali diajukan oleh ilmuwan komputer Nick Szabo pada tahun 1990-an, tetapi hingga munculnya blockchain Ethereum, smart contract mulai diterapkan secara luas. Ethereum diluncurkan pada tahun 2015, mendukung penyebaran dan eksekusi smart contract. Berbeda dengan Bitcoin yang terutama digunakan untuk transaksi cryptocurrency yang sederhana, Ethereum dapat membangun aplikasi terdesentralisasi di platform Ethereum menggunakan bahasa pemrograman Turing-complete, sehingga dijuluki sebagai blockchain generasi kedua.
Bahasa kontrak pintar adalah bahasa pemrograman yang digunakan untuk menulis kontrak pintar, yang dikompilasi menjadi bytecode dan dieksekusi di mesin virtual platform kontrak pintar blockchain, untuk mewujudkan kode logika yang telah ditentukan. Sebuah bahasa kontrak pintar harus memungkinkan pengembang untuk mengekspresikan aturan kontrak dengan cara yang aman dan efisien, dan biasanya menyediakan serangkaian alat dan abstraksi untuk menangani transaksi dan status blockchain.
Bahasa Kontrak Pintar
Sebagian besar pengembang smart contract mengembangkan di Ethereum dan blockchain yang kompatibel dengan EVM, sementara Solana adalah ekosistem blockchain non-EVM yang memiliki jumlah pengembang terbanyak, dan Move dirancang khusus untuk mengembangkan smart contract blockchain dengan aman.
Meskipun masih ada banyak blockchain publik lain yang memiliki bahasa smart contract khusus, seperti TON/FunC, Cardano/Plutus, ICP/Motoko, Flow/Cadence, Starknet/Cairo, tetapi terlalu terfragmentasi.
Oleh karena itu, artikel ini akan memperkenalkan bahasa smart contract berdasarkan kategori EVM, Solana, dan Move.
EVM系
EVM adalah inti dari Ethereum, yang bertanggung jawab untuk menjalankan smart contract dan memproses transaksi. Protokol Ethereum menetapkan sebuah bytecode yang berjalan di atas EVM, dan di atasnya dibangun bahasa menengah Yul dan Yul+, yang selanjutnya membangun bahasa tingkat tinggi seperti Solidity/Vyper/Fe, yang ditujukan untuk pengguna front-end untuk mengurangi kesulitan pengembangan smart contract. Manfaat dari penggunaan beberapa lapisan adalah bahasa menengah cocok untuk diterjemahkan ke bahasa mesin, serta cocok untuk optimasi program secara keseluruhan, mudah untuk diperiksa secara manual, melakukan verifikasi formal dan pemeriksaan lainnya, tetapi semakin banyak lapisan yang ada, biaya untuk menjamin kepercayaan yang dapat dibuktikan akan semakin tinggi, setiap lapisan perlu melakukan verifikasi yang sesuai, tentu saja bahasa yang lebih rendah lapisannya lebih sederhana sehingga biaya verifikasinya lebih rendah.
Di Ethereum dan blockchain yang kompatibel dengan EVM, pengembang dapat menggunakan berbagai bahasa pemrograman tingkat tinggi. Saat ini, bahasa yang paling populer dan paling terawat adalah Solidity dan Vyper, selain itu juga bisa memilih Yul, Yul+, Fe, dan Huff.
Solidity pertama kali diusulkan oleh CTO Ethereum, Gavin Wood, pada tahun 2014, dan kemudian dikembangkan oleh tim Ethereum yang dipimpin oleh Christian Reitwiessner. Solidity sebagai bahasa pemrograman berorientasi objek sangat dipengaruhi oleh C++, Python, dan JavaScript, dan dirancang khusus untuk EVM. Untuk mendukung penggunaan kembali kode, kontrak pintar diperlakukan sebagai objek kelas, memanfaatkan pewarisan ganda. Secara khusus, Solidity menetapkan standar antarmuka biner aplikasi (ABI) untuk berinteraksi dengan kontraknya. Saat ini, ABI Solidity dianggap sebagai standar faktual untuk EVM DSL.
Vyper dikembangkan oleh tim Vitalik Buterin, salah satu pendiri Ethereum, sebagai alternatif untuk Solidity, dan diluncurkan pada tahun 2017. Vyper adalah bahasa pemrograman yang mirip dengan Python yang ditujukan untuk kontrak, dan dirancang untuk EVM. Vyper dioptimalkan untuk keamanan, keterbacaan, kemampuan audit, dan efisiensi Gas. Vyper tidak menggunakan pola berorientasi objek dan tidak dapat menggunakan assembly inline.
Yul adalah bahasa rakitan dengan kontrol aliran tingkat tinggi dan banyak abstraksi, bagian dari rangkaian alat Solidity. Sebagian besar fungsi di Yul diekspos melalui blok rakitan inline di Solidity, memungkinkan penggunaan fungsi yang tidak didukung oleh Solidity, serta kustomisasi penyimpanan, memori, dan calldata. Yul+ adalah ekstensi dari Yul yang dapat dianggap sebagai peningkatan eksperimental terhadap Yul.
Fe adalah bahasa tingkat tinggi yang mirip dengan Rust, dirilis pada Januari 2021. Fe tidak menggunakan pola berorientasi objek, melainkan menggunakan sistem berbasis modul untuk mendaur ulang kode, mendeklarasikan variabel, tipe, dan fungsi di dalam modul, dan dapat diimpor dengan cara yang mirip dengan Rust.
Huff adalah bahasa rakitan yang memiliki kontrol tumpukan manual dan abstraksi minimal terhadap kumpulan instruksi EVM. Melalui instruksi「#include」, file Huff yang disertakan dapat dianalisis pada saat kompilasi, sehingga memungkinkan penggunaan kembali kode.
Di Ethereum, sebagian besar kontrak pintar yang dikembangkan berdasarkan Solidity, sekitar 90%, adalah sepuluh kali lipat dari posisi kedua Vyper, sementara Fee karena dimulai lebih lambat, jarang digunakan oleh pengembang. Yul dan Yul+ biasanya berfungsi sebagai blok assembly inline untuk Solidity, memungkinkan akses tingkat rendah ke set instruksi EVM, biasanya digunakan untuk optimasi Gas. Huff lebih rendah daripada Yul/Yul+, dapat mengoperasikan tumpukan secara manual dan memanggil instruksi EVM, biasanya digunakan untuk optimasi batas Gas.
sistem Solana
Solana terkenal karena mekanisme PoH (Proof of History) dan latensi rendah serta throughput tinggi, dan merupakan salah satu "pembunuh Ethereum" yang paling dikenal. Solana juga merupakan salah satu blockchain publik dengan pertumbuhan nilai pasar dan ekosistem tercepat dalam setahun terakhir, yang telah memicu pertumbuhan signifikan dalam komunitas pengembangnya.
Solana menyebut smart contract sebagai program on-chain, yang terutama ditulis dalam bahasa Rust, tetapi berbeda dengan blockchain publik lainnya yang juga menggunakan bahasa Rust, Solana tidak menggunakan runtime WASM. Solana memiliki mesin virtual uniknya sendiri, SVM, dan bytecode SBF.
SVM adalah runtime untuk menjalankan smart contract dan memproses transaksi di jaringan Solana, dengan komponen kunci adalah Sealevel. Sealevel memungkinkan beberapa smart contract untuk berjalan secara bersamaan tanpa mempengaruhi kinerja satu sama lain, sehingga mewujudkan pemrosesan paralel dalam runtime Solana. Smart contract Solana menentukan status (akun) mana yang akan dibaca atau ditulis saat runtime, yang memungkinkan transaksi tanpa konflik untuk dieksekusi secara paralel sambil menjamin konsistensi data.
SBF berbasis eBPF, yang merupakan versi sebelumnya dari BPF (Berkeley Packet Filter), awalnya digunakan untuk penyaringan paket data jaringan secara efisien. eBPF menyediakan kumpulan instruksi yang lebih kaya, memungkinkan intervensi dan modifikasi perilaku kernel sistem operasi secara dinamis tanpa mengubah kode sumber, dengan kinerja tinggi, keamanan, dan portabilitas. SBF, dibandingkan dengan eBPF, menggunakan validator kustom yang tidak hanya akan memverifikasi program untuk memastikan program berhenti dalam sejumlah instruksi tertentu (yaitu masalah penghentian yang terkenal), tetapi juga akan memeriksa apakah instruksi tersebut benar dan apakah ada lompatan yang melampaui batas. Selain validator, SBF juga menyelesaikan beberapa detail eBPF yang sedikit bermasalah untuk kompilasi smart contract.
LLVM (Low Level Virtual Machine) adalah arsitektur kompilasi modern dan rangkaian alat, di mana kompilator dapat menerjemahkan Rust ke dalam bahasa menengah LLVM IR, yang kemudian diterjemahkan oleh LLVM IR menggunakan backend menjadi eBPF untuk platform target. Secara teori, selama bahasa program yang mendukung kompilasi ke LLVM IR, dapat ditulis kontrak pintar Solana, tetapi pada kenyataannya, Solana Labs telah melakukan sejumlah modifikasi pada Rust dan backend eBPF LLVM, beberapa di antaranya pada dasarnya tidak tersedia di hulu (Rust dan LLVM). Pengembangan kontrak Solana saat ini hanya mendukung Rust dan Solang.
Rust dipimpin oleh Mozilla, diluncurkan pada tahun 2011, secara sintaksis mirip dengan C++, merupakan bahasa umum yang dikompilasi secara statis yang dirancang untuk kinerja dan keamanan, terutama keamanan, dan tidak terbatas pada program smart contract. Dibandingkan dengan Solidity, Rust adalah bahasa pemrograman tingkat rendah (low-level) dan multi-paradigma, dengan kinerja tinggi dan keamanan memori. Kompiler resmi Rust adalah rustc, yang melakukan analisis leksikal, analisis sintaksis, dan analisis semantik pada kode sumber Rust, dan akhirnya mengompilasi kode menjadi LLVM IR.
Solang dikembangkan oleh Hyperlege Labs dan diluncurkan pada tahun 2023, merupakan compiler Solidity berbasis arsitektur LLVM untuk Solana dan Polkadot, yang mendukung penulisan smart contract menggunakan Solidity, tetapi sintaksis sebenarnya telah dimodifikasi untuk menjaga konsistensi dengan arsitektur Solana dan Polkadot. Tujuan Solang adalah untuk menyederhanakan transisi pengembang ke Solana atau Polkadot, serta memperluas jangkauan pengembangan Solidity.
Rust adalah bahasa utama yang didukung secara resmi oleh Solana, dengan stabilitas yang lebih kuat; keunggulan utama Solang terletak pada kompatibilitasnya dengan bahasa Solidity.
Move系
Move adalah bahasa pemrograman smart contract baru yang diluncurkan pada tahun 2019, awalnya dikembangkan untuk proyek blockchain Diem milik Meta. Move dirancang untuk mengatasi masalah keamanan dalam aset dan transaksi, sehingga aset dan transaksi dapat didefinisikan dan dikendalikan dengan ketat, dengan ciri-ciri bahasa sebagai berikut:
Perlindungan tipe sumber daya kelas satu (First Class Resources): Tipe sumber daya kelas satu pada awalnya adalah jenis variabel, kemudian menetapkan variabel dari jenis ini: tidak boleh disalin; tidak boleh dihancurkan secara implisit; hanya dapat "Dipindahkan" di alamat program yang berbeda;
Fleksibilitas: Bytecode Move dapat dieksekusi langsung, dan juga dapat memanggil kode Modules lain yang telah diterbitkan, dapat memanggil beberapa program dalam satu transaksi, mampu secara fleksibel melakukan transfer ke banyak orang dalam satu transaksi;
Keamanan dan Verifikasi: Sistem pengkodean Move memberikan perlindungan keamanan yang ditargetkan untuk sumber daya. Sumber daya Move tidak dapat disalin, digunakan kembali, atau dihancurkan. Sebuah tipe sumber daya hanya dapat dibuat atau dihancurkan oleh modul yang mendefinisikan tipenya. Mesin virtual Move akan memverifikasi melalui bytecode statis dan menolak program yang tidak lulus verifikasi bytecode untuk memastikan keamanannya.
Setelah pembubaran proyek Diem, tim pendirinya keluar untuk mendirikan Aptos dan Sui, yang juga menjadikan Move sebagai bahasa smart contract inti. Aptos mewarisi Diem Move (Core Move), sementara Sui menulis smart contract-nya menggunakan versi kustomnya sendiri yang disebut Sui Move.
Dalam Move, setiap smart contract adalah sebuah modul yang terdiri dari fungsi dan definisi struktur, struktur diinstansiasi dalam fungsi, dan dapat diteruskan ke modul lain melalui pemanggilan fungsi. Sui Move dibandingkan dengan Core Move, menggunakan model data berbasis objek, di Sui terdapat tiga jenis objek yang berbeda, yaitu objek pemilik, objek bersama, dan objek tidak dapat diubah. Strategi paralelisasi Sui mirip dengan Solana, transaksi juga perlu menentukan objek mana yang akan dioperasikan, desain ini memungkinkan Sui untuk menangani transaksi bersamaan secara efektif, mewujudkan kemampuan pemrosesan paralel tanpa memerlukan pengurutan global yang dibutuhkan oleh blockchain tradisional.
Kompiler, validator, dan mesin virtual Move semuanya dirancang dari awal. Validator adalah salah satu mekanisme keamanan inti Move, yang digunakan untuk mempertahankan model pemrograman yang berpusat pada sumber daya. Validator Move adalah alat analisis statis yang menganalisis bytecode Move dan menentukan apakah mematuhi aturan keamanan tipe, memori, dan sumber daya yang diperlukan; semua modul yang diunggah ke rantai harus melewati validator.
Dibandingkan dengan bahasa seperti Solidity, Move adalah bahasa yang ramah terhadap verifikasi formal, seperti tidak mendukung fitur penugasan dinamis (dynamic dispatch), semua jalur kontrak dapat ditentukan pada saat kompilasi, tanpa perlu menentukan fungsi yang perlu dieksekusi saat kontrak dijalankan, sehingga memungkinkan analisis dan verifikasi yang memadai.
Move juga memiliki alat verifikasi formal untuk smart contract, yang disebut Move Prover. Pengembang perlu menulis kondisi verifikasi untuk smart contract (dalam bentuk pernyataan), Move Prover akan di belakang layar mengubah kondisi verifikasi ini menjadi formula SMT, kemudian menggunakan penyelesai SMT untuk memeriksa.
Alat Pengembangan Smart Contract
Bagi mereka yang ingin memulai Web3 atau ingin belajar pengembangan kontrak di Ethereum dan blockchain lain yang kompatibel dengan EVM, Solidity adalah pilihan yang tepat. Dan karena popularitas Solidity, alat pengembangan juga menjadi lebih matang, contohnya adalah:
Hardhat adalah lingkungan pengembangan untuk mengompilasi, menerapkan, menguji, dan men-debug aplikasi Ethereum. Membantu pengembang mengelola dan mengotomatisasi tugas berulang yang melekat dalam proses membangun smart contract dan DApps, serta dengan mudah memperkenalkan lebih banyak fitur di sekitar alur kerja ini;
OpenZeppelin menyediakan OpenZeppelin Contracts yang bersifat open source, ditulis dalam Solidity, untuk membangun smart contract yang aman. OpenZeppelin Contracts memungkinkan