Ensimmäisen Solana-ohjelmasi käyttöönotto

Tässä osiossa rakennat, otat käyttöön ja testaat yksinkertaisen Solana-ohjelman (älysopimuksen) käyttäen Anchor-kehystä. Lopuksi olet ottanut käyttöön ensimmäisen ohjelmasi Solana-lohkoketjussa.

Tämän osion tarkoitus keskittyy tutustuttamaan sinut Solana Playgroundiin. Opas käy läpi yksityiskohtaisemman esimerkin Program Derived Address (PDA) ja Cross Program Invocation (CPI) -osioissa. Lisätietoja löydät Ohjelmat Solanassa -sivulta.

Luo Anchor-projekti

Avaa ensin https://beta.solpg.io uudessa selainikkunassa.

  • Napsauta "Create a new project" -painiketta vasemman reunan paneelissa.

  • Syötä projektin nimi, valitse Anchor kehykseksi ja napsauta sitten "Create"-painiketta.

Uusi projektiUusi projekti

Näet uuden luodun projektin, jossa ohjelman koodi on src/lib.rs -tiedostossa.

Tämä perus-Solana-ohjelma luo uuden tilin ja tallentaa siihen numeron. Ohjelma sisältää yhden ohjeen (initialize), joka:

  • Vaatii data: u64 -parametrin syötteenä
  • Luo uuden tilin
  • Tallentaa data: u64 -parametrin arvon tilin tietoihin
  • Kirjaa viestin tapahtuman ohjelmalokeille
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
}

Ohjelman rakentaminen ja käyttöönotto

Rakentaaksesi ohjelman, suorita yksinkertaisesti build terminaalissa. build -komento kääntää ohjelman. Ohjelman tavukoodi tallennetaan sitten suoritettavaan program account -tiliin, kun se otetaan käyttöön.

Terminal
$
build

Solana Playground päivittää osoitteen tiedostossa declare_id!(). Tämä osoite edustaa ohjelmasi ketjussa olevaa osoitetta (program ID).

Ohjelman rakentamisen jälkeen suorita deploy terminaalissa ohjelman käyttöönottamiseksi verkossa (oletuksena devnet). Ohjelman käyttöönotto vaatii SOL-tokeneita lohkoketjussa olevalle tilille, joka tallentaa ohjelman.

Varmista ennen käyttöönottoa, että sinulla on riittävästi SOL-tokeneita. Voit hankkia devnet SOL-tokeneita joko suorittamalla solana airdrop 5 Playground-terminaalissa tai käyttämällä Web Faucet -palvelua.

Terminal
$
deploy

Voit myös käyttää Build ja Deploy -painikkeita vasemman reunan paneelissa.

Rakenna ja ota käyttöönRakenna ja ota käyttöön

Ohjelman käyttöönoton jälkeen voit kutsua sen ohjeita.

Testaa ohjelma

Aloituskoodi sisältää testitiedoston, joka sijaitsee tests/anchor.test.ts. Tämä tiedosto näyttää, miten kutsutaan initialize -ohjetta ohjelmassa asiakaspuolelta.

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));
});
});

Suorittaaksesi testitiedoston ohjelman käyttöönoton jälkeen, suorita test terminaalissa.

Terminal
$
test

Etsi tulosteesta vahvistus, että testi läpäistiin onnistuneesti.

Voit myös käyttää Test -painiketta vasemman reunan paneelissa.

Suorita testiSuorita testi

Voit sitten tarkastella transaktiolokeja suorittamalla solana confirm -v -komennon ja määrittämällä transaktion tunnisteen (allekirjoituksen) testin tulosteesta:

Terminal
$
solana confirm -v [TxHash]

Esimerkiksi:

Terminal
$
solana confirm -v 3TewJtiUz1EgtT88pLJHvKFzqrzDNuHVi8CfD2mWmHEBAaMfC5NAaHdmr19qQYfTiBace6XUmADvR4Qrhe8gH5uc

Voit myös tarkastella transaktion tietoja SolanaFM tai Solana Explorer -palveluissa hakemalla transaktion allekirjoitusta (tunnistetta).

Muista päivittää klusterin (verkon) yhteys käyttämässäsi Explorerissa vastaamaan Solana Playgroundia. Solana Playground käyttää oletuksena devnet-klusteria.

Sulje ohjelma

Lopuksi, ohjelman sulkeminen mahdollistaa lohkoketjuohjelmalle allokoidun SOL:n täydellisen palautuksen.

Voit sulkea ohjelman suorittamalla seuraavan komennon ja määrittämällä ohjelman osoitteen, joka löytyy declare_id!():stä:

Terminal
$
solana program close [ProgramID]

Esimerkiksi:

Terminal
$
solana program close 2VvQ11q8xrn5tkPNyeraRsPaATdiPx8weLAD8aD4dn2r

Onnittelut. Olet juuri rakentanut ja ottanut käyttöön ensimmäisen Solana-ohjelmasi käyttäen Anchor-kehystä.

Is this page helpful?

Sisällysluettelo

Muokkaa sivua