Program

Setiap developer bisa menulis dan memasukan programnya ke Solana Blockchain. Program (diketahui sebagai smart contracts di protokol lain) berfungsi sebagai dasar untuk aktivitas on-chain, mendukung apa pun mulai dari DeFi dan NFT hingga ke Media Sosial dan Game.

Fakta-Fakta

Fakta

  • Program Memproses instruksi dari pengguna akhir dan program lain
  • Semua program adalah stateless / tidak memiliki status: semua data apa pun yang berinteraksi dengannya disimpan di Akun terpisah yang diteruskan melalui intruksi
  • Program itu sendiri disimpan dalam akun yang ditandai sebagai 'executable'
  • Semua program merupakan milik BPF Loaderopen in new window dan dieksekusi oleh Solana Runtimeopen in new window
  • Pengembang paling sering menulis program dalam bahasa Rust atau C++, tetapi bisa memilih bahasa lain yang menargetkan LLVMopen in new window's BPFopen in new window backend
  • Semua program memiliki satu titik masuk dimana pemrosessan instruksi berlangsung (i.e. process_instruction); parameternya selalu meliputi:
    • program_id: pubkey
    • accounts: array,
    • instruction_data: byte array

Lebih Dalam

Tidak seperti kebanyakan blockchain lainnya, Solana benar-benar memisahkan kode dari data. Semua data yang berinteraksi dengan program disimpan dalam akun terpisah dan diteruskan sebagai referensi via instruksi. Model ini memungkinkan satu program generik untuk beroperasi di berbagai akun tanpa memerlukan penerapan tambahan. Contoh umum dari pola ini terlihat di seluruh program bawaan (Native) dan Program SPL.

Native Program & Solana Program Library (SPL)

Solana dilengkapi dengan sejumlah program yang berfungsi sebagai blok bangunan inti untuk interaksi dalam on-chain. Program ini dibagi menjadi Native Programsopen in new window dan Solana Program Library (SPL) Programsopen in new window.

Program bawaan (native) menyediakan fungsionalitas dasar yang yang diperlukan untuk mengoperasikan validator. Di antara program-program ini, yang paling terkenal adalah System Programopen in new window yang bertanggung jawab untuk mengelola akun baru dan mentransfer SOL antara dua belah pihak.

Program SPL mendukung sejumlah aktivitas on-chain, termasuk membuat, menukar, dan meminjamkan token, serta membuat Stake Pools dan memelihara layanan nama (name service) sebuah on-chain. SPL Token Programopen in new window dapat dipanggil langsung melalui CLI, sementara yang lain seperti Associated Token Account Programopen in new window biasanya dibuat dengan program khusus.

Program paling sering dikembangkan dengan bahasa Rust atau C++, tetapi bisa juga dikembangkan dengan berbagai bahasa yang menargetkan backend BPF LLVM. Inisiatif terbaru oleh Neon Labsopen in new window dan Solangopen in new window mengaktifkan EVMopen in new window kompatibilitas dan memungkinkan para pengembang untuk menulis program dalam Solidity.

Sebagian besar program berbasis Rust mengikuti arsitektur berikut:

FileDeskripsi
lib.rsMendaftarkan modul
entrypoint.rsTitik masuk ke program
instruction.rsProgram API, deserialisasi data instruksi
processor.rsLogika program
state.rsObjek program, status deserialisasi
error.rsKesalahan (error) khusus program

Baru-baru ini, Anchoropen in new window telah muncul sebagai framework yang populer untuk mengembangkan program. Anchor adalah sebuah framework, mirip dengan Ruby on Rails, yang mengurangi boilerplate dan mempermudah proses deserialisasi untuk pengembangan berbasis Rust.

Program pada umumnya dikembangkan dan diuji di localhost dan devnet sebelum di deploy ke testnet atau mainnet. Solana mendukung environment berikut:

Kluster EnvironmentURL Koneksi RPC
Mainnet-betahttps://api.mainnet-beta.solana.com
Testnethttps://api.testnet.solana.com
Devnethttps://api.devnet.solana.com
Localhostport bawaan: 8899 (contoh http://localhost:8899, http://192.168.1.88:8899)

Setelah di deploy ke environment, klien dapat berinteraksi dengan program on-chain melalui RPC connectionsopen in new window ke masing-masing kluster.

Deploy Program

Pengembang dapat men-deploy program mereka melalui CLIopen in new window:

solana program deploy <PROGRAM_FILEPATH>

Ketika program telah di deploy, program tersebut dikompilasi ke ELF shared objectopen in new window (berisi BPF bytecode) dan diunggah ke kluster Solana. Program berjalan di akun (seperti semua yang lain di Solana), kecuali akun-akun itu telah ditandai sebagai executable dan ditugaskan ke BPF loader. Alamat akun ini disebut sebagai program_id dan digunakan untuk merujuk program dalam semua transaksi.

Solana mendukung beberapa BPF Loaders, dengan yang terbaru adalah Upgradable BPF Loaderopen in new window. BPF Loader bertanggung jawab untuk mengelola akun program dan membuatnya tersedia untuk klien melalui program_id. Semua program mempunyai satu titik masuk dimana semua pemrosesan instruksi berlangsung (i.e. process_instruction) dan parameternya selalu menyertakan :

  • program_id: pubkey
  • accounts: array,
  • instruction_data: byte array

Setelah dipanggil, program akan dijalankan oleh Solana Runtime.

Sumber Lainnya

Last Updated:
Contributors: akangaziz