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

  1. Otwórz Solana Playground w swojej przeglądarce internetowej
  2. W lewym panelu kliknij + Utwórz nowy projekt
  3. Wprowadź Nazwę projektu
  4. Wybierz Anchor (Rust) jako framework
  5. Kliknij Utwórz

Nowy projektNowy 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
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
}

Zbuduj i wdroż program

  1. Skompiluj kod programu
Terminal
$
build

Twój ID programu, zdefiniowany w declare_id!(), zostanie teraz zaktualizowany.

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

  1. Wdróż program w sieci
Terminal
$
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 DeployBuild and Deploy

Przetestuj program

  1. Otwórz plik testowy o nazwie tests/anchor.test.ts. Ten plik pokazuje, jak wywołać strukturę programu initialize z klienta.
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. Uruchom plik testowy
Terminal
$
test
  1. 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 testUruchom test

  1. Uruchom solana confirm -v [TxHash], aby wyświetlić logi transakcji
Terminal
$
solana confirm -v 3TewJtiUz1EgtT88pLJHvKFzqrzDNuHVi8CfD2mWmHEBAaMfC5NAaHdmr19qQYfTiBace6XUmADvR4Qrhe8gH5uc
  1. 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!().

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

Spis treści

Edytuj stronę