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 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
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}
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.
$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.
$deploy
Voit myös käyttää Build
ja Deploy
-painikkeita vasemman reunan paneelissa.
Rakenna 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.
// 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));});});
Suorittaaksesi testitiedoston ohjelman käyttöönoton jälkeen, suorita
test
terminaalissa.
$test
Etsi tulosteesta vahvistus, että testi läpäistiin onnistuneesti.
Voit myös käyttää Test
-painiketta vasemman reunan paneelissa.
Suorita testi
Voit sitten tarkastella transaktiolokeja suorittamalla solana confirm -v
-komennon ja määrittämällä transaktion tunnisteen (allekirjoituksen) testin
tulosteesta:
$solana confirm -v [TxHash]
Esimerkiksi:
$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ä:
$solana program close [ProgramID]
Esimerkiksi:
$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?