Men-deploy Program Solana Pertama Anda
Dalam bagian ini, Anda akan membangun, men-deploy, dan menguji program Solana sederhana (smart contract) menggunakan framework Anchor. Pada akhirnya, Anda akan berhasil men-deploy program pertama Anda ke blockchain Solana.
Tujuan dari bagian ini berfokus pada pengenalan Anda dengan Solana Playground. Panduan ini membahas contoh yang lebih detail di bagian Program Derived Address (PDA) dan Cross-Program Invocation (CPI). Untuk informasi lebih lanjut, lihat halaman Program di Solana.
Membuat Proyek Anchor
Pertama, buka https://beta.solpg.io di tab browser baru.
-
Klik tombol "Create a new project" di panel sisi kiri.
-
Masukkan nama proyek, pilih Anchor sebagai framework, kemudian klik tombol "Create".
Proyek Baru
Anda akan melihat proyek baru dibuat dengan kode program di file lib.rs
.
Program Solana dasar ini membuat akun baru dan menyimpan angka di dalamnya.
Program ini berisi satu instruksi (initialize
) yang:
- Memerlukan parameter
data
sebagai input - Membuat akun baru
- Menyimpan nilai parameter
data
di data akun - Mencatat pesan ke log program transaksi
use anchor_lang::prelude::*;declare_id!("Fg6PaFpoGXkYsidMpWTK6W2BeZ7FEfcYkg476zPFsLnS");#[program]mod hello_anchor {use super::*;pub fn initialize(ctx: Context<Initialize>, data: u64) -> Result<()> {let my_account = &mut ctx.accounts.my_account;my_account.data = data;msg!("Your data is: {}", data);Ok(())}}#[derive(Accounts)]pub struct Initialize<'info> {#[account(init, payer = user, space = 8 + 8)]pub my_account: Account<'info, MyAccount>,#[account(mut)]pub user: Signer<'info>,pub system_program: Program<'info, System>,}#[account]pub struct MyAccount {pub data: u64,}
Membangun dan Men-deploy Program
Untuk membangun program, cukup jalankan build
di terminal. Perintah build
mengompilasi program. Bytecode program kemudian disimpan dalam akun program yang
dapat dieksekusi saat di-deploy.
$build
Solana Playground memperbarui alamat di declare_id!()
. Alamat ini mewakili
alamat on-chain program Anda (program ID).
Setelah membangun program, jalankan deploy
di terminal untuk men-deploy
program ke jaringan (devnet secara default). Deployment program memerlukan
alokasi SOL ke akun on-chain yang menyimpan program.
Sebelum deployment, pastikan Anda memiliki cukup SOL. Anda bisa mendapatkan SOL
devnet dengan menjalankan solana airdrop 5
di terminal Playground atau
menggunakan Web Faucet.
$deploy
Anda juga dapat menggunakan tombol Build
dan Deploy
pada panel sisi kiri.
Build and Deploy
Setelah men-deploy program, Anda dapat memanggil instruksi-instruksinya.
Uji Program
Kode starter mencakup file pengujian yang terletak di tests/anchor.test.ts
.
File ini menunjukkan cara memanggil instruksi initialize
pada
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));});});
Untuk menjalankan file pengujian setelah men-deploy program, jalankan
test
di terminal.
$test
Perhatikan output yang mengonfirmasi bahwa pengujian berhasil.
Anda juga dapat menggunakan tombol Test
pada panel sisi kiri.
Run Test
Anda kemudian dapat melihat log transaksi dengan menjalankan perintah
solana confirm -v
dan menentukan hash transaksi (tanda tangan) dari output
pengujian:
$solana confirm -v [TxHash]
Contohnya:
$solana confirm -v 3TewJtiUz1EgtT88pLJHvKFzqrzDNuHVi8CfD2mWmHEBAaMfC5NAaHdmr19qQYfTiBace6XUmADvR4Qrhe8gH5uc
Anda juga dapat melihat detail transaksi di SolanaFM atau Solana Explorer dengan mencari tanda tangan transaksi (hash).
Ingat untuk memperbarui koneksi cluster (jaringan) pada Explorer yang Anda gunakan agar sesuai dengan Solana Playground. Solana Playground secara default menggunakan cluster devnet.
Tutup Program
Terakhir, menutup program memungkinkan pemulihan penuh SOL yang dialokasikan untuk program on-chain.
Anda dapat menutup program dengan menjalankan perintah berikut dan menentukan
alamat program yang ditemukan di declare_id!()
:
$solana program close [ProgramID]
Contohnya:
$solana program close 2VvQ11q8xrn5tkPNyeraRsPaATdiPx8weLAD8aD4dn2r
Selamat. Anda baru saja membangun dan men-deploy program Solana pertama Anda menggunakan framework Anchor.
Is this page helpful?