Menjelajahi Model Pemrograman Solana Smart Contract

PemulaJun 11, 2024
Solana adalah platform blockchain berkinerja tinggi yang dirancang untuk dukungan dApps. Dikenal karena kecepatan dan skalabilitasnya, dicapai melalui mekanisme konsensus yang unik dan desain arsitektur. Artikel ini menggunakan Ethereum sebagai objek perbandingan untuk secara singkat memperkenalkan karakteristik model pemrograman kontrak pintar Solana.
Menjelajahi Model Pemrograman Solana Smart Contract

Teruskan judul asli '小学生也能看懂!Solana 的编程模型,究竟和 ETH 有啥区别?'

Solana adalah platform blockchain berkinerja tinggi yang dirancang untuk dukungan dApps. Dikenal karena kecepatan dan skalabilitasnya, dicapai melalui mekanisme konsensus yang unik dan desain arsitektur. Artikel ini menggunakan Ethereum sebagai objek perbandingan untuk memperkenalkan secara singkat karakteristik model pemrograman kontrak pintar Solana.

Smart contracts and on-chain programs:

Program yang berjalan di Ethereum disebut smart contract, serangkaian kode (fungsi) yang terletak di alamat tertentu pada Ethereum dan data(state). (Oh, kode dan data digabungkan) Kontrak pintar juga merupakan akun Ethereum, yang disebut akun kontrak. Mereka memiliki saldo dan dapat menjadi objek transaksi, tetapi mereka tidak dapat dikendalikan oleh manusia dan digunakan di jaringan untuk dijalankan sebagai program.

Kode eksekusi yang berjalan pada Solana disebut program on-chain, dan mereka dapat menafsirkan instruksi yang dikirim dalam setiap transaksi. Program-program ini dapat digunakan langsung ke inti jaringan sebagai program asli, atau diterbitkan oleh siapa saja sebagai program SPL.

  1. Instruksi: Instruksi adalah istilah unik untuk program di rantai Solana. Program on-chain terdiri dari instruksi. Mereka adalah unit terkecil yang melakukan operasi tertentu: satu atau lebih instruksi disertakan dalam setiap transaksi Solana. Instruksi menentukan tindakan yang akan dilakukan, termasuk memanggil program on-chain tertentu, meneruskan akun, list input, dan menyediakan array byte. Instruksi memiliki kendala komputasi, sehingga program on-chain harus dioptimalkan untuk menggunakan sejumlah kecil unit komputasi atau untuk membagi operasi yang mahal menjadi beberapa instruksi.

  1. Program asli: Ini adalah program yang menyediakan fungsionalitas yang diperlukan untuk memvalidasi node. Yang paling menonjol adalah Program Sistem, yang bertanggung jawab untuk mengelola pembuatan akun baru dan mentransfer SOL antara dua akun.
  2. Program SPL: Ini menentukan serangkaian aktivitas on-chain, termasuk pembuatan, pertukaran, dan peminjaman token, serta pembuatan kumpulan staking dan pemeliharaan layanan resolusi nama domain on-chain. Di antaranya, Program Token SPL digunakan untuk operasi token, sedangkan Program Akun Token Terkait biasanya digunakan untuk menulis program kustom lainnya.

Anda menyebut mereka smart contract, saya menyebutnya on-chain program. Istilah yang berbeda, tetapi keduanya merujuk pada kode yang berjalan di blockchain. Sama seperti Alice, Bob, dan John semuanya adalah nama, dan kualitas mereka yang sebenarnya perlu dinilai oleh aspek lain.

Model akun, decoupling data:

Mirip dengan Ethereum, Solana juga merupakan blockchain berdasarkan model akun, tetapi Solana menyediakan model akun yang berbeda dari Ethereum dan menyimpan data dengan cara yang berbeda.

Dalam Solana, akun dapat menyimpan informasi dompet dan data lainnya. Bidang yang ditentukan akun mencakup Lamports (saldo akun), Pemilik (pemilik akun), Dapat Dieksekusi (apakah itu akun yang dapat dieksekusi), dan Data (data yang disimpan di akun). Setiap akun menunjuk program sebagai pemiliknya untuk membedakan program mana yang digunakan akun sebagai toko negara. Program on-chain ini hanya-baca atau stateless: program akun (executable akun) hanya menyimpan bytecode BPF dan tidak menyimpan status apa pun. Program ini akan menyimpan negara di akun independen lainnya (akun yang tidak dapat dieksekusi). Artinya, model pemrograman Solana memisahkan kode dan data.

