Peralihan dari EVM ke SVM (Solana) memerlukan pemahaman beberapa perbedaan utama antara mesin virtual. Artikel ini akan membahas beberapa perbedaan tersebut, termasuk akun, biaya, transaksi, kontrak pintar (program), dan banyak lagi. Ini juga akan mengeksplorasi pengaturan pengembang termasuk peralatan dan SDK.
Pada akhirnya, pengembang akan memiliki pengetahuan yang dibutuhkan untuk memulai perjalanan Solana mereka.
Memahami Perbedaan Inti
Untuk memulai, mari kita lihat perbedaan paling signifikan antara EVM dan SVM—desain model akun.
Model Akun
Tidak seperti Ethereum, Solana dirancang untuk memanfaatkan banyak inti dan mendukung transaksi paralel. Untuk mencapai hal ini, Solana menggunakan model akun.
Akun di Solana adalah catatan di buku besar Solana yang menyimpan data (akun data) atau merupakan program yang dapat dieksekusi (kontrak pintar atau program di Solana).
Seperti Ethereum, setiap akun memiliki pengidentifikasi alamat. Namun, tidak seperti Ethereum—di mana setiap kontrak pintar adalah akun dengan logika eksekusi dan penyimpanan terikat bersama—kontrak pintar Solana sepenuhnya tidak memiliki kewarganegaraan. Negara harus diteruskan ke akun agar mereka dapat mengeksekusinya.
Mari kita lihat contoh kode. Dalam kode Soliditas di bawah, negara terikat pada kontrak pintar dengan baris int private count = 0.
Dengan Rust (Solana) ada struct dalam kontrak pintar yang menyatakan inisialisasi_counter. Penghitung awal ini membuat akun dengan hitungan 0. Akun tersebut diteruskan ke penghitung ini untuk menambah hitungan. Hal ini mencegah negara disimpan dalam kontrak pintar itu sendiri.
Dengan Solana, data disimpan di akun terpisah di luar program. Untuk menjalankan logika dalam suatu program, berikan akun yang akan dijalankan.
Dalam kasus program penghitung ini, berikan akun penghitung ke program saat memanggil fungsi kenaikan, dan program kemudian menambah nilai dalam akun penghitung.
Manfaat Desain Model Akun
Salah satu manfaat utama model akun ini adalah penggunaan kembali program.
Dengan antarmuka ERC20 di Ethereum, setiap kali pengembang membuat token baru, mereka harus menerapkan ulang kontrak pintar ERC20 ke Ethereum dengan nilai yang ditentukan. Pemindahan ini memerlukan biaya yang besar.
Namun dengan Solana, Anda tidak perlu membuat dan menerapkan kontrak pintar baru untuk membuat token baru. Sebagai gantinya, buat akun baru, yang dikenal sebagai akun mint, menggunakan Program Token Solana, dengan memberikan detail seperti jumlah token, titik desimal, siapa yang dapat mencetak, dan banyak lagi.
Dan ini dapat dilakukan hanya dengan mengirimkan transaksi ke Program Token. Menggunakan Solana Program Library CLI, misalnya, hanya memerlukan satu perintah:
Pasar Biaya Lokal
Manfaat lain dari model akun ini adalah pasar biaya bersifat lokal per akun.
Di Ethereum, pasar biaya bersifat global. Jika koleksi NFT menjadi viral dan semua orang mencetaknya—biaya akan naik untuk semua orang. Namun di Solana, karena pasar biaya bersifat lokal per akun, hanya orang yang mencetak koleksi NFT yang membayar biaya tinggi. Pengguna yang tidak berpartisipasi tidak terpengaruh.
Biaya
Mari selami lebih dalam tentang biaya. Di Solana, biaya dibagi menjadi tiga kategori: biaya dasar, biaya prioritas, dan sewa. Mari kita lihat masing-masing.
Biaya dasar dihitung berdasarkan jumlah tanda tangan dalam suatu transaksi. Setiap tanda tangan berharga 5000 laport (0,000000001 sol = 1 laport). Jika suatu transaksi memiliki 5 tanda tangan, biaya dasarnya adalah 25000 laport.
Biaya prioritas adalah biaya opsional yang dapat ditambahkan ke transaksi untuk memberikan prioritas. Biaya ini didasarkan pada jumlah unit komputasi yang digunakan dalam transaksi. Mirip dengan gas Ethereum, biaya ini adalah pengukuran sederhana atas sumber daya komputasi yang diperlukan untuk transaksi.
Biaya akhir, sewa, lebih seperti deposit. Ketika pengembang membuat akun atau mengalokasikan ruang di jaringan, mereka harus menyetor SOL agar jaringan dapat mempertahankan akun mereka. Sewa dihitung berdasarkan jumlah byte yang disimpan di jaringan, dan biaya dasar tambahan dikenakan untuk mengalokasikan ruang.
Transaksi
Di Solana, eksekusi program dimulai dengan transaksi dikirimkan ke cluster. Setiap transaksi di Solana terdiri dari empat bagian:
Satu atau lebih instruksi. Instruksi adalah logika eksekusi terkecil di Solana. Mereka dapat dianggap seperti panggilan fungsi pada kontrak pintar Ethereum. Mereka memanggil program yang melakukan panggilan ke runtime Solana untuk memperbarui status (misalnya, memanggil program token untuk mentransfer token dari satu akun ke akun lainnya).
Serangkaian akun untuk membaca atau menulis
Satu atau lebih tanda tangan
Blockhash atau nonce terbaru. Daripada menggunakan nonce tambahan seperti pada Ethereum, di Solana, blockhash terbaru ditarik dari cluster. Dengan blockhash ini, transaksi hanya berlaku untuk 150 blok, mencegah tanda tangan transaksi yang berumur panjang untuk dieksekusi di kemudian hari.
Satu perbedaan signifikan lainnya antara Ethereum dan Solana adalah dengan Solana, transaksi dapat memiliki banyak instruksi (panggilan fungsi di Ethereum). Artinya, tidak perlu membuat kontrak pintar khusus untuk menghubungkan fungsi dalam satu transaksi. Setiap instruksi dapat berupa pemanggilan fungsi terpisah, yang dilakukan secara berurutan dalam transaksi. Transaksi juga bersifat atomik: jika suatu instruksi gagal, seluruh transaksi akan gagal.
Batasan Transaksi
Seperti halnya batasan gas Ethereum, terdapat batasan unit komputasi pada transaksi Solana.
Batasan lainnya meliputi:
Setiap akun yang direferensikan dapat menggunakan maksimal 12.000.000 unit komputasi per blok.
Instruksi hanya dapat dipanggil pada kedalaman 4 sebelum transaksi dikembalikan.
Mempool
Berbeda dengan Ethereum, Solana tidak memiliki mempool. Validator Solana meneruskan semua transaksi ke hingga empat pemimpin pada jadwal pemimpin. Tidak adanya mempool akan memaksa transaksi untuk berpindah dari satu pemimpin ke pemimpin lainnya hingga masa berlaku blockhash berakhir, namun hal ini juga mengurangi overhead gosip di seluruh cluster.
Lingkungan Pengembang Solana
Sekarang mari kita lihat beberapa alat pengembang di Solana.
Bahasa pemrograman
Meskipun Ethereum terutama menggunakan Solidity untuk menulis kontrak pintar, Solana menggunakan Rust. Jika beralih dari Ethereum, pertimbangkan kerangka kerja Anchor atau Neon, yang keduanya dapat membantu pengembang memulai lebih cepat dengan memungkinkan mereka membangun Solana menggunakan alat EVM yang sudah dikenal.
Seperti Ethereum, ada SDK sisi klien yang tersedia untuk banyak bahasa pemrograman paling populer, termasuk JavaScript, Python, dan Java.
Alat Pengembang
Solana saat ini tidak memiliki alat yang setara dengan Foundry, namun Solana memiliki seperangkat alat yang setara dengan yang digunakan untuk Solidity.
Untuk mengetahui lebih dalam, berikut adalah daftar sumber daya pengembang yang lebih luas.
Membuat Kontrak Cerdas
Saat membuat program di Solana (atau saat memigrasikan kontrak pintar Ethereum yang sudah ada) terdapat beberapa perbedaan inti—terlalu banyak untuk dibahas di sini. Namun mari kita lihat beberapa yang paling umum:
Pemetaan tidak ada secara langsung di Solana. Sebagai gantinya, gunakan alamat turunan program. Seperti pemetaan, alamat yang diturunkan dari program memberikan kemampuan untuk membuat peta dari kunci atau akun ke nilai yang disimpan secara on-chain.
Di Solana, program secara default dapat diupgrade. Kontrak pintar dapat ditingkatkan dengan perintah CLI sederhana penerapan program solana <program_filepath>.
Saat menulis kontrak pintar soliditas, biasanya memeriksa msg.sender atau tx.origin. Tidak ada yang setara dengan ini di Solana. Setiap transaksi dapat memiliki banyak penandatangan, dan orang yang mengirimkan transaksi belum tentu merupakan orang yang menandatangani transaksi tersebut.
Untuk informasi lebih lanjut tentang program dan cara menerapkannya, lihat panduan ini.
Belajarlah lagi
Itulah beberapa perbedaan paling penting antara pengembangan di Ethereum dan Solana. Tentu saja, masih banyak lagi yang harus dipelajari. Dan cara terbaik untuk memulai adalah dengan langsung terjun! Berikut beberapa sumber daya untuk langkah selanjutnya:
Solana Playground tempat pengembang dapat menulis, membangun, dan menerapkan program Solana dari browser
Pengantar pengembangan Solana menggunakan Solana Playground
Penjelasan lebih detail mengenai perbedaan antara pengembangan di Ethereum dan Solana
Kamp Pelatihan Solana