Solana adalah platform blockchain kinerja tinggi yang dirancang untuk mendukung dApps, dikenal karena kecepatan dan skalabilitas yang dicapai melalui mekanisme konsensus dan desain arsitektur yang unik. Artikel ini akan secara singkat memperkenalkan fitur model pemrograman kontrak pintar Solana, membandingkannya dengan Ethereum untuk konteks.
Program yang berjalan di Ethereum dikenal sebagai kontrak pintar, yang merupakan serangkaian kode (fungsi) dan data (state) yang terletak di alamat tertentu pada jaringan Ethereum. Kontrak pintar juga merupakan akun Ethereum, yang disebut sebagai akun kontrak. Mereka memiliki saldo, dapat menjadi target transaksi, tetapi tidak dapat dikendalikan oleh individu. Mereka dideploy di jaringan untuk dijalankan sebagai program.
Sebaliknya, kode yang dapat dieksekusi yang berjalan di Solana disebut sebagai Program On-Chain, yang menginterpretasikan instruksi yang dikirim bersama setiap transaksi. Program-program ini dapat diterapkan langsung ke inti jaringan sebagai program asli atau dipublikasikan oleh siapa pun sebagai program SPL.
Instruksi: Instruksi adalah istilah unik untuk program on-chain Solana. Mereka terdiri dari instruksi yang menjalankan operasi spesifik, membentuk unit eksekusi terkecil untuk transaksi Solana. Setiap transaksi Solana berisi satu atau lebih instruksi yang menentukan operasi yang akan dilakukan, termasuk memanggil program on-chain tertentu, melewati akun, daftar input, dan memberikan larik byte. Instruksi memiliki batasan komputasi, oleh karena itu program on-chain harus dioptimalkan untuk menggunakan lebih sedikit unit komputasi atau membagi operasi yang mahal menjadi beberapa instruksi.
Program Asli: Ini menyediakan fungsionalitas esensial yang diperlukan oleh node validator. Yang paling terkenal adalah Program Sistem, bertanggung jawab atas pengelolaan pembuatan akun baru dan transfer SOL antara dua akun.
Program SPL: Ini mendefinisikan serangkaian aktivitas on-chain, termasuk penciptaan token, pertukaran, peminjaman, pembuatan kolam staking, menjaga layanan resolusi nama domain on-chain, dan lainnya. Di antaranya, Program Token SPL digunakan untuk operasi token, sementara program seperti Program Akun Token Terkait umumnya digunakan untuk menulis program kustom lainnya.
Anda menyebutnya kontrak pintar, saya menyebutnya program on-chain. Nama yang berbeda, tetapi keduanya mengacu pada kode yang berjalan di blockchain. Sama halnya dengan bagaimana Zhang San, Li Si, dan Wang Ma Zi semuanya adalah nama, kualitas seseorang juga harus dinilai berdasarkan aspek lainnya.
Mirip dengan Ethereum, Solana juga merupakan blockchain berdasarkan model akun, tetapi Solana menyediakan model akun yang berbeda dari Ethereum, menyimpan data dengan cara yang berbeda.
Di Solana, akun dapat menyimpan informasi dompet dan data lainnya. Bidang yang ditentukan oleh sebuah akun meliputi Lamports (saldo akun), Pemilik (pemilik akun), Eksekutor (apakah itu akun yang dapat dieksekusi), dan Data (data yang disimpan dalam akun). Setiap akun menentukan sebuah program sebagai pemiliknya untuk membedakan status program mana yang disimpannya. Program-program on-chain ini hanya dapat dibaca atau stateless: akun program (akun yang dapat dieksekusi) hanya menyimpan bytecode BPF dan tidak menyimpan status apapun. Program menyimpan status mereka dalam akun independen lainnya (akun non-dapat dieksekusi). Model pemrograman Solana memisahkan kode dan data.
Di sisi lain, akun Ethereum pada dasarnya berfungsi sebagai referensi ke status EVM (Ethereum Virtual Machine). Kontrak pintar di Ethereum mengandung logika kode dan kebutuhan untuk menyimpan data pengguna. Ini sering dianggap sebagai cacat desain yang diwarisi dari sejarah EVM.
Jangan meremehkan perbedaan ini! Kontrak pintar Solana pada dasarnya lebih sulit diserang daripada blockchain dengan model pemrograman terkait, seperti Ethereum:
Di Ethereum, “pemilik” dari kontrak pintar merupakan variabel global yang langsung berkaitan dengan setiap kontrak pintar. Oleh karena itu, memanggil fungsi tertentu dapat langsung mengubah “pemilik” kontrak.
Namun, di Solana, “pemilik” kontrak pintar adalah data yang terkait dengan akun, daripada variabel global. Sebuah akun dapat memiliki beberapa pemilik, alih-alih asosiasi satu lawan satu. Agar seorang penyerang dapat mengeksploitasi kerentanan keamanan dalam kontrak pintar, mereka tidak hanya perlu mengidentifikasi fungsi yang bermasalah tetapi juga menyiapkan akun-akun “benar” untuk memanggil fungsi tersebut. Langkah ini tidak mudah karena kontrak pintar Solana umumnya melibatkan beberapa akun input dan mengelola hubungan mereka melalui batasan (seperti account1.owner==account2.key
Proses dari “mempersiapkan akun yang benar” hingga “meluncurkan serangan” sudah cukup bagi pemantau keamanan untuk mendeteksi transaksi mencurigakan secara proaktif yang melibatkan pembuatan akun “palsu” terkait dengan kontrak pintar sebelum serangan terjadi.
Kontrak pintar Ethereum seperti sebuah brankas dengan satu kata sandi unik. Begitu Anda memiliki kata sandi ini, Anda mendapatkan kepemilikan lengkap. Solana, di sisi lain, seperti brankas dengan banyak kata sandi. Untuk mendapatkan akses, Anda tidak hanya perlu mendapatkan kata sandi tetapi juga memahami pengidentifikasi yang sesuai sebelum Anda dapat membuka pintunya.
Rust adalah bahasa pemrograman utama untuk mengembangkan kontrak pintar di Solana. Kinerjanya dan fitur keamanannya membuatnya cocok untuk lingkungan berisiko tinggi dari blockchain dan kontrak pintar. Solana juga mendukung C, C++, dan bahasa lainnya (meskipun kurang umum). SDK resmi Rust dan C disediakan untuk mendukung pengembangan program on-chain. Pengembang dapat menggunakan alat untuk mengompilasi program ke dalam bytecode Berkeley Packet Filter (file dengan ekstensi .so) dan mendeploynya ke blockchain Solana. Logika kontrak pintar kemudian dieksekusi melalui runtime kontrak pintar paralel Sealevel.
Namun, karena tingkat pembelajaran yang tinggi dari bahasa Rust dan kurangnya penyesuaian untuk pengembangan blockchain, banyak kebutuhan menghasilkan kode yang redundan dan menemukan kembali roda. Untuk menyederhanakan pengembangan, banyak proyek di produksi menggunakan kerangka Anchor yang dibuat oleh kolaborasi Backpack dan Armani. Selain itu, beberapa bahasa pemrograman baru yang dirancang khusus untuk pengembangan blockchain, seperti Cairo (Starknet) dan Move (Sui, Aptos), didasarkan pada Rust.
Banyak proyek di produksi menggunakan kerangka kerja Anchor.
Kontrak pintar Ethereum pada dasarnya dikembangkan menggunakan bahasa Solidity, yang memiliki sintaks yang mirip dengan JavaScript, dengan file kode berakhiran .sol. Karena sintaksnya yang relatif sederhana dan alat pengembangan yang lebih matang (seperti kerangka kerja Hardhat dan IDE Remix), Ethereum umumnya dianggap menawarkan pengalaman pengembangan yang lebih sederhana dan menyenangkan dibandingkan dengan Solana, yang memiliki tingkat pembelajaran yang lebih tinggi. Meskipun popularitas Solana saat ini, jumlah pengembang di Ethereum tetap jauh lebih besar dari pada di Solana.
Dalam keadaan tertentu, mobil balap kelas atas akan melampaui mobil yang dimodifikasi. Karat, seperti mobil balap kelas atas, secara efektif memastikan kinerja dan keamanan Solana. Namun, karat sebenarnya tidak dirancang untuk pengembangan program on-chain, yang justru meningkatkan tingkat kesulitan dalam mengemudi (mengembangkan). Rantai publik yang mengadopsi bahasa berbasis Rust dan disesuaikan untuk pengembangan on-chain dapat disamakan dengan memodifikasi mobil balap ini agar lebih cocok dengan kondisi jalan. Solana kalah dalam hal ini.
Model pemrograman kontrak pintar Solana inovatif. Ini menawarkan pendekatan tanpa status untuk pengembangan kontrak pintar, dengan Rust sebagai bahasa pemrograman utama dan arsitektur yang memisahkan logika dari status. Hal ini memberikan lingkungan yang kuat bagi pengembang untuk membangun dan mendeploy kontrak pintar, memastikan keamanan dan kinerja, meskipun dengan tingkat kesulitan pengembangan yang lebih besar. Solana berfokus pada throughput tinggi, biaya rendah, dan skalabilitas, menjadikannya pilihan ideal bagi pengembang yang ingin membuat dApps berkinerja tinggi.
Artikel ini direproduksi dari [Panews], judul asli "Nenek saya juga bisa mengerti: Apa perbedaan antara model pemrograman Solana dan ETH?", hak cipta milik penulis asli [Foresight News, Alex Liu], jika Anda memiliki keberatan terhadap pencetakan ulang, silakan hubungi Tim Pembelajaran Gate, tim akan menanganinya sesegera mungkin sesuai dengan prosedur yang relevan.
Penyangkalan: Pandangan dan opini yang terdapat dalam artikel ini hanya mewakili pandangan pribadi penulis dan tidak merupakan saran investasi apa pun.
Versi bahasa lain dari artikel diterjemahkan oleh tim Gate Learn, tidak disebutkan dalam Gate.io, artikel yang diterjemahkan tidak boleh direproduksi, didistribusikan, atau diplagiat.
Solana adalah platform blockchain kinerja tinggi yang dirancang untuk mendukung dApps, dikenal karena kecepatan dan skalabilitas yang dicapai melalui mekanisme konsensus dan desain arsitektur yang unik. Artikel ini akan secara singkat memperkenalkan fitur model pemrograman kontrak pintar Solana, membandingkannya dengan Ethereum untuk konteks.
Program yang berjalan di Ethereum dikenal sebagai kontrak pintar, yang merupakan serangkaian kode (fungsi) dan data (state) yang terletak di alamat tertentu pada jaringan Ethereum. Kontrak pintar juga merupakan akun Ethereum, yang disebut sebagai akun kontrak. Mereka memiliki saldo, dapat menjadi target transaksi, tetapi tidak dapat dikendalikan oleh individu. Mereka dideploy di jaringan untuk dijalankan sebagai program.
Sebaliknya, kode yang dapat dieksekusi yang berjalan di Solana disebut sebagai Program On-Chain, yang menginterpretasikan instruksi yang dikirim bersama setiap transaksi. Program-program ini dapat diterapkan langsung ke inti jaringan sebagai program asli atau dipublikasikan oleh siapa pun sebagai program SPL.
Instruksi: Instruksi adalah istilah unik untuk program on-chain Solana. Mereka terdiri dari instruksi yang menjalankan operasi spesifik, membentuk unit eksekusi terkecil untuk transaksi Solana. Setiap transaksi Solana berisi satu atau lebih instruksi yang menentukan operasi yang akan dilakukan, termasuk memanggil program on-chain tertentu, melewati akun, daftar input, dan memberikan larik byte. Instruksi memiliki batasan komputasi, oleh karena itu program on-chain harus dioptimalkan untuk menggunakan lebih sedikit unit komputasi atau membagi operasi yang mahal menjadi beberapa instruksi.
Program Asli: Ini menyediakan fungsionalitas esensial yang diperlukan oleh node validator. Yang paling terkenal adalah Program Sistem, bertanggung jawab atas pengelolaan pembuatan akun baru dan transfer SOL antara dua akun.
Program SPL: Ini mendefinisikan serangkaian aktivitas on-chain, termasuk penciptaan token, pertukaran, peminjaman, pembuatan kolam staking, menjaga layanan resolusi nama domain on-chain, dan lainnya. Di antaranya, Program Token SPL digunakan untuk operasi token, sementara program seperti Program Akun Token Terkait umumnya digunakan untuk menulis program kustom lainnya.
Anda menyebutnya kontrak pintar, saya menyebutnya program on-chain. Nama yang berbeda, tetapi keduanya mengacu pada kode yang berjalan di blockchain. Sama halnya dengan bagaimana Zhang San, Li Si, dan Wang Ma Zi semuanya adalah nama, kualitas seseorang juga harus dinilai berdasarkan aspek lainnya.
Mirip dengan Ethereum, Solana juga merupakan blockchain berdasarkan model akun, tetapi Solana menyediakan model akun yang berbeda dari Ethereum, menyimpan data dengan cara yang berbeda.
Di Solana, akun dapat menyimpan informasi dompet dan data lainnya. Bidang yang ditentukan oleh sebuah akun meliputi Lamports (saldo akun), Pemilik (pemilik akun), Eksekutor (apakah itu akun yang dapat dieksekusi), dan Data (data yang disimpan dalam akun). Setiap akun menentukan sebuah program sebagai pemiliknya untuk membedakan status program mana yang disimpannya. Program-program on-chain ini hanya dapat dibaca atau stateless: akun program (akun yang dapat dieksekusi) hanya menyimpan bytecode BPF dan tidak menyimpan status apapun. Program menyimpan status mereka dalam akun independen lainnya (akun non-dapat dieksekusi). Model pemrograman Solana memisahkan kode dan data.
Di sisi lain, akun Ethereum pada dasarnya berfungsi sebagai referensi ke status EVM (Ethereum Virtual Machine). Kontrak pintar di Ethereum mengandung logika kode dan kebutuhan untuk menyimpan data pengguna. Ini sering dianggap sebagai cacat desain yang diwarisi dari sejarah EVM.
Jangan meremehkan perbedaan ini! Kontrak pintar Solana pada dasarnya lebih sulit diserang daripada blockchain dengan model pemrograman terkait, seperti Ethereum:
Di Ethereum, “pemilik” dari kontrak pintar merupakan variabel global yang langsung berkaitan dengan setiap kontrak pintar. Oleh karena itu, memanggil fungsi tertentu dapat langsung mengubah “pemilik” kontrak.
Namun, di Solana, “pemilik” kontrak pintar adalah data yang terkait dengan akun, daripada variabel global. Sebuah akun dapat memiliki beberapa pemilik, alih-alih asosiasi satu lawan satu. Agar seorang penyerang dapat mengeksploitasi kerentanan keamanan dalam kontrak pintar, mereka tidak hanya perlu mengidentifikasi fungsi yang bermasalah tetapi juga menyiapkan akun-akun “benar” untuk memanggil fungsi tersebut. Langkah ini tidak mudah karena kontrak pintar Solana umumnya melibatkan beberapa akun input dan mengelola hubungan mereka melalui batasan (seperti account1.owner==account2.key
Proses dari “mempersiapkan akun yang benar” hingga “meluncurkan serangan” sudah cukup bagi pemantau keamanan untuk mendeteksi transaksi mencurigakan secara proaktif yang melibatkan pembuatan akun “palsu” terkait dengan kontrak pintar sebelum serangan terjadi.
Kontrak pintar Ethereum seperti sebuah brankas dengan satu kata sandi unik. Begitu Anda memiliki kata sandi ini, Anda mendapatkan kepemilikan lengkap. Solana, di sisi lain, seperti brankas dengan banyak kata sandi. Untuk mendapatkan akses, Anda tidak hanya perlu mendapatkan kata sandi tetapi juga memahami pengidentifikasi yang sesuai sebelum Anda dapat membuka pintunya.
Rust adalah bahasa pemrograman utama untuk mengembangkan kontrak pintar di Solana. Kinerjanya dan fitur keamanannya membuatnya cocok untuk lingkungan berisiko tinggi dari blockchain dan kontrak pintar. Solana juga mendukung C, C++, dan bahasa lainnya (meskipun kurang umum). SDK resmi Rust dan C disediakan untuk mendukung pengembangan program on-chain. Pengembang dapat menggunakan alat untuk mengompilasi program ke dalam bytecode Berkeley Packet Filter (file dengan ekstensi .so) dan mendeploynya ke blockchain Solana. Logika kontrak pintar kemudian dieksekusi melalui runtime kontrak pintar paralel Sealevel.
Namun, karena tingkat pembelajaran yang tinggi dari bahasa Rust dan kurangnya penyesuaian untuk pengembangan blockchain, banyak kebutuhan menghasilkan kode yang redundan dan menemukan kembali roda. Untuk menyederhanakan pengembangan, banyak proyek di produksi menggunakan kerangka Anchor yang dibuat oleh kolaborasi Backpack dan Armani. Selain itu, beberapa bahasa pemrograman baru yang dirancang khusus untuk pengembangan blockchain, seperti Cairo (Starknet) dan Move (Sui, Aptos), didasarkan pada Rust.
Banyak proyek di produksi menggunakan kerangka kerja Anchor.
Kontrak pintar Ethereum pada dasarnya dikembangkan menggunakan bahasa Solidity, yang memiliki sintaks yang mirip dengan JavaScript, dengan file kode berakhiran .sol. Karena sintaksnya yang relatif sederhana dan alat pengembangan yang lebih matang (seperti kerangka kerja Hardhat dan IDE Remix), Ethereum umumnya dianggap menawarkan pengalaman pengembangan yang lebih sederhana dan menyenangkan dibandingkan dengan Solana, yang memiliki tingkat pembelajaran yang lebih tinggi. Meskipun popularitas Solana saat ini, jumlah pengembang di Ethereum tetap jauh lebih besar dari pada di Solana.
Dalam keadaan tertentu, mobil balap kelas atas akan melampaui mobil yang dimodifikasi. Karat, seperti mobil balap kelas atas, secara efektif memastikan kinerja dan keamanan Solana. Namun, karat sebenarnya tidak dirancang untuk pengembangan program on-chain, yang justru meningkatkan tingkat kesulitan dalam mengemudi (mengembangkan). Rantai publik yang mengadopsi bahasa berbasis Rust dan disesuaikan untuk pengembangan on-chain dapat disamakan dengan memodifikasi mobil balap ini agar lebih cocok dengan kondisi jalan. Solana kalah dalam hal ini.
Model pemrograman kontrak pintar Solana inovatif. Ini menawarkan pendekatan tanpa status untuk pengembangan kontrak pintar, dengan Rust sebagai bahasa pemrograman utama dan arsitektur yang memisahkan logika dari status. Hal ini memberikan lingkungan yang kuat bagi pengembang untuk membangun dan mendeploy kontrak pintar, memastikan keamanan dan kinerja, meskipun dengan tingkat kesulitan pengembangan yang lebih besar. Solana berfokus pada throughput tinggi, biaya rendah, dan skalabilitas, menjadikannya pilihan ideal bagi pengembang yang ingin membuat dApps berkinerja tinggi.
Artikel ini direproduksi dari [Panews], judul asli "Nenek saya juga bisa mengerti: Apa perbedaan antara model pemrograman Solana dan ETH?", hak cipta milik penulis asli [Foresight News, Alex Liu], jika Anda memiliki keberatan terhadap pencetakan ulang, silakan hubungi Tim Pembelajaran Gate, tim akan menanganinya sesegera mungkin sesuai dengan prosedur yang relevan.
Penyangkalan: Pandangan dan opini yang terdapat dalam artikel ini hanya mewakili pandangan pribadi penulis dan tidak merupakan saran investasi apa pun.
Versi bahasa lain dari artikel diterjemahkan oleh tim Gate Learn, tidak disebutkan dalam Gate.io, artikel yang diterjemahkan tidak boleh direproduksi, didistribusikan, atau diplagiat.