Ethereum akun terutama mengacu pada negara EVM. Kontrak pintarnya tidak hanya memiliki logika kode, tetapi juga perlu menyimpan data pengguna. Ini sering dianggap sebagai cacat desain yang tersisa dari sejarah EVM.

Jangan meremehkan perbedaan ini! Solana smart contract pada dasarnya lebih menantang untuk diserang dibandingkan dengan blockchain dengan model pemrograman gabungan seperti Ethereum.

Dalam Ethereum, "pemilik" kontrak pintar adalah variabel global yang sesuai satu-ke-satu dengan kontrak pintar. Oleh karena itu, memanggil fungsi dapat secara langsung mengubah "pemilik" kontrak.

Namun, dalam Solana, "pemilik" kontrak pintar adalah data yang terkait dengan akun daripada variabel global. Seorang akun dapat memiliki banyak pemilik, bukan asosiasi satu-ke-satu. Agar penyerang dapat mengeksploitasi kerentanan keamanan dalam kontrak pintar, mereka tidak hanya perlu menemukan fungsi yang bermasalah tetapi juga perlu menyiapkan akun yang "benar" untuk memanggil fungsi itu. Langkah ini tidak mudah karena Solana smart contract biasanya melibatkan beberapa akun input dan mengelola hubungan mereka melalui batasan (seperti account1.owner == account2.key). Proses dari "menyiapkan akun yang benar" hingga "meluncurkan serangan" memberi personel pemantauan keamanan cukup waktu untuk secara proaktif mendeteksi transaksi mencurigakan terkait dengan pembuatan akun "palsu" yang terkait dengan kontrak pintar sebelum serangan terjadi.

Ethereum smart contract seperti brankas yang menggunakan kata sandi unik; setelah Anda mendapatkan kata sandi ini, Anda mendapatkan kepemilikan penuh. Sebaliknya, smart contract Solana seperti lemari besi dengan banyak kata sandi. Untuk mendapatkan akses, Anda tidak hanya perlu mendapatkan kata sandi tetapi juga mencari tahu kata sandi mana yang sesuai dengan kunci mana yang akan membukanya.

Bahasa pemrograman

Rust adalah bahasa pemrograman utama untuk mengembangkan smart contract pada Solana. Karena kinerja dan fitur keamanannya, sangat cocok untuk lingkungan blockchain dan smart contract berisiko tinggi. Solana juga mendukung C, C ++, dan (sangat tidak biasa) bahasa lain. SDK resmi untuk Rust dan C disediakan untuk dukungan pengembangan program on-chain. Pengembang dapat menggunakan alat untuk mengkompilasi program ke dalam bytecode Berkley Packet Filter (BPF) (file memiliki ekstensi .so), kemudian menyebarkannya ke rantai Solana, dan menjalankan logika kontrak pintar melalui runtime kontrak pintar paralel Sealevel.

Karena bahasa Rust itu sendiri sulit untuk memulai dan tidak disesuaikan untuk pengembangan blockchain, banyak persyaratan memerlukan penemuan kembali roda dan kode yang berlebihan. (Banyak proyek dalam produksi menggunakan kerangka kerja Anchor yang dibuat oleh co-creator Backpack Armani untuk menyederhanakan pengembangan) Banyak bahasa pemrograman yang baru dibuat yang didedikasikan untuk pengembangan blockchain didasarkan pada Rust, seperti Cairo (Starknet), Move (Sui, Aptos).

Banyak proyek dalam produksi menggunakan kerangka Anchor

Ethereum smart contract terutama dikembangkan dalam bahasa Solidity (sintaksnya mirip dengan javascript, dan file kode memiliki ekstensi .sol). Karena sintaks yang relatif sederhana dan alat pengembangan yang lebih matang (kerangka Hardhat, Remix IDE ...), kami umumnya berpikir bahwa pengalaman pengembangan Ethereum lebih sederhana dan lebih menyegarkan, sementara pengembangan Solana lebih sulit untuk memulai. Jadi meskipun Solana sangat populer sekarang, nyatanya jumlah developer di Ethereum masih jauh lebih banyak dari Solana.

Dalam kondisi jalan tertentu, mobil balap papan atas tidak secepat mobil modifikasi. Karat seperti mobil balap tingkat atas, yang secara efektif menjamin kinerja dan keamanan Solana. Namun, tidak dirancang untuk mengembangkan jalur ini untuk program on-chain tetapi malah menyebabkan peningkatan kesulitan mengemudi (pengembangan). Menggunakan rantai publik berbasis Rust dan mengembangkan bahasa khusus untuk rantai tersebut setara dengan memodifikasi mobil balap agar lebih cocok untuk kondisi jalan. Solana dirugikan di sini.

Ringkasan

Model pemrograman kontrak pintar Solana inovatif. Ini menawarkan pendekatan stateless untuk pengembangan kontrak pintar, menggunakan Rust sebagai bahasa pemrograman utama dan arsitektur yang memisahkan logika dari negara. Ini memberi pengembang lingkungan yang kuat untuk membangun dan menerapkan smart contract, memastikan keamanan dan kinerja, meskipun menimbulkan kesulitan pengembangan yang lebih tinggi. Solana berfokus pada throughput tinggi, biaya rendah, dan skalabilitas, menjadikannya pilihan ideal bagi pengembang yang saat ini ingin membuat dApps berkinerja tinggi.

Penafian:

  1. Artikel ini dicetak ulang dari [Foresight News]. Semua hak cipta adalah milik penulis asli [Alex Liu]. Jika ada keberatan dengan cetak ulang ini, silakan hubungi tim Gate Learn, dan mereka akan segera menanganinya.
  2. Penafian Kewajiban: Pandangan dan pendapat yang diungkapkan dalam artikel ini semata-mata milik penulis dan bukan merupakan saran investasi.
  3. Penerjemahan artikel ke bahasa lain dilakukan oleh tim Gate Learn. Kecuali disebutkan, menyalin, mendistribusikan, atau menjiplak artikel yang diterjemahkan dilarang.

Menjelajahi Model Pemrograman Solana Smart Contract

PemulaJun 11, 2024
Solana adalah platform blockchain berkinerja tinggi yang dirancang untuk dukungan dApps. Dikenal karena kecepatan dan skalabilitasnya, dicapai melalui mekanisme konsensus yang unik dan desain arsitektur. Artikel ini menggunakan Ethereum sebagai objek perbandingan untuk secara singkat memperkenalkan karakteristik model pemrograman kontrak pintar Solana.
Menjelajahi Model Pemrograman Solana Smart Contract

Teruskan judul asli '小学生也能看懂!Solana 的编程模型,究竟和 ETH 有啥区别?'

Solana adalah platform blockchain berkinerja tinggi yang dirancang untuk dukungan dApps. Dikenal karena kecepatan dan skalabilitasnya, dicapai melalui mekanisme konsensus yang unik dan desain arsitektur. Artikel ini menggunakan Ethereum sebagai objek perbandingan untuk memperkenalkan secara singkat karakteristik model pemrograman kontrak pintar Solana.

Smart contracts and on-chain programs:

Program yang berjalan di Ethereum disebut smart contract, serangkaian kode (fungsi) yang terletak di alamat tertentu pada Ethereum dan data(state). (Oh, kode dan data digabungkan) Kontrak pintar juga merupakan akun Ethereum, yang disebut akun kontrak. Mereka memiliki saldo dan dapat menjadi objek transaksi, tetapi mereka tidak dapat dikendalikan oleh manusia dan digunakan di jaringan untuk dijalankan sebagai program.

Kode eksekusi yang berjalan pada Solana disebut program on-chain, dan mereka dapat menafsirkan instruksi yang dikirim dalam setiap transaksi. Program-program ini dapat digunakan langsung ke inti jaringan sebagai program asli, atau diterbitkan oleh siapa saja sebagai program SPL.

  1. Instruksi: Instruksi adalah istilah unik untuk program di rantai Solana. Program on-chain terdiri dari instruksi. Mereka adalah unit terkecil yang melakukan operasi tertentu: satu atau lebih instruksi disertakan dalam setiap transaksi Solana. Instruksi menentukan tindakan yang akan dilakukan, termasuk memanggil program on-chain tertentu, meneruskan akun, list input, dan menyediakan array byte. Instruksi memiliki kendala komputasi, sehingga program on-chain harus dioptimalkan untuk menggunakan sejumlah kecil unit komputasi atau untuk membagi operasi yang mahal menjadi beberapa instruksi.

  1. Program asli: Ini adalah program yang menyediakan fungsionalitas yang diperlukan untuk memvalidasi node. Yang paling menonjol adalah Program Sistem, yang bertanggung jawab untuk mengelola pembuatan akun baru dan mentransfer SOL antara dua akun.
  2. Program SPL: Ini menentukan serangkaian aktivitas on-chain, termasuk pembuatan, pertukaran, dan peminjaman token, serta pembuatan kumpulan staking dan pemeliharaan layanan resolusi nama domain on-chain. Di antaranya, Program Token SPL digunakan untuk operasi token, sedangkan Program Akun Token Terkait biasanya digunakan untuk menulis program kustom lainnya.

Anda menyebut mereka smart contract, saya menyebutnya on-chain program. Istilah yang berbeda, tetapi keduanya merujuk pada kode yang berjalan di blockchain. Sama seperti Alice, Bob, dan John semuanya adalah nama, dan kualitas mereka yang sebenarnya perlu dinilai oleh aspek lain.

Model akun, decoupling data:

Mirip dengan Ethereum, Solana juga merupakan blockchain berdasarkan model akun, tetapi Solana menyediakan model akun yang berbeda dari Ethereum dan menyimpan data dengan cara yang berbeda.

Dalam Solana, akun dapat menyimpan informasi dompet dan data lainnya. Bidang yang ditentukan akun mencakup Lamports (saldo akun), Pemilik (pemilik akun), Dapat Dieksekusi (apakah itu akun yang dapat dieksekusi), dan Data (data yang disimpan di akun). Setiap akun menunjuk program sebagai pemiliknya untuk membedakan program mana yang digunakan akun sebagai toko negara. Program on-chain ini hanya-baca atau stateless: program akun (executable akun) hanya menyimpan bytecode BPF dan tidak menyimpan status apa pun. Program ini akan menyimpan negara di akun independen lainnya (akun yang tidak dapat dieksekusi). Artinya, model pemrograman Solana memisahkan kode dan data.

Ethereum akun terutama mengacu pada negara EVM. Kontrak pintarnya tidak hanya memiliki logika kode, tetapi juga perlu menyimpan data pengguna. Ini sering dianggap sebagai cacat desain yang tersisa dari sejarah EVM.

Jangan meremehkan perbedaan ini! Solana smart contract pada dasarnya lebih menantang untuk diserang dibandingkan dengan blockchain dengan model pemrograman gabungan seperti Ethereum.

Dalam Ethereum, "pemilik" kontrak pintar adalah variabel global yang sesuai satu-ke-satu dengan kontrak pintar. Oleh karena itu, memanggil fungsi dapat secara langsung mengubah "pemilik" kontrak.

Namun, dalam Solana, "pemilik" kontrak pintar adalah data yang terkait dengan akun daripada variabel global. Seorang akun dapat memiliki banyak pemilik, bukan asosiasi satu-ke-satu. Agar penyerang dapat mengeksploitasi kerentanan keamanan dalam kontrak pintar, mereka tidak hanya perlu menemukan fungsi yang bermasalah tetapi juga perlu menyiapkan akun yang "benar" untuk memanggil fungsi itu. Langkah ini tidak mudah karena Solana smart contract biasanya melibatkan beberapa akun input dan mengelola hubungan mereka melalui batasan (seperti account1.owner == account2.key). Proses dari "menyiapkan akun yang benar" hingga "meluncurkan serangan" memberi personel pemantauan keamanan cukup waktu untuk secara proaktif mendeteksi transaksi mencurigakan terkait dengan pembuatan akun "palsu" yang terkait dengan kontrak pintar sebelum serangan terjadi.

Ethereum smart contract seperti brankas yang menggunakan kata sandi unik; setelah Anda mendapatkan kata sandi ini, Anda mendapatkan kepemilikan penuh. Sebaliknya, smart contract Solana seperti lemari besi dengan banyak kata sandi. Untuk mendapatkan akses, Anda tidak hanya perlu mendapatkan kata sandi tetapi juga mencari tahu kata sandi mana yang sesuai dengan kunci mana yang akan membukanya.

Bahasa pemrograman

Rust adalah bahasa pemrograman utama untuk mengembangkan smart contract pada Solana. Karena kinerja dan fitur keamanannya, sangat cocok untuk lingkungan blockchain dan smart contract berisiko tinggi. Solana juga mendukung C, C ++, dan (sangat tidak biasa) bahasa lain. SDK resmi untuk Rust dan C disediakan untuk dukungan pengembangan program on-chain. Pengembang dapat menggunakan alat untuk mengkompilasi program ke dalam bytecode Berkley Packet Filter (BPF) (file memiliki ekstensi .so), kemudian menyebarkannya ke rantai Solana, dan menjalankan logika kontrak pintar melalui runtime kontrak pintar paralel Sealevel.

Karena bahasa Rust itu sendiri sulit untuk memulai dan tidak disesuaikan untuk pengembangan blockchain, banyak persyaratan memerlukan penemuan kembali roda dan kode yang berlebihan. (Banyak proyek dalam produksi menggunakan kerangka kerja Anchor yang dibuat oleh co-creator Backpack Armani untuk menyederhanakan pengembangan) Banyak bahasa pemrograman yang baru dibuat yang didedikasikan untuk pengembangan blockchain didasarkan pada Rust, seperti Cairo (Starknet), Move (Sui, Aptos).

Banyak proyek dalam produksi menggunakan kerangka Anchor

Ethereum smart contract terutama dikembangkan dalam bahasa Solidity (sintaksnya mirip dengan javascript, dan file kode memiliki ekstensi .sol). Karena sintaks yang relatif sederhana dan alat pengembangan yang lebih matang (kerangka Hardhat, Remix IDE ...), kami umumnya berpikir bahwa pengalaman pengembangan Ethereum lebih sederhana dan lebih menyegarkan, sementara pengembangan Solana lebih sulit untuk memulai. Jadi meskipun Solana sangat populer sekarang, nyatanya jumlah developer di Ethereum masih jauh lebih banyak dari Solana.

Dalam kondisi jalan tertentu, mobil balap papan atas tidak secepat mobil modifikasi. Karat seperti mobil balap tingkat atas, yang secara efektif menjamin kinerja dan keamanan Solana. Namun, tidak dirancang untuk mengembangkan jalur ini untuk program on-chain tetapi malah menyebabkan peningkatan kesulitan mengemudi (pengembangan). Menggunakan rantai publik berbasis Rust dan mengembangkan bahasa khusus untuk rantai tersebut setara dengan memodifikasi mobil balap agar lebih cocok untuk kondisi jalan. Solana dirugikan di sini.

Ringkasan

Model pemrograman kontrak pintar Solana inovatif. Ini menawarkan pendekatan stateless untuk pengembangan kontrak pintar, menggunakan Rust sebagai bahasa pemrograman utama dan arsitektur yang memisahkan logika dari negara. Ini memberi pengembang lingkungan yang kuat untuk membangun dan menerapkan smart contract, memastikan keamanan dan kinerja, meskipun menimbulkan kesulitan pengembangan yang lebih tinggi. Solana berfokus pada throughput tinggi, biaya rendah, dan skalabilitas, menjadikannya pilihan ideal bagi pengembang yang saat ini ingin membuat dApps berkinerja tinggi.

Penafian:

  1. Artikel ini dicetak ulang dari [Foresight News]. Semua hak cipta adalah milik penulis asli [Alex Liu]. Jika ada keberatan dengan cetak ulang ini, silakan hubungi tim Gate Learn, dan mereka akan segera menanganinya.
  2. Penafian Kewajiban: Pandangan dan pendapat yang diungkapkan dalam artikel ini semata-mata milik penulis dan bukan merupakan saran investasi.
  3. Penerjemahan artikel ke bahasa lain dilakukan oleh tim Gate Learn. Kecuali disebutkan, menyalin, mendistribusikan, atau menjiplak artikel yang diterjemahkan dilarang.
Comece agora
Inscreva-se e ganhe um cupom de
$100
!