Triển khai chương trình Solana đầu tiên của bạn

Xây dựng, triển khai và kiểm thử program đầu tiên của bạn lên Blockchain Solana bằng framework Anchor. Hướng dẫn này sẽ giúp bạn làm quen với Solana Playground và chuẩn bị cho bạn sử dụng Program Derived Address (PDA) và Cross Program Invocation (CPI).

Tạo dự án Anchor

  1. Mở Solana Playground trong trình duyệt web của bạn
  2. Ở bảng điều khiển bên trái, nhấp vào + Create a new project
  3. Nhập Project name
  4. Chọn Anchor (Rust) làm framework
  5. Nhấp vào Create

Dự án mớiDự án mới

Tệp nguồn src/lib.rs sẽ mở ra. Nó chứa một struct có tên Initialize, thực hiện các chức năng sau:

  • Nhận một tham số bắt buộc có tên data: u64
  • Tạo một tài khoản mới
  • Lưu giá trị của data: u64 vào tài khoản mới
  • Thêm một thông báo vào nhật ký chương trình của giao dịch
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
}

Xây dựng và triển khai chương trình

  1. Biên dịch mã chương trình
Terminal
$
build

ID chương trình của bạn, được định nghĩa trong declare_id!(), sẽ được cập nhật.

  1. Thêm SOL vào ví của bạn (Tùy chọn)

Việc triển khai chương trình đòi hỏi SOL trong tài khoản on-chain của chương trình. Nếu cần thiết, thêm SOL vào ví của bạn trước khi tiếp tục bước 3.

  1. Triển khai chương trình lên mạng
Terminal
$
deploy

Khi được triển khai, bytecode của chương trình được lưu trữ trong một program account có thể thực thi.

Lưu ý: Nếu muốn, bạn có thể sử dụng các nút BuildDeploy trên bảng điều khiển bên trái, như được hiển thị trong ảnh chụp màn hình dưới đây.

Build và DeployBuild và Deploy

Kiểm tra chương trình

  1. Mở tệp kiểm thử có tên tests/anchor.test.ts. Tệp này minh họa cách gọi struct initialize của chương trình từ phía client.
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. Chạy tệp kiểm thử
Terminal
$
test
  1. Lưu lại mã băm giao dịch (TxHash) có trong kết quả đầu ra

(Trong ví dụ trên, mã băm giao dịch là 3TewJtiUz1EgtT88pLJHvKFzqrzDNuHVi8CfD2mWmHEBAaMfC5NAaHdmr19qQYfTiBace6XUmADvR4Qrhe8gH5uc.)

Lưu ý: Nếu muốn, bạn có thể sử dụng nút Test trên bảng điều khiển bên trái.

Chạy kiểm thửChạy kiểm thử

  1. Chạy solana confirm -v [TxHash] để xem nhật ký giao dịch
Terminal
$
solana confirm -v 3TewJtiUz1EgtT88pLJHvKFzqrzDNuHVi8CfD2mWmHEBAaMfC5NAaHdmr19qQYfTiBace6XUmADvR4Qrhe8gH5uc
  1. Xem chi tiết giao dịch

Mở SolanaFM hoặc Solana Explorer và tìm kiếm mã băm giao dịch.

Solana Explorer: Đặt cụm mạng thành devnet, để khớp với cài đặt của Solana Playground.

Đóng chương trình

Đóng chương trình để thu hồi SOL đã cấp phát cho chương trình trên chuỗi. Để thực hiện, chạy solana program close [ProgramID], sử dụng địa chỉ chương trình được lưu trong macro declare_id!().

Terminal
$
solana program close 2VvQ11q8xrn5tkPNyeraRsPaATdiPx8weLAD8aD4dn2r

Chương trình chỉ có thể được đóng hoặc cập nhật bởi tài khoản có quyền nâng cấp. Ví Playground của bạn tự động trở thành người có quyền nâng cấp cho mỗi chương trình khi nó được triển khai. Nếu quyền nâng cấp bị thu hồi, chương trình sẽ trở nên bất biến.

Chúc mừng! Bạn đã xây dựng và triển khai chương trình Solana đầu tiên của mình bằng Anchor.

Các bước tiếp theo

Giờ đây bạn đã triển khai chương trình đầu tiên của mình, bạn đã sẵn sàng để khám phá địa chỉ dẫn xuất từ chương trìnhgọi chéo giữa các chương trình.

Is this page helpful?

Mục lục

Chỉnh sửa trang