Distribuzione del tuo primo programma Solana
In questa sezione, costruirai, distribuirai e testerai un semplice programma Solana (smart contract) utilizzando il framework Anchor. Alla fine, avrai distribuito il tuo primo programma sulla blockchain Solana.
Lo scopo di questa sezione è familiarizzare con Solana Playground. La guida illustra un esempio più dettagliato nelle sezioni Program Derived Address (PDA) e Cross-Program Invocation (CPI). Per maggiori dettagli, consulta la pagina Programmi su Solana.
Crea un progetto Anchor
Prima, apri https://beta.solpg.io in una nuova scheda del browser.
-
Clicca sul pulsante "Create a new project" nel pannello laterale sinistro.
-
Inserisci un nome per il progetto, seleziona Anchor come framework, quindi clicca sul pulsante "Create".
Nuovo progetto
Vedrai un nuovo progetto creato con il codice del programma nel file lib.rs
.
Questo programma Solana di base crea un nuovo account e memorizza un numero al
suo interno. Il programma contiene un'istruzione (initialize
) che:
- Richiede un parametro
data
come input - Crea un nuovo account
- Salva il valore del parametro
data
nei dati dell'account - Registra un messaggio nei log del programma della transazione
use anchor_lang::prelude::*;declare_id!("Fg6PaFpoGXkYsidMpWTK6W2BeZ7FEfcYkg476zPFsLnS");#[program]mod hello_anchor {use super::*;pub fn initialize(ctx: Context<Initialize>, data: u64) -> Result<()> {let my_account = &mut ctx.accounts.my_account;my_account.data = data;msg!("Your data is: {}", data);Ok(())}}#[derive(Accounts)]pub struct Initialize<'info> {#[account(init, payer = user, space = 8 + 8)]pub my_account: Account<'info, MyAccount>,#[account(mut)]pub user: Signer<'info>,pub system_program: Program<'info, System>,}#[account]pub struct MyAccount {pub data: u64,}
Compilare e distribuire il programma
Per compilare il programma, esegui semplicemente build
nel terminale. Il
comando build
compila il programma. Il bytecode del programma viene quindi
memorizzato in un account di programma eseguibile quando viene distribuito.
$build
Solana Playground aggiorna l'indirizzo in declare_id!()
. Questo indirizzo
rappresenta l'indirizzo on-chain del tuo programma (program ID).
Dopo aver compilato il programma, esegui deploy
nel terminale per
distribuire il programma sulla rete (devnet per impostazione predefinita). La
distribuzione del programma richiede l'allocazione di SOL all'account on-chain
che memorizza il programma.
Prima della distribuzione, assicurati di avere abbastanza SOL. Puoi ottenere SOL
sulla devnet eseguendo solana airdrop 5
nel terminale di Playground
oppure utilizzando il Web Faucet.
$deploy
Puoi anche utilizzare i pulsanti Build
e Deploy
nel pannello laterale
sinistro.
Build and Deploy
Dopo aver distribuito il programma, puoi chiamare le sue istruzioni.
Testare il programma
Il codice iniziale include un file di test situato in tests/anchor.test.ts
.
Questo file dimostra come invocare l'istruzione initialize
sul
programma dal client.
// 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));});});
Per eseguire il file di test dopo aver distribuito il programma, esegui
test
nel terminale.
$test
Cerca nell'output la conferma che il test sia stato superato con successo.
Puoi anche utilizzare il pulsante Test
nel pannello laterale sinistro.
Run Test
Puoi quindi visualizzare i log delle transazioni eseguendo il comando
solana confirm -v
e specificando l'hash della transazione (firma) dall'output
del test:
$solana confirm -v [TxHash]
Per esempio:
$solana confirm -v 3TewJtiUz1EgtT88pLJHvKFzqrzDNuHVi8CfD2mWmHEBAaMfC5NAaHdmr19qQYfTiBace6XUmADvR4Qrhe8gH5uc
Puoi anche visualizzare i dettagli della transazione su SolanaFM o Solana Explorer cercando la firma della transazione (hash).
Ricordati di aggiornare la connessione al cluster (rete) sull'Explorer che utilizzi per farla corrispondere a Solana Playground. Solana Playground utilizza il cluster devnet per impostazione predefinita.
Chiudere il programma
Infine, chiudere il programma consente il recupero completo del SOL allocato al programma on-chain.
Puoi chiudere un programma eseguendo il seguente comando e specificando
l'indirizzo del programma trovato in declare_id!()
:
$solana program close [ProgramID]
Per esempio:
$solana program close 2VvQ11q8xrn5tkPNyeraRsPaATdiPx8weLAD8aD4dn2r
Congratulazioni. Hai appena creato e distribuito il tuo primo programma Solana utilizzando il framework Anchor.
Is this page helpful?