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

  1. Buka Solana Playground di browser web Anda
  2. Di panel kiri, klik + Create a new project
  3. Masukkan Project name
  4. Pilih Anchor (Rust) sebagai framework
  5. Klik Create

New ProjectNew 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
lib.rs
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 logs
Ok(())
}
}
#[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

  1. Kompilasi kode program
Terminal
$
build

ID program Anda, yang didefinisikan di declare_id!(), sekarang akan diperbarui.

  1. 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.

  1. Deploy program ke jaringan
Terminal
$
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 DeployBuild and Deploy

Menguji Program

  1. Buka file tes bernama tests/anchor.test.ts. File ini menunjukkan cara untuk memanggil struct initialize program dari sisi klien.
anchor.test.ts
// No imports needed: web3, anchor, pg and more are globally available
describe("Test", () => {
it("initialize", async () => {
// Generate keypair for the new account
const newAccountKp = new web3.Keypair();
// Send transaction
const 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 transaction
await pg.connection.confirmTransaction(txHash);
// Fetch the created account
const 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));
});
});
  1. Jalankan file tes
Terminal
$
test
  1. 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 TestRun Test

  1. Jalankan solana confirm -v [TxHash] untuk melihat log transaksi
Terminal
$
solana confirm -v 3TewJtiUz1EgtT88pLJHvKFzqrzDNuHVi8CfD2mWmHEBAaMfC5NAaHdmr19qQYfTiBace6XUmADvR4Qrhe8gH5uc
  1. Lihat detail transaksi

Buka SolanaFM atau Solana Explorer dan cari hash transaksi.

Solana Explorer: Atur cluster jaringan ke devnet, agar sesuai dengan Solana Playground.

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!().

Terminal
$
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?

Daftar Isi

Edit Halaman