Wdróż swój pierwszy program Solana
Zbuduj, wdroż i przetestuj swój pierwszy program na blockchainie Solana, korzystając z frameworka Anchor. Ten przewodnik pomoże Ci lepiej poznać Solana Playground i przygotuje Cię do korzystania z adresów pochodnych programów (PDA) oraz wywołań międzyprogramowych (CPI).
Utwórz projekt Anchor
- Otwórz Solana Playground w swojej przeglądarce internetowej
- W lewym panelu kliknij + Utwórz nowy projekt
- Wprowadź Nazwę projektu
- Wybierz Anchor (Rust) jako framework
- Kliknij Utwórz
Nowy projekt
Plik źródłowy src/lib.rs
zostanie otwarty. Zawiera on jedną strukturę o nazwie
Initialize
, która wykonuje następujące czynności:
- Odbiera wymagany parametr o nazwie
data: u64
- Tworzy nowe konto
- Zapisuje wartość
data: u64
na nowym koncie - Dodaje wiadomość do logów programu transakcji
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}
Zbuduj i wdroż program
- Skompiluj kod programu
$build
Twój ID programu, zdefiniowany w
declare_id!()
, zostanie teraz zaktualizowany.
- Dodaj SOL do swojego portfela (Opcjonalne)
Wdrożenie programu wymaga SOL na koncie programu w łańcuchu. Jeśli to konieczne, dodaj SOL do swojego portfela przed przejściem do kroku 3.
- Wdróż program w sieci
$deploy
Po wdrożeniu bajtkod programu jest przechowywany na koncie programu wykonawczego.
Uwaga: Jeśli wolisz, możesz użyć przycisków Build i Deploy w panelu po lewej stronie, jak pokazano na poniższym zrzucie ekranu.
Build and Deploy
Przetestuj program
- Otwórz plik testowy o nazwie
tests/anchor.test.ts
. Ten plik pokazuje, jak wywołać strukturę programuinitialize
z klienta.
// 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));});});
- Uruchom plik testowy
$test
- Zapisz hash transakcji (
TxHash
) zawarty w wyniku
(W powyższym przykładzie hash transakcji to
3TewJtiUz1EgtT88pLJHvKFzqrzDNuHVi8CfD2mWmHEBAaMfC5NAaHdmr19qQYfTiBace6XUmADvR4Qrhe8gH5uc
.)
Uwaga: Jeśli wolisz, możesz użyć przycisku Test
na panelu po lewej
stronie.
Uruchom test
- Uruchom
solana confirm -v [TxHash]
, aby wyświetlić logi transakcji
$solana confirm -v 3TewJtiUz1EgtT88pLJHvKFzqrzDNuHVi8CfD2mWmHEBAaMfC5NAaHdmr19qQYfTiBace6XUmADvR4Qrhe8gH5uc
- Wyświetl szczegóły transakcji
Otwórz SolanaFM lub Solana Explorer i wyszukaj hash transakcji.
Solana Explorer: Ustaw klaster sieci na devnet
, aby dopasować go do
Solana Playground.
Zamknij program
Zamknij program, aby odzyskać SOL przydzielone do programu on-chain. Aby to
zrobić, uruchom solana program close [ProgramID]
, używając adresu programu
zapisanego w makrze declare_id!()
.
$solana program close 2VvQ11q8xrn5tkPNyeraRsPaATdiPx8weLAD8aD4dn2r
Programy mogą być tylko zamykane lub aktualizowane przez konto z uprawnieniami do aktualizacji. Twój portfel Playground automatycznie staje się uprawnionym do aktualizacji dla każdego programu podczas jego wdrażania. Jeśli uprawnienia do aktualizacji zostaną cofnięte, program staje się niezmienny.
Gratulacje! Zbudowałeś i wdrożyłeś swój pierwszy program Solana za pomocą Anchor.
Kolejne kroki
Teraz, gdy wdrożyłeś swój pierwszy program, możesz zacząć eksplorować adresy pochodne programów oraz wywołania międzyprogramowe.
Is this page helpful?