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
- Mở Solana Playground trong trình duyệt web của bạn
- Ở bảng điều khiển bên trái, nhấp vào + Create a new project
- Nhập Project name
- Chọn Anchor (Rust) làm framework
- Nhấp vào Create
Dự á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
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}
Xây dựng và triển khai chương trình
- Biên dịch mã chương trình
$build
ID chương trình của bạn, được
định nghĩa trong declare_id!()
, sẽ được cập nhật.
- 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.
- Triển khai chương trình lên mạng
$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 Build và Deploy 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à Deploy
Kiểm tra chương trình
- Mở tệp kiểm thử có tên
tests/anchor.test.ts
. Tệp này minh họa cách gọi structinitialize
của chương trình từ phía client.
// 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));});});
- Chạy tệp kiểm thử
$test
- 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
solana confirm -v [TxHash]
để xem nhật ký giao dịch
$solana confirm -v 3TewJtiUz1EgtT88pLJHvKFzqrzDNuHVi8CfD2mWmHEBAaMfC5NAaHdmr19qQYfTiBace6XUmADvR4Qrhe8gH5uc
- 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!()
.
$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ình và gọi chéo giữa các chương trình.
Is this page helpful?