Dokumentasi SolanaMengembangkan Program

Menerapkan Program

Bagian ini membahas proses dasar men-deploy program Solana menggunakan Solana CLI.

Referensi Perintah CLI

TugasPerintah
Membangun programcargo build-sbf
Men-deploy program barusolana program deploy <path_to_program.so>
Memperbarui program yang adasolana program deploy <path_to_program.so> (sama dengan deploy)
Menampilkan info programsolana program show <program-id>
Mentransfer otoritas programsolana program set-upgrade-authority <program-id> --new-upgrade-authority <path_to_keypair>
Membuat program tidak dapat diubahsolana program set-upgrade-authority <program-id> --final
Menutup programsolana program close <program-id> --bypass-warning
Memeriksa saldo dompetsolana balance
Meminta airdrop (devnet/localhost)solana airdrop 2

Konsep Kunci

Sebelum memulai, mari perjelas beberapa terminologi:

  • Program ID: Alamat on-chain dari program Anda. Pengguna berinteraksi dengan program Anda dengan mereferensikan Program ID.
  • Program Account: Akun on-chain yang menyimpan metadata program Anda. Alamat program account adalah Program ID. Program account juga menyimpan alamat dari ProgramData Account.
  • ProgramData Account: Akun on-chain yang menyimpan kode executable program Anda yang telah di-deploy.
  • Program Authority: Akun yang memiliki izin untuk memperbarui atau menutup program. Secara default, ini adalah dompet CLI Anda.

Prasyarat

Siapkan Dompet

Setelah instalasi, buat dompet keypair lokal. Alamat dompet ini diatur sebagai otoritas program default saat men-deploy program:

Terminal
$
solana-keygen new

Ini akan membuat keypair di ~/.config/solana/id.json secara default.

Konfigurasi Cluster

Pilih cluster Solana mana yang akan digunakan untuk deployment. Gunakan perintah solana config get untuk memeriksa konfigurasi saat ini:

Terminal
$
solana config get

Beralih antar cluster sesuai kebutuhan:

Terminal
$
solana config set --url mainnet-beta
$
solana config set --url devnet
$
solana config set --url localhost
$
solana config set --url testnet
$
solana config set --url "https://your-rpc-url.com"

Dana Wallet

Anda akan membutuhkan SOL untuk membayar deployment program. Jumlahnya tergantung pada ukuran program Anda.

Untuk devnet atau localhost, danai wallet Anda menggunakan perintah solana airdrop:

Terminal
$
solana airdrop 2

Periksa saldo wallet Anda:

Terminal
$
solana balance

Operasi Dasar

Build Program

Untuk membangun program, gunakan perintah cargo build-sbf:

Terminal
$
cargo build-sbf

Contoh Program

Berikut adalah program Solana minimal yang mencetak "Hello, Solana!" ke log program.

cd hello-world
solana program deploy target/deploy/hello_world.so

Output Build

Build program Anda menggunakan perintah cargo build-sbf:

cd hello-world
cargo build-sbf

Ini akan membuat dua file penting di target/deploy/:

  1. hello_world-keypair.json: File keypair yang kunci publiknya akan digunakan sebagai Program ID Anda
  2. hello_world.so: Program executable yang telah dikompilasi
cd hello-world
solana program deploy target/deploy/hello_world.so

Contoh Program

Berikut adalah program Solana minimal yang mencetak "Hello, Solana!" ke log program.

cd hello-world
solana program deploy target/deploy/hello_world.so

Output Build

Build program Anda menggunakan perintah cargo build-sbf:

cd hello-world
cargo build-sbf

Ini akan membuat dua file penting di target/deploy/:

  1. hello_world-keypair.json: File keypair yang kunci publiknya akan digunakan sebagai Program ID Anda
  2. hello_world.so: Program executable yang telah dikompilasi
cd hello-world
solana program deploy target/deploy/hello_world.so

Periksa Ukuran dan Biaya Program

Menerapkan program memerlukan SOL yang dialokasikan ke akun program berdasarkan ukuran program. Program yang lebih besar membutuhkan lebih banyak SOL untuk diterapkan.

Periksa ukuran program Anda:

ls -l target/deploy/hello_world.so

Hitung SOL yang diperlukan untuk ukuran ini (byte):

solana program cost target/deploy/hello_world.so

Anda akan membutuhkan sedikit lebih banyak SOL daripada yang ditampilkan untuk menutupi biaya transaksi penerapan.

Menerapkan Program

Gunakan perintah solana program deploy untuk menerapkan program Anda:

solana program deploy target/deploy/hello_world.so

Program Id yang ditampilkan adalah alamat permanen program Anda di jaringan.

Untuk menerapkan dengan Program ID tertentu (alih-alih yang dibuat secara otomatis), gunakan:

solana program deploy target/deploy/hello_world.so --program-id /path/to/keypair.json

Anda dapat menghasilkan keypair baru menggunakan perintah solana-keygen:

Terminal
$
solana-keygen new -o ./custom-keypair.json

Perbarui Program

Perbarui program Anda menggunakan perintah solana program deploy yang sama:

  1. Buat perubahan pada kode program Anda
  2. Bangun ulang program Anda: cargo build-sbf
  3. Deploy pembaruan:
Terminal
$
solana program deploy ./target/deploy/hello_world.so

Jika program yang diperbarui memerlukan lebih banyak ruang (byte) daripada yang dialokasikan saat ini, deployment akan secara otomatis memperluas program account. Ini terjadi ketika program baru Anda lebih besar dari versi sebelumnya. Program account membutuhkan byte tambahan untuk menyimpan program baru. CLI akan menghitung SOL yang diperlukan dan menguranginya dari dompet Anda secara otomatis.

Anda juga dapat memperluas program secara manual untuk mengalokasikan lebih banyak byte:

Terminal
$
solana program extend 7NxQjW8H8hVcqBKgXbVDWqGQCovHbqDW9p1SJJwUyTpE 1000

Pengelolaan Program

Setelah program Anda di-deploy, ada beberapa perintah umum untuk mengelola program account.

Lihat Metadata Program

Untuk memeriksa metadata program Anda, gunakan perintah solana program show:

Terminal
$
solana program show 7NxQjW8H8hVcqBKgXbVDWqGQCovHbqDW9p1SJJwUyTpE

Contoh output:

$ solana program show 7283x8k8fyBcfaFLyPsxbd2VV1AMmZFP7FNoyTXVKJw7
Program Id: 7283x8k8fyBcfaFLyPsxbd2VV1AMmZFP7FNoyTXVKJw7
Owner: BPFLoaderUpgradeab1e11111111111111111111111
ProgramData Address: Gqn7YQVCP8NtYV1qkEqR4Udhj8EJ3fkikvS7HskCNQ7c
Authority: 5kh6HxYZiAebF8HWLsUWod2EaQQ6iWHpHYCz8UcmFbM1
Last Deployed In Slot: 6573
Data Length: 18504 (0x4848) bytes
Balance: 0.12999192 SOL

Transfer Program Authority

Untuk mentransfer authority program ke akun yang berbeda, gunakan perintah solana program set-upgrade-authority:

Terminal
$
solana program set-upgrade-authority 7NxQjW8H8hVcqBKgXbVDWqGQCovHbqDW9p1SJJwUyTpE --new-upgrade-authority ./new-authority-keypair.json

Setelah mentransfer program authority, Anda tidak dapat lagi memperbarui program kecuali Anda memiliki akses ke keypair authority yang baru.

Membuat Program Anda Tidak Dapat Diubah

Untuk membuat program Anda tidak dapat diubah, gunakan perintah solana program set-upgrade-authority dengan flag --final untuk menghapus program authority:

Terminal
$
solana program set-upgrade-authority 7NxQjW8H8hVcqBKgXbVDWqGQCovHbqDW9p1SJJwUyTpE --final

Setelah program menjadi tidak dapat diubah, program tersebut tidak akan pernah bisa diperbarui atau ditutup.

Untuk menutup program Anda dan mengklaim kembali SOL yang dialokasikan ke akun program, gunakan perintah solana program close:

Terminal
$
solana program close 7NxQjW8H8hVcqBKgXbVDWqGQCovHbqDW9p1SJJwUyTpE --bypass-warning

Setelah ditutup, Program ID tidak dapat digunakan kembali. Anda tidak dapat menerapkan program baru ke alamat yang sama.

Perintah Utilitas

Daftar Semua Program

Lihat semua program di mana dompet Anda saat ini adalah authority:

Terminal
$
solana program show --programs

Contoh output:

Program Id | Slot | Authority | Balance
-------------------------------------------------|------------|------------------------------------------------|-------------
7NxQjW8H8hVcqBKgXbVDWqGQCovHbqDW9p1SJJwUyTpE | 249885434 | 5kh6HxYZiAebF8HWLsUWod2EaQQ6iWHpHYCz8UcmFbM1 | 0.12999192
3KSGCk4m5hqJkTjPHBXUCPcqMwJnK3VmkqEsFUKKGJPK | 249883212 | 5kh6HxYZiAebF8HWLsUWod2EaQQ6iWHpHYCz8UcmFbM1 | 0.28654328

Mengunduh Program yang Telah Di-deploy

Untuk mengunduh program yang telah di-deploy, gunakan perintah solana program dump:

Terminal
$
solana program dump 7NxQjW8H8hVcqBKgXbVDWqGQCovHbqDW9p1SJJwUyTpE ./downloaded_program.so

Opsi Lanjutan

Flag Deployment

Ketika jaringan Solana sedang padat, gunakan flag ini untuk membantu deployment program.

Contoh Penggunaan:

Terminal
$
solana program deploy ./target/deploy/hello_world.so \
--with-compute-unit-price 10000 \
--max-sign-attempts 10 \
--use-rpc

Penjelasan opsi:

  • --with-compute-unit-price: Tetapkan biaya prioritas dalam micro-lamports (0.000001 SOL) per unit komputasi. Periksa Helius Priority Fee API untuk tarif saat ini. Biaya prioritas adalah biaya tambahan yang dibayarkan kepada leader saat ini untuk memprioritaskan transaksi Anda.
  • --max-sign-attempts: Jumlah percobaan ulang dengan blockhash baru jika transaksi kedaluwarsa. (Default: 5)
  • --use-rpc: Kirim transaksi ke RPC yang dikonfigurasi. Flag ini memerlukan koneksi RPC stake-weighted dari penyedia seperti Triton atau Helius.

Is this page helpful?