Розгорніть вашу першу програму Solana

Створіть, розгорніть та протестуйте вашу першу програму у блокчейні Solana за допомогою фреймворку Anchor. Цей посібник допоможе вам краще ознайомитися з Solana Playground та підготує вас до використання Program Derived Address (PDA) та Cross Program Invocation (CPI).

Створення проєкту Anchor

  1. Відкрийте Solana Playground у вашому веб-браузері
  2. На лівій панелі натисніть + Create a new project
  3. Введіть Project name (назву проєкту)
  4. Виберіть Anchor (Rust) як фреймворк
  5. Натисніть Create

Новий проєктНовий проєкт

Відкриється вихідний файл src/lib.rs. Він містить одну структуру під назвою Initialize, яка виконує наступне:

  • Отримує обов'язковий параметр під назвою data: u64
  • Створює новий рахунок
  • Зберігає значення data: u64 у новому рахунку
  • Додає повідомлення до програмних логів транзакції
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
}

Збірка та розгортання програми

  1. Скомпілюйте код програми
Terminal
$
build

Ваш ідентифікатор програми, визначений у declare_id!(), тепер буде оновлено.

  1. Додайте SOL до свого гаманця (Опціонально)

Розгортання програми вимагає наявності SOL в обліковому записі програми в мережі. Якщо необхідно, додайте SOL до свого гаманця перед переходом до кроку 3.

  1. Розгорніть програму в мережі
Terminal
$
deploy

Після розгортання байт-код програми зберігається у виконуваному program account.

Примітка: За бажанням ви можете використовувати кнопки Build та Deploy на боковій панелі зліва, як показано на знімку екрана нижче.

Збірка та розгортанняЗбірка та розгортання

Тестування програми

  1. Відкрийте тестовий файл під назвою tests/anchor.test.ts. Цей файл демонструє, як викликати структуру initialize програми з клієнта.
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. Запустіть тестовий файл
Terminal
$
test
  1. Збережіть хеш транзакції (TxHash), включений у вивід

(У наведеному вище прикладі хеш транзакції — 3TewJtiUz1EgtT88pLJHvKFzqrzDNuHVi8CfD2mWmHEBAaMfC5NAaHdmr19qQYfTiBace6XUmADvR4Qrhe8gH5uc.)

Примітка: За бажанням ви можете використовувати кнопку Test на лівій бічній панелі.

Запуск тестуЗапуск тесту

  1. Запустіть solana confirm -v [TxHash] для перегляду журналів транзакцій
Terminal
$
solana confirm -v 3TewJtiUz1EgtT88pLJHvKFzqrzDNuHVi8CfD2mWmHEBAaMfC5NAaHdmr19qQYfTiBace6XUmADvR4Qrhe8gH5uc
  1. Перегляньте деталі транзакції

Відкрийте SolanaFM або Solana Explorer і знайдіть хеш транзакції.

Solana Explorer: Встановіть мережевий кластер на devnet, щоб він відповідав кластеру Solana Playground.

Закриття програми

Закрийте програму, щоб повернути SOL, виділений для програми в мережі. Для цього запустіть solana program close [ProgramID], використовуючи адресу програми, збережену в макросі declare_id!().

Terminal
$
solana program close 2VvQ11q8xrn5tkPNyeraRsPaATdiPx8weLAD8aD4dn2r

Програми можуть бути лише закриті або оновлені обліковим записом, що має права на оновлення. Ваш гаманець Playground автоматично отримує права на оновлення для кожної програми під час її розгортання. Якщо права на оновлення відкликано, програма стає незмінною.

Вітаємо! Ви створили та розгорнули свою першу програму Solana за допомогою Anchor.

Наступні кроки

Тепер, коли ви розгорнули свою першу програму, ви готові дослідити адреси, похідні від програми та міжпрограмний виклик.

Is this page helpful?

Зміст

Редагувати сторінку