Deploy Program Solana Pertama Anda
Bangun, deploy, dan uji program pertama Anda ke Blockchain Solana menggunakan framework Anchor. Panduan ini akan membantu Anda menjadi lebih familiar dengan Solana Playground dan mempersiapkan Anda untuk menggunakan Program Derived Address (PDA) dan Cross Program Invocation (CPI).
Membuat Proyek Anchor
- Buka Solana Playground di browser web Anda
- Di panel kiri, klik + Create a new project
- Masukkan Project name
- Pilih Anchor (Rust) sebagai framework
- Klik Create
New Project
File sumber src/lib.rs
akan terbuka. File ini berisi satu struct bernama
Initialize
, yang melakukan hal berikut:
- Menerima parameter wajib bernama
data: u64
- Membuat akun baru
- Menyimpan nilai
data: u64
ke akun baru - Menambahkan pesan ke log program transaksi
use anchor_lang::prelude::*;// This is your program's public key and it will update// automatically when you build the project.declare_id!("11111111111111111111111111111111");#[program]mod hello_anchor {use super::*;pub fn initialize(ctx: Context<Initialize>, data: u64) -> Result<()> {ctx.accounts.new_account.data = data;msg!("Changed data to: {}!", data); // Message will show up in the tx logsOk(())}}#[derive(Accounts)]pub struct Initialize<'info> {// We must specify the space in order to initialize an account.// First 8 bytes are default account discriminator,// next 8 bytes come from NewAccount.data being type u64.// (u64 = 64 bits unsigned integer = 8 bytes)#[account(init,payer = signer,space = 8 + 8)]pub new_account: Account<'info, NewAccount>,#[account(mut)]pub signer: Signer<'info>,pub system_program: Program<'info, System>,}#[account]pub struct NewAccount {data: u64}
Membangun dan Men-deploy Program
- Kompilasi kode program
$build
ID program Anda, yang
didefinisikan di declare_id!()
, sekarang akan diperbarui.
- Tambahkan SOL ke dompet Anda (Opsional)
Men-deploy program memerlukan SOL di akun on-chain program. Jika diperlukan, tambahkan SOL ke dompet Anda sebelum melanjutkan ke langkah 3.
- Deploy program ke jaringan
$deploy
Ketika di-deploy, bytecode program disimpan dalam program account yang dapat dieksekusi.
Catatan: Jika diinginkan, Anda dapat menggunakan tombol Build dan Deploy di panel sisi kiri, seperti yang ditunjukkan pada tangkapan layar di bawah ini.
Build and Deploy
Menguji Program
- Buka file tes bernama
tests/anchor.test.ts
. File ini menunjukkan cara untuk memanggil structinitialize
program dari sisi klien.
// No imports needed: web3, anchor, pg and more are globally availabledescribe("Test", () => {it("initialize", async () => {// Generate keypair for the new accountconst newAccountKp = new web3.Keypair();// Send transactionconst data = new BN(42);const txHash = await pg.program.methods.initialize(data).accounts({newAccount: newAccountKp.publicKey,signer: pg.wallet.publicKey,systemProgram: web3.SystemProgram.programId}).signers([newAccountKp]).rpc();console.log(`Use 'solana confirm -v ${txHash}' to see the logs`);// Confirm transactionawait pg.connection.confirmTransaction(txHash);// Fetch the created accountconst newAccount = await pg.program.account.newAccount.fetch(newAccountKp.publicKey);console.log("On-chain data is:", newAccount.data.toString());// Check whether the data on-chain is equal to local 'data'assert(data.eq(newAccount.data));});});
- Jalankan file tes
$test
- Simpan hash transaksi (
TxHash
) yang termasuk dalam output
(Dalam contoh di atas, hash transaksinya adalah
3TewJtiUz1EgtT88pLJHvKFzqrzDNuHVi8CfD2mWmHEBAaMfC5NAaHdmr19qQYfTiBace6XUmADvR4Qrhe8gH5uc
.)
Catatan: Jika diinginkan, Anda dapat menggunakan tombol Test
pada panel
sisi kiri.
Run Test
- Jalankan
solana confirm -v [TxHash]
untuk melihat log transaksi
$solana confirm -v 3TewJtiUz1EgtT88pLJHvKFzqrzDNuHVi8CfD2mWmHEBAaMfC5NAaHdmr19qQYfTiBace6XUmADvR4Qrhe8gH5uc
- Lihat detail transaksi
Buka SolanaFM atau Solana Explorer dan cari hash transaksi.
Solana Explorer: Atur cluster jaringan ke devnet
, agar sesuai dengan
Solana Playground.
Menutup Program
Tutup program untuk mendapatkan kembali SOL yang dialokasikan ke program
on-chain. Untuk melakukannya, jalankan solana program close [ProgramID]
,
menggunakan alamat program yang tersimpan di makro declare_id!()
.
$solana program close 2VvQ11q8xrn5tkPNyeraRsPaATdiPx8weLAD8aD4dn2r
Program hanya dapat ditutup atau diperbarui oleh akun dengan otoritas upgrade. Dompet Playground Anda secara otomatis menjadi otoritas upgrade untuk setiap program saat di-deploy. Jika otoritas upgrade dicabut, program menjadi tidak dapat diubah.
Selamat! Anda telah membangun dan men-deploy program Solana pertama Anda menggunakan Anchor.
Langkah selanjutnya
Sekarang setelah Anda menerapkan program pertama Anda, Anda siap untuk menjelajahi alamat turunan program dan pemanggilan antar program.
Is this page helpful?