Menerapkan Program
Bagian ini membahas proses dasar men-deploy program Solana menggunakan Solana CLI.
Referensi Perintah CLI
Tugas | Perintah |
---|---|
Membangun program | cargo build-sbf |
Men-deploy program baru | solana program deploy <path_to_program.so> |
Memperbarui program yang ada | solana program deploy <path_to_program.so> (sama dengan deploy) |
Menampilkan info program | solana program show <program-id> |
Mentransfer otoritas program | solana program set-upgrade-authority <program-id> --new-upgrade-authority <path_to_keypair> |
Membuat program tidak dapat diubah | solana program set-upgrade-authority <program-id> --final |
Menutup program | solana program close <program-id> --bypass-warning |
Memeriksa saldo dompet | solana 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
Instal Solana CLI
Pertama, instal Solana CLI.
Siapkan Dompet
Setelah instalasi, buat dompet keypair lokal. Alamat dompet ini diatur sebagai otoritas program default saat men-deploy program:
$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:
$solana config get
Beralih antar cluster sesuai kebutuhan:
$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
:
$solana airdrop 2
Periksa saldo wallet Anda:
$solana balance
Operasi Dasar
Build Program
Untuk membangun program, gunakan perintah cargo build-sbf
:
$cargo build-sbf
Contoh Program
Berikut adalah program Solana minimal yang mencetak "Hello, Solana!" ke log program.
cd hello-worldsolana program deploy target/deploy/hello_world.so
Output Build
Build program Anda menggunakan perintah cargo build-sbf
:
cd hello-worldcargo build-sbf
Ini akan membuat dua file penting di target/deploy/
:
hello_world-keypair.json
: File keypair yang kunci publiknya akan digunakan sebagai Program ID Andahello_world.so
: Program executable yang telah dikompilasi
cd hello-worldsolana 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
:
$solana-keygen new -o ./custom-keypair.json
Perbarui Program
Perbarui program Anda menggunakan perintah solana program deploy
yang sama:
- Buat perubahan pada kode program Anda
- Bangun ulang program Anda:
cargo build-sbf
- Deploy pembaruan:
$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:
$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
:
$solana program show 7NxQjW8H8hVcqBKgXbVDWqGQCovHbqDW9p1SJJwUyTpE
Contoh output:
$ solana program show 7283x8k8fyBcfaFLyPsxbd2VV1AMmZFP7FNoyTXVKJw7Program Id: 7283x8k8fyBcfaFLyPsxbd2VV1AMmZFP7FNoyTXVKJw7Owner: BPFLoaderUpgradeab1e11111111111111111111111ProgramData Address: Gqn7YQVCP8NtYV1qkEqR4Udhj8EJ3fkikvS7HskCNQ7cAuthority: 5kh6HxYZiAebF8HWLsUWod2EaQQ6iWHpHYCz8UcmFbM1Last Deployed In Slot: 6573Data Length: 18504 (0x4848) bytesBalance: 0.12999192 SOL
Transfer Program Authority
Untuk mentransfer authority program ke akun yang berbeda, gunakan perintah
solana program set-upgrade-authority
:
$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:
$solana program set-upgrade-authority 7NxQjW8H8hVcqBKgXbVDWqGQCovHbqDW9p1SJJwUyTpE --final
Setelah program menjadi tidak dapat diubah, program tersebut tidak akan pernah bisa diperbarui atau ditutup.
Menutup Program Anda
Untuk menutup program Anda dan mengklaim kembali SOL yang dialokasikan ke akun
program, gunakan perintah solana program close
:
$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:
$solana program show --programs
Contoh output:
Program Id | Slot | Authority | Balance-------------------------------------------------|------------|------------------------------------------------|-------------7NxQjW8H8hVcqBKgXbVDWqGQCovHbqDW9p1SJJwUyTpE | 249885434 | 5kh6HxYZiAebF8HWLsUWod2EaQQ6iWHpHYCz8UcmFbM1 | 0.129991923KSGCk4m5hqJkTjPHBXUCPcqMwJnK3VmkqEsFUKKGJPK | 249883212 | 5kh6HxYZiAebF8HWLsUWod2EaQQ6iWHpHYCz8UcmFbM1 | 0.28654328
Mengunduh Program yang Telah Di-deploy
Untuk mengunduh program yang telah di-deploy, gunakan perintah
solana program dump
:
$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:
$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